diff --git a/monitoring/monitoring_ui/Dockerfile b/monitoring/monitoring_ui/Dockerfile
index 0e06fb6a128e24c7e40b7be62e22237c2d05eebe..2ab12a391175ce4529f4853a3728745a47fd5abd 100644
--- a/monitoring/monitoring_ui/Dockerfile
+++ b/monitoring/monitoring_ui/Dockerfile
@@ -3,7 +3,6 @@ WORKDIR /app
 COPY package*.json ./
 RUN npm install
 COPY . .
-RUN ./generate-proto.sh
 RUN npm run build
 
 FROM nginx:stable-alpine as production-stage
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringCommonService_pb.d.ts b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringCommonService_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..32c56d12cc9c5a2d9a0eb1444778de226a63014d
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringCommonService_pb.d.ts
@@ -0,0 +1,18 @@
+import * as jspb from 'google-protobuf'
+
+
+
+export class Empty extends jspb.Message {
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): Empty.AsObject;
+  static toObject(includeInstance: boolean, msg: Empty): Empty.AsObject;
+  static serializeBinaryToWriter(message: Empty, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): Empty;
+  static deserializeBinaryFromReader(message: Empty, reader: jspb.BinaryReader): Empty;
+}
+
+export namespace Empty {
+  export type AsObject = {
+  }
+}
+
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringCommonService_pb.js b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringCommonService_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..39d9b1634ffb5a7fb10c7cd6d40bf33a86ffeb51
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringCommonService_pb.js
@@ -0,0 +1,141 @@
+// source: AsapoMonitoringCommonService.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {missingRequire} reports error on implicit type usages.
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.Empty', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.Empty = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.Empty, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.Empty.displayName = 'proto.Empty';
+}
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.Empty.prototype.toObject = function(opt_includeInstance) {
+  return proto.Empty.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.Empty} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Empty.toObject = function(includeInstance, msg) {
+  var f, obj = {
+
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.Empty}
+ */
+proto.Empty.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.Empty;
+  return proto.Empty.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.Empty} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.Empty}
+ */
+proto.Empty.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.Empty.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.Empty.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.Empty} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.Empty.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+};
+
+
+goog.object.extend(exports, proto);
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_grpc_web_pb.d.ts b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_grpc_web_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9e389a7a050291d16839b477af8be515c7f1ce9c
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_grpc_web_pb.d.ts
@@ -0,0 +1,56 @@
+import * as grpcWeb from 'grpc-web';
+
+import * as AsapoMonitoringCommonService_pb from './AsapoMonitoringCommonService_pb';
+import * as AsapoMonitoringIngestService_pb from './AsapoMonitoringIngestService_pb';
+
+
+export class AsapoMonitoringIngestServiceClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  insertReceiverDataPoints(
+    request: AsapoMonitoringIngestService_pb.ReceiverDataPointContainer,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: AsapoMonitoringCommonService_pb.Empty) => void
+  ): grpcWeb.ClientReadableStream<AsapoMonitoringCommonService_pb.Empty>;
+
+  insertBrokerDataPoints(
+    request: AsapoMonitoringIngestService_pb.BrokerDataPointContainer,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: AsapoMonitoringCommonService_pb.Empty) => void
+  ): grpcWeb.ClientReadableStream<AsapoMonitoringCommonService_pb.Empty>;
+
+  insertFtsDataPoints(
+    request: AsapoMonitoringIngestService_pb.FtsToConsumerDataPointContainer,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: AsapoMonitoringCommonService_pb.Empty) => void
+  ): grpcWeb.ClientReadableStream<AsapoMonitoringCommonService_pb.Empty>;
+
+}
+
+export class AsapoMonitoringIngestServicePromiseClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  insertReceiverDataPoints(
+    request: AsapoMonitoringIngestService_pb.ReceiverDataPointContainer,
+    metadata?: grpcWeb.Metadata
+  ): Promise<AsapoMonitoringCommonService_pb.Empty>;
+
+  insertBrokerDataPoints(
+    request: AsapoMonitoringIngestService_pb.BrokerDataPointContainer,
+    metadata?: grpcWeb.Metadata
+  ): Promise<AsapoMonitoringCommonService_pb.Empty>;
+
+  insertFtsDataPoints(
+    request: AsapoMonitoringIngestService_pb.FtsToConsumerDataPointContainer,
+    metadata?: grpcWeb.Metadata
+  ): Promise<AsapoMonitoringCommonService_pb.Empty>;
+
+}
+
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_grpc_web_pb.js b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_grpc_web_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..815265270ae714a9289678c9fba9f9f44d4fb340
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_grpc_web_pb.js
@@ -0,0 +1,315 @@
+/**
+ * @fileoverview gRPC-Web generated client stub for 
+ * @enhanceable
+ * @public
+ */
+
+// GENERATED CODE -- DO NOT EDIT!
+
+
+/* eslint-disable */
+// @ts-nocheck
+
+
+
+const grpc = {};
+grpc.web = require('grpc-web');
+
+
+var AsapoMonitoringCommonService_pb = require('./AsapoMonitoringCommonService_pb.js')
+const proto = require('./AsapoMonitoringIngestService_pb.js');
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.AsapoMonitoringIngestServiceClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.AsapoMonitoringIngestServicePromiseClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.ReceiverDataPointContainer,
+ *   !proto.Empty>}
+ */
+const methodDescriptor_AsapoMonitoringIngestService_InsertReceiverDataPoints = new grpc.web.MethodDescriptor(
+  '/AsapoMonitoringIngestService/InsertReceiverDataPoints',
+  grpc.web.MethodType.UNARY,
+  proto.ReceiverDataPointContainer,
+  AsapoMonitoringCommonService_pb.Empty,
+  /**
+   * @param {!proto.ReceiverDataPointContainer} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  AsapoMonitoringCommonService_pb.Empty.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.ReceiverDataPointContainer,
+ *   !proto.Empty>}
+ */
+const methodInfo_AsapoMonitoringIngestService_InsertReceiverDataPoints = new grpc.web.AbstractClientBase.MethodInfo(
+  AsapoMonitoringCommonService_pb.Empty,
+  /**
+   * @param {!proto.ReceiverDataPointContainer} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  AsapoMonitoringCommonService_pb.Empty.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.ReceiverDataPointContainer} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.Empty)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.Empty>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.AsapoMonitoringIngestServiceClient.prototype.insertReceiverDataPoints =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/AsapoMonitoringIngestService/InsertReceiverDataPoints',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringIngestService_InsertReceiverDataPoints,
+      callback);
+};
+
+
+/**
+ * @param {!proto.ReceiverDataPointContainer} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.Empty>}
+ *     Promise that resolves to the response
+ */
+proto.AsapoMonitoringIngestServicePromiseClient.prototype.insertReceiverDataPoints =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/AsapoMonitoringIngestService/InsertReceiverDataPoints',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringIngestService_InsertReceiverDataPoints);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.BrokerDataPointContainer,
+ *   !proto.Empty>}
+ */
+const methodDescriptor_AsapoMonitoringIngestService_InsertBrokerDataPoints = new grpc.web.MethodDescriptor(
+  '/AsapoMonitoringIngestService/InsertBrokerDataPoints',
+  grpc.web.MethodType.UNARY,
+  proto.BrokerDataPointContainer,
+  AsapoMonitoringCommonService_pb.Empty,
+  /**
+   * @param {!proto.BrokerDataPointContainer} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  AsapoMonitoringCommonService_pb.Empty.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.BrokerDataPointContainer,
+ *   !proto.Empty>}
+ */
+const methodInfo_AsapoMonitoringIngestService_InsertBrokerDataPoints = new grpc.web.AbstractClientBase.MethodInfo(
+  AsapoMonitoringCommonService_pb.Empty,
+  /**
+   * @param {!proto.BrokerDataPointContainer} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  AsapoMonitoringCommonService_pb.Empty.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.BrokerDataPointContainer} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.Empty)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.Empty>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.AsapoMonitoringIngestServiceClient.prototype.insertBrokerDataPoints =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/AsapoMonitoringIngestService/InsertBrokerDataPoints',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringIngestService_InsertBrokerDataPoints,
+      callback);
+};
+
+
+/**
+ * @param {!proto.BrokerDataPointContainer} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.Empty>}
+ *     Promise that resolves to the response
+ */
+proto.AsapoMonitoringIngestServicePromiseClient.prototype.insertBrokerDataPoints =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/AsapoMonitoringIngestService/InsertBrokerDataPoints',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringIngestService_InsertBrokerDataPoints);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.FtsToConsumerDataPointContainer,
+ *   !proto.Empty>}
+ */
+const methodDescriptor_AsapoMonitoringIngestService_InsertFtsDataPoints = new grpc.web.MethodDescriptor(
+  '/AsapoMonitoringIngestService/InsertFtsDataPoints',
+  grpc.web.MethodType.UNARY,
+  proto.FtsToConsumerDataPointContainer,
+  AsapoMonitoringCommonService_pb.Empty,
+  /**
+   * @param {!proto.FtsToConsumerDataPointContainer} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  AsapoMonitoringCommonService_pb.Empty.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.FtsToConsumerDataPointContainer,
+ *   !proto.Empty>}
+ */
+const methodInfo_AsapoMonitoringIngestService_InsertFtsDataPoints = new grpc.web.AbstractClientBase.MethodInfo(
+  AsapoMonitoringCommonService_pb.Empty,
+  /**
+   * @param {!proto.FtsToConsumerDataPointContainer} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  AsapoMonitoringCommonService_pb.Empty.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.FtsToConsumerDataPointContainer} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.Empty)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.Empty>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.AsapoMonitoringIngestServiceClient.prototype.insertFtsDataPoints =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/AsapoMonitoringIngestService/InsertFtsDataPoints',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringIngestService_InsertFtsDataPoints,
+      callback);
+};
+
+
+/**
+ * @param {!proto.FtsToConsumerDataPointContainer} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.Empty>}
+ *     Promise that resolves to the response
+ */
+proto.AsapoMonitoringIngestServicePromiseClient.prototype.insertFtsDataPoints =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/AsapoMonitoringIngestService/InsertFtsDataPoints',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringIngestService_InsertFtsDataPoints);
+};
+
+
+module.exports = proto;
+
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_pb.d.ts b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f3c83c596f6d11f6f170fe7c40177bb5d0581a07
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_pb.d.ts
@@ -0,0 +1,343 @@
+import * as jspb from 'google-protobuf'
+
+import * as AsapoMonitoringCommonService_pb from './AsapoMonitoringCommonService_pb';
+
+
+export class ProducerToReceiverTransferDataPoint extends jspb.Message {
+  getPipelinestepid(): string;
+  setPipelinestepid(value: string): ProducerToReceiverTransferDataPoint;
+
+  getProducerinstanceid(): string;
+  setProducerinstanceid(value: string): ProducerToReceiverTransferDataPoint;
+
+  getBeamtime(): string;
+  setBeamtime(value: string): ProducerToReceiverTransferDataPoint;
+
+  getSource(): string;
+  setSource(value: string): ProducerToReceiverTransferDataPoint;
+
+  getStream(): string;
+  setStream(value: string): ProducerToReceiverTransferDataPoint;
+
+  getFilecount(): number;
+  setFilecount(value: number): ProducerToReceiverTransferDataPoint;
+
+  getTotalfilesize(): number;
+  setTotalfilesize(value: number): ProducerToReceiverTransferDataPoint;
+
+  getTotaltransferreceivetimeinmicroseconds(): number;
+  setTotaltransferreceivetimeinmicroseconds(value: number): ProducerToReceiverTransferDataPoint;
+
+  getTotalwriteiotimeinmicroseconds(): number;
+  setTotalwriteiotimeinmicroseconds(value: number): ProducerToReceiverTransferDataPoint;
+
+  getTotaldbtimeinmicroseconds(): number;
+  setTotaldbtimeinmicroseconds(value: number): ProducerToReceiverTransferDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): ProducerToReceiverTransferDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: ProducerToReceiverTransferDataPoint): ProducerToReceiverTransferDataPoint.AsObject;
+  static serializeBinaryToWriter(message: ProducerToReceiverTransferDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): ProducerToReceiverTransferDataPoint;
+  static deserializeBinaryFromReader(message: ProducerToReceiverTransferDataPoint, reader: jspb.BinaryReader): ProducerToReceiverTransferDataPoint;
+}
+
+export namespace ProducerToReceiverTransferDataPoint {
+  export type AsObject = {
+    pipelinestepid: string,
+    producerinstanceid: string,
+    beamtime: string,
+    source: string,
+    stream: string,
+    filecount: number,
+    totalfilesize: number,
+    totaltransferreceivetimeinmicroseconds: number,
+    totalwriteiotimeinmicroseconds: number,
+    totaldbtimeinmicroseconds: number,
+  }
+}
+
+export class BrokerRequestDataPoint extends jspb.Message {
+  getPipelinestepid(): string;
+  setPipelinestepid(value: string): BrokerRequestDataPoint;
+
+  getConsumerinstanceid(): string;
+  setConsumerinstanceid(value: string): BrokerRequestDataPoint;
+
+  getCommand(): string;
+  setCommand(value: string): BrokerRequestDataPoint;
+
+  getBeamtime(): string;
+  setBeamtime(value: string): BrokerRequestDataPoint;
+
+  getSource(): string;
+  setSource(value: string): BrokerRequestDataPoint;
+
+  getStream(): string;
+  setStream(value: string): BrokerRequestDataPoint;
+
+  getGroupid(): string;
+  setGroupid(value: string): BrokerRequestDataPoint;
+
+  getFilecount(): number;
+  setFilecount(value: number): BrokerRequestDataPoint;
+
+  getTotalfilesize(): number;
+  setTotalfilesize(value: number): BrokerRequestDataPoint;
+
+  getDelayms(): number;
+  setDelayms(value: number): BrokerRequestDataPoint;
+
+  getIdx(): number;
+  setIdx(value: number): BrokerRequestDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): BrokerRequestDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: BrokerRequestDataPoint): BrokerRequestDataPoint.AsObject;
+  static serializeBinaryToWriter(message: BrokerRequestDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): BrokerRequestDataPoint;
+  static deserializeBinaryFromReader(message: BrokerRequestDataPoint, reader: jspb.BinaryReader): BrokerRequestDataPoint;
+}
+
+export namespace BrokerRequestDataPoint {
+  export type AsObject = {
+    pipelinestepid: string,
+    consumerinstanceid: string,
+    command: string,
+    beamtime: string,
+    source: string,
+    stream: string,
+    groupid: string,
+    filecount: number,
+    totalfilesize: number,
+    delayms: number,
+    idx: number,
+  }
+}
+
+export class RdsMemoryDataPoint extends jspb.Message {
+  getBeamtime(): string;
+  setBeamtime(value: string): RdsMemoryDataPoint;
+
+  getSource(): string;
+  setSource(value: string): RdsMemoryDataPoint;
+
+  getStream(): string;
+  setStream(value: string): RdsMemoryDataPoint;
+
+  getUsedbytes(): number;
+  setUsedbytes(value: number): RdsMemoryDataPoint;
+
+  getTotalbytes(): number;
+  setTotalbytes(value: number): RdsMemoryDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): RdsMemoryDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: RdsMemoryDataPoint): RdsMemoryDataPoint.AsObject;
+  static serializeBinaryToWriter(message: RdsMemoryDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): RdsMemoryDataPoint;
+  static deserializeBinaryFromReader(message: RdsMemoryDataPoint, reader: jspb.BinaryReader): RdsMemoryDataPoint;
+}
+
+export namespace RdsMemoryDataPoint {
+  export type AsObject = {
+    beamtime: string,
+    source: string,
+    stream: string,
+    usedbytes: number,
+    totalbytes: number,
+  }
+}
+
+export class RdsToConsumerDataPoint extends jspb.Message {
+  getPipelinestepid(): string;
+  setPipelinestepid(value: string): RdsToConsumerDataPoint;
+
+  getConsumerinstanceid(): string;
+  setConsumerinstanceid(value: string): RdsToConsumerDataPoint;
+
+  getBeamtime(): string;
+  setBeamtime(value: string): RdsToConsumerDataPoint;
+
+  getSource(): string;
+  setSource(value: string): RdsToConsumerDataPoint;
+
+  getStream(): string;
+  setStream(value: string): RdsToConsumerDataPoint;
+
+  getHits(): number;
+  setHits(value: number): RdsToConsumerDataPoint;
+
+  getMisses(): number;
+  setMisses(value: number): RdsToConsumerDataPoint;
+
+  getTotalfilesize(): number;
+  setTotalfilesize(value: number): RdsToConsumerDataPoint;
+
+  getTotaltransfersendtimeinmicroseconds(): number;
+  setTotaltransfersendtimeinmicroseconds(value: number): RdsToConsumerDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): RdsToConsumerDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: RdsToConsumerDataPoint): RdsToConsumerDataPoint.AsObject;
+  static serializeBinaryToWriter(message: RdsToConsumerDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): RdsToConsumerDataPoint;
+  static deserializeBinaryFromReader(message: RdsToConsumerDataPoint, reader: jspb.BinaryReader): RdsToConsumerDataPoint;
+}
+
+export namespace RdsToConsumerDataPoint {
+  export type AsObject = {
+    pipelinestepid: string,
+    consumerinstanceid: string,
+    beamtime: string,
+    source: string,
+    stream: string,
+    hits: number,
+    misses: number,
+    totalfilesize: number,
+    totaltransfersendtimeinmicroseconds: number,
+  }
+}
+
+export class FdsToConsumerDataPoint extends jspb.Message {
+  getPipelinestepid(): string;
+  setPipelinestepid(value: string): FdsToConsumerDataPoint;
+
+  getConsumerinstanceid(): string;
+  setConsumerinstanceid(value: string): FdsToConsumerDataPoint;
+
+  getBeamtime(): string;
+  setBeamtime(value: string): FdsToConsumerDataPoint;
+
+  getSource(): string;
+  setSource(value: string): FdsToConsumerDataPoint;
+
+  getStream(): string;
+  setStream(value: string): FdsToConsumerDataPoint;
+
+  getFilecount(): number;
+  setFilecount(value: number): FdsToConsumerDataPoint;
+
+  getTotalfilesize(): number;
+  setTotalfilesize(value: number): FdsToConsumerDataPoint;
+
+  getTotaltransfersendtimeinmicroseconds(): number;
+  setTotaltransfersendtimeinmicroseconds(value: number): FdsToConsumerDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): FdsToConsumerDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: FdsToConsumerDataPoint): FdsToConsumerDataPoint.AsObject;
+  static serializeBinaryToWriter(message: FdsToConsumerDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): FdsToConsumerDataPoint;
+  static deserializeBinaryFromReader(message: FdsToConsumerDataPoint, reader: jspb.BinaryReader): FdsToConsumerDataPoint;
+}
+
+export namespace FdsToConsumerDataPoint {
+  export type AsObject = {
+    pipelinestepid: string,
+    consumerinstanceid: string,
+    beamtime: string,
+    source: string,
+    stream: string,
+    filecount: number,
+    totalfilesize: number,
+    totaltransfersendtimeinmicroseconds: number,
+  }
+}
+
+export class ReceiverDataPointContainer extends jspb.Message {
+  getReceivername(): string;
+  setReceivername(value: string): ReceiverDataPointContainer;
+
+  getTimestampms(): number;
+  setTimestampms(value: number): ReceiverDataPointContainer;
+
+  getGroupedp2rtransfersList(): Array<ProducerToReceiverTransferDataPoint>;
+  setGroupedp2rtransfersList(value: Array<ProducerToReceiverTransferDataPoint>): ReceiverDataPointContainer;
+  clearGroupedp2rtransfersList(): ReceiverDataPointContainer;
+  addGroupedp2rtransfers(value?: ProducerToReceiverTransferDataPoint, index?: number): ProducerToReceiverTransferDataPoint;
+
+  getGroupedrds2ctransfersList(): Array<RdsToConsumerDataPoint>;
+  setGroupedrds2ctransfersList(value: Array<RdsToConsumerDataPoint>): ReceiverDataPointContainer;
+  clearGroupedrds2ctransfersList(): ReceiverDataPointContainer;
+  addGroupedrds2ctransfers(value?: RdsToConsumerDataPoint, index?: number): RdsToConsumerDataPoint;
+
+  getGroupedmemorystatsList(): Array<RdsMemoryDataPoint>;
+  setGroupedmemorystatsList(value: Array<RdsMemoryDataPoint>): ReceiverDataPointContainer;
+  clearGroupedmemorystatsList(): ReceiverDataPointContainer;
+  addGroupedmemorystats(value?: RdsMemoryDataPoint, index?: number): RdsMemoryDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): ReceiverDataPointContainer.AsObject;
+  static toObject(includeInstance: boolean, msg: ReceiverDataPointContainer): ReceiverDataPointContainer.AsObject;
+  static serializeBinaryToWriter(message: ReceiverDataPointContainer, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): ReceiverDataPointContainer;
+  static deserializeBinaryFromReader(message: ReceiverDataPointContainer, reader: jspb.BinaryReader): ReceiverDataPointContainer;
+}
+
+export namespace ReceiverDataPointContainer {
+  export type AsObject = {
+    receivername: string,
+    timestampms: number,
+    groupedp2rtransfersList: Array<ProducerToReceiverTransferDataPoint.AsObject>,
+    groupedrds2ctransfersList: Array<RdsToConsumerDataPoint.AsObject>,
+    groupedmemorystatsList: Array<RdsMemoryDataPoint.AsObject>,
+  }
+}
+
+export class BrokerDataPointContainer extends jspb.Message {
+  getBrokername(): string;
+  setBrokername(value: string): BrokerDataPointContainer;
+
+  getTimestampms(): number;
+  setTimestampms(value: number): BrokerDataPointContainer;
+
+  getGroupedbrokerrequestsList(): Array<BrokerRequestDataPoint>;
+  setGroupedbrokerrequestsList(value: Array<BrokerRequestDataPoint>): BrokerDataPointContainer;
+  clearGroupedbrokerrequestsList(): BrokerDataPointContainer;
+  addGroupedbrokerrequests(value?: BrokerRequestDataPoint, index?: number): BrokerRequestDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): BrokerDataPointContainer.AsObject;
+  static toObject(includeInstance: boolean, msg: BrokerDataPointContainer): BrokerDataPointContainer.AsObject;
+  static serializeBinaryToWriter(message: BrokerDataPointContainer, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): BrokerDataPointContainer;
+  static deserializeBinaryFromReader(message: BrokerDataPointContainer, reader: jspb.BinaryReader): BrokerDataPointContainer;
+}
+
+export namespace BrokerDataPointContainer {
+  export type AsObject = {
+    brokername: string,
+    timestampms: number,
+    groupedbrokerrequestsList: Array<BrokerRequestDataPoint.AsObject>,
+  }
+}
+
+export class FtsToConsumerDataPointContainer extends jspb.Message {
+  getFtsname(): string;
+  setFtsname(value: string): FtsToConsumerDataPointContainer;
+
+  getTimestampms(): number;
+  setTimestampms(value: number): FtsToConsumerDataPointContainer;
+
+  getGroupedfdstransfersList(): Array<FdsToConsumerDataPoint>;
+  setGroupedfdstransfersList(value: Array<FdsToConsumerDataPoint>): FtsToConsumerDataPointContainer;
+  clearGroupedfdstransfersList(): FtsToConsumerDataPointContainer;
+  addGroupedfdstransfers(value?: FdsToConsumerDataPoint, index?: number): FdsToConsumerDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): FtsToConsumerDataPointContainer.AsObject;
+  static toObject(includeInstance: boolean, msg: FtsToConsumerDataPointContainer): FtsToConsumerDataPointContainer.AsObject;
+  static serializeBinaryToWriter(message: FtsToConsumerDataPointContainer, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): FtsToConsumerDataPointContainer;
+  static deserializeBinaryFromReader(message: FtsToConsumerDataPointContainer, reader: jspb.BinaryReader): FtsToConsumerDataPointContainer;
+}
+
+export namespace FtsToConsumerDataPointContainer {
+  export type AsObject = {
+    ftsname: string,
+    timestampms: number,
+    groupedfdstransfersList: Array<FdsToConsumerDataPoint.AsObject>,
+  }
+}
+
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_pb.js b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..317a8aec7a93e2dbd01c6e76ebbc55daf27247f6
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringIngestService_pb.js
@@ -0,0 +1,2752 @@
+// source: AsapoMonitoringIngestService.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {missingRequire} reports error on implicit type usages.
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var AsapoMonitoringCommonService_pb = require('./AsapoMonitoringCommonService_pb.js');
+goog.object.extend(proto, AsapoMonitoringCommonService_pb);
+goog.exportSymbol('proto.BrokerDataPointContainer', null, global);
+goog.exportSymbol('proto.BrokerRequestDataPoint', null, global);
+goog.exportSymbol('proto.FdsToConsumerDataPoint', null, global);
+goog.exportSymbol('proto.FtsToConsumerDataPointContainer', null, global);
+goog.exportSymbol('proto.ProducerToReceiverTransferDataPoint', null, global);
+goog.exportSymbol('proto.RdsMemoryDataPoint', null, global);
+goog.exportSymbol('proto.RdsToConsumerDataPoint', null, global);
+goog.exportSymbol('proto.ReceiverDataPointContainer', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.ProducerToReceiverTransferDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.ProducerToReceiverTransferDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.ProducerToReceiverTransferDataPoint.displayName = 'proto.ProducerToReceiverTransferDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.BrokerRequestDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.BrokerRequestDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.BrokerRequestDataPoint.displayName = 'proto.BrokerRequestDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.RdsMemoryDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.RdsMemoryDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.RdsMemoryDataPoint.displayName = 'proto.RdsMemoryDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.RdsToConsumerDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.RdsToConsumerDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.RdsToConsumerDataPoint.displayName = 'proto.RdsToConsumerDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.FdsToConsumerDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.FdsToConsumerDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.FdsToConsumerDataPoint.displayName = 'proto.FdsToConsumerDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.ReceiverDataPointContainer = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.ReceiverDataPointContainer.repeatedFields_, null);
+};
+goog.inherits(proto.ReceiverDataPointContainer, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.ReceiverDataPointContainer.displayName = 'proto.ReceiverDataPointContainer';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.BrokerDataPointContainer = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.BrokerDataPointContainer.repeatedFields_, null);
+};
+goog.inherits(proto.BrokerDataPointContainer, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.BrokerDataPointContainer.displayName = 'proto.BrokerDataPointContainer';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.FtsToConsumerDataPointContainer = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.FtsToConsumerDataPointContainer.repeatedFields_, null);
+};
+goog.inherits(proto.FtsToConsumerDataPointContainer, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.FtsToConsumerDataPointContainer.displayName = 'proto.FtsToConsumerDataPointContainer';
+}
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.ProducerToReceiverTransferDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.ProducerToReceiverTransferDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ProducerToReceiverTransferDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    pipelinestepid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    producerinstanceid: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    beamtime: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    source: jspb.Message.getFieldWithDefault(msg, 4, ""),
+    stream: jspb.Message.getFieldWithDefault(msg, 5, ""),
+    filecount: jspb.Message.getFieldWithDefault(msg, 6, 0),
+    totalfilesize: jspb.Message.getFieldWithDefault(msg, 7, 0),
+    totaltransferreceivetimeinmicroseconds: jspb.Message.getFieldWithDefault(msg, 8, 0),
+    totalwriteiotimeinmicroseconds: jspb.Message.getFieldWithDefault(msg, 9, 0),
+    totaldbtimeinmicroseconds: jspb.Message.getFieldWithDefault(msg, 10, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.ProducerToReceiverTransferDataPoint}
+ */
+proto.ProducerToReceiverTransferDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.ProducerToReceiverTransferDataPoint;
+  return proto.ProducerToReceiverTransferDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.ProducerToReceiverTransferDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.ProducerToReceiverTransferDataPoint}
+ */
+proto.ProducerToReceiverTransferDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPipelinestepid(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setProducerinstanceid(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBeamtime(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setSource(value);
+      break;
+    case 5:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setStream(value);
+      break;
+    case 6:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setFilecount(value);
+      break;
+    case 7:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalfilesize(value);
+      break;
+    case 8:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotaltransferreceivetimeinmicroseconds(value);
+      break;
+    case 9:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalwriteiotimeinmicroseconds(value);
+      break;
+    case 10:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotaldbtimeinmicroseconds(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.ProducerToReceiverTransferDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.ProducerToReceiverTransferDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ProducerToReceiverTransferDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPipelinestepid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getProducerinstanceid();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getBeamtime();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getSource();
+  if (f.length > 0) {
+    writer.writeString(
+      4,
+      f
+    );
+  }
+  f = message.getStream();
+  if (f.length > 0) {
+    writer.writeString(
+      5,
+      f
+    );
+  }
+  f = message.getFilecount();
+  if (f !== 0) {
+    writer.writeUint64(
+      6,
+      f
+    );
+  }
+  f = message.getTotalfilesize();
+  if (f !== 0) {
+    writer.writeUint64(
+      7,
+      f
+    );
+  }
+  f = message.getTotaltransferreceivetimeinmicroseconds();
+  if (f !== 0) {
+    writer.writeUint64(
+      8,
+      f
+    );
+  }
+  f = message.getTotalwriteiotimeinmicroseconds();
+  if (f !== 0) {
+    writer.writeUint64(
+      9,
+      f
+    );
+  }
+  f = message.getTotaldbtimeinmicroseconds();
+  if (f !== 0) {
+    writer.writeUint64(
+      10,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string pipelineStepId = 1;
+ * @return {string}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getPipelinestepid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setPipelinestepid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string producerInstanceId = 2;
+ * @return {string}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getProducerinstanceid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setProducerinstanceid = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string beamtime = 3;
+ * @return {string}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getBeamtime = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setBeamtime = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional string source = 4;
+ * @return {string}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getSource = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setSource = function(value) {
+  return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+/**
+ * optional string stream = 5;
+ * @return {string}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getStream = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setStream = function(value) {
+  return jspb.Message.setProto3StringField(this, 5, value);
+};
+
+
+/**
+ * optional uint64 fileCount = 6;
+ * @return {number}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getFilecount = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setFilecount = function(value) {
+  return jspb.Message.setProto3IntField(this, 6, value);
+};
+
+
+/**
+ * optional uint64 totalFileSize = 7;
+ * @return {number}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getTotalfilesize = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setTotalfilesize = function(value) {
+  return jspb.Message.setProto3IntField(this, 7, value);
+};
+
+
+/**
+ * optional uint64 totalTransferReceiveTimeInMicroseconds = 8;
+ * @return {number}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getTotaltransferreceivetimeinmicroseconds = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setTotaltransferreceivetimeinmicroseconds = function(value) {
+  return jspb.Message.setProto3IntField(this, 8, value);
+};
+
+
+/**
+ * optional uint64 totalWriteIoTimeInMicroseconds = 9;
+ * @return {number}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getTotalwriteiotimeinmicroseconds = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setTotalwriteiotimeinmicroseconds = function(value) {
+  return jspb.Message.setProto3IntField(this, 9, value);
+};
+
+
+/**
+ * optional uint64 totalDbTimeInMicroseconds = 10;
+ * @return {number}
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.getTotaldbtimeinmicroseconds = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ProducerToReceiverTransferDataPoint} returns this
+ */
+proto.ProducerToReceiverTransferDataPoint.prototype.setTotaldbtimeinmicroseconds = function(value) {
+  return jspb.Message.setProto3IntField(this, 10, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.BrokerRequestDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.BrokerRequestDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.BrokerRequestDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.BrokerRequestDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    pipelinestepid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    consumerinstanceid: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    command: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    beamtime: jspb.Message.getFieldWithDefault(msg, 4, ""),
+    source: jspb.Message.getFieldWithDefault(msg, 5, ""),
+    stream: jspb.Message.getFieldWithDefault(msg, 6, ""),
+    groupid: jspb.Message.getFieldWithDefault(msg, 7, ""),
+    filecount: jspb.Message.getFieldWithDefault(msg, 8, 0),
+    totalfilesize: jspb.Message.getFieldWithDefault(msg, 9, 0),
+    delayms: jspb.Message.getFieldWithDefault(msg, 10, 0),
+    idx: jspb.Message.getFieldWithDefault(msg, 11, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.BrokerRequestDataPoint}
+ */
+proto.BrokerRequestDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.BrokerRequestDataPoint;
+  return proto.BrokerRequestDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.BrokerRequestDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.BrokerRequestDataPoint}
+ */
+proto.BrokerRequestDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPipelinestepid(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setConsumerinstanceid(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setCommand(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBeamtime(value);
+      break;
+    case 5:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setSource(value);
+      break;
+    case 6:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setStream(value);
+      break;
+    case 7:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setGroupid(value);
+      break;
+    case 8:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setFilecount(value);
+      break;
+    case 9:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalfilesize(value);
+      break;
+    case 10:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setDelayms(value);
+      break;
+    case 11:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setIdx(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.BrokerRequestDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.BrokerRequestDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.BrokerRequestDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.BrokerRequestDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPipelinestepid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getConsumerinstanceid();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getCommand();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getBeamtime();
+  if (f.length > 0) {
+    writer.writeString(
+      4,
+      f
+    );
+  }
+  f = message.getSource();
+  if (f.length > 0) {
+    writer.writeString(
+      5,
+      f
+    );
+  }
+  f = message.getStream();
+  if (f.length > 0) {
+    writer.writeString(
+      6,
+      f
+    );
+  }
+  f = message.getGroupid();
+  if (f.length > 0) {
+    writer.writeString(
+      7,
+      f
+    );
+  }
+  f = message.getFilecount();
+  if (f !== 0) {
+    writer.writeUint64(
+      8,
+      f
+    );
+  }
+  f = message.getTotalfilesize();
+  if (f !== 0) {
+    writer.writeUint64(
+      9,
+      f
+    );
+  }
+  f = message.getDelayms();
+  if (f !== 0) {
+    writer.writeUint64(
+      10,
+      f
+    );
+  }
+  f = message.getIdx();
+  if (f !== 0) {
+    writer.writeUint64(
+      11,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string pipelineStepId = 1;
+ * @return {string}
+ */
+proto.BrokerRequestDataPoint.prototype.getPipelinestepid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setPipelinestepid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string consumerInstanceId = 2;
+ * @return {string}
+ */
+proto.BrokerRequestDataPoint.prototype.getConsumerinstanceid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setConsumerinstanceid = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string command = 3;
+ * @return {string}
+ */
+proto.BrokerRequestDataPoint.prototype.getCommand = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setCommand = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional string beamtime = 4;
+ * @return {string}
+ */
+proto.BrokerRequestDataPoint.prototype.getBeamtime = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setBeamtime = function(value) {
+  return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+/**
+ * optional string source = 5;
+ * @return {string}
+ */
+proto.BrokerRequestDataPoint.prototype.getSource = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setSource = function(value) {
+  return jspb.Message.setProto3StringField(this, 5, value);
+};
+
+
+/**
+ * optional string stream = 6;
+ * @return {string}
+ */
+proto.BrokerRequestDataPoint.prototype.getStream = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setStream = function(value) {
+  return jspb.Message.setProto3StringField(this, 6, value);
+};
+
+
+/**
+ * optional string groupId = 7;
+ * @return {string}
+ */
+proto.BrokerRequestDataPoint.prototype.getGroupid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setGroupid = function(value) {
+  return jspb.Message.setProto3StringField(this, 7, value);
+};
+
+
+/**
+ * optional uint64 fileCount = 8;
+ * @return {number}
+ */
+proto.BrokerRequestDataPoint.prototype.getFilecount = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setFilecount = function(value) {
+  return jspb.Message.setProto3IntField(this, 8, value);
+};
+
+
+/**
+ * optional uint64 totalFileSize = 9;
+ * @return {number}
+ */
+proto.BrokerRequestDataPoint.prototype.getTotalfilesize = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setTotalfilesize = function(value) {
+  return jspb.Message.setProto3IntField(this, 9, value);
+};
+
+
+/**
+ * optional uint64 delayMs = 10;
+ * @return {number}
+ */
+proto.BrokerRequestDataPoint.prototype.getDelayms = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setDelayms = function(value) {
+  return jspb.Message.setProto3IntField(this, 10, value);
+};
+
+
+/**
+ * optional uint64 idx = 11;
+ * @return {number}
+ */
+proto.BrokerRequestDataPoint.prototype.getIdx = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BrokerRequestDataPoint} returns this
+ */
+proto.BrokerRequestDataPoint.prototype.setIdx = function(value) {
+  return jspb.Message.setProto3IntField(this, 11, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.RdsMemoryDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.RdsMemoryDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.RdsMemoryDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.RdsMemoryDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    beamtime: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    source: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    stream: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    usedbytes: jspb.Message.getFieldWithDefault(msg, 4, 0),
+    totalbytes: jspb.Message.getFieldWithDefault(msg, 5, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.RdsMemoryDataPoint}
+ */
+proto.RdsMemoryDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.RdsMemoryDataPoint;
+  return proto.RdsMemoryDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.RdsMemoryDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.RdsMemoryDataPoint}
+ */
+proto.RdsMemoryDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBeamtime(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setSource(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setStream(value);
+      break;
+    case 4:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setUsedbytes(value);
+      break;
+    case 5:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalbytes(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.RdsMemoryDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.RdsMemoryDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.RdsMemoryDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.RdsMemoryDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getBeamtime();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getSource();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getStream();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getUsedbytes();
+  if (f !== 0) {
+    writer.writeUint64(
+      4,
+      f
+    );
+  }
+  f = message.getTotalbytes();
+  if (f !== 0) {
+    writer.writeUint64(
+      5,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string beamtime = 1;
+ * @return {string}
+ */
+proto.RdsMemoryDataPoint.prototype.getBeamtime = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.RdsMemoryDataPoint} returns this
+ */
+proto.RdsMemoryDataPoint.prototype.setBeamtime = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string source = 2;
+ * @return {string}
+ */
+proto.RdsMemoryDataPoint.prototype.getSource = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.RdsMemoryDataPoint} returns this
+ */
+proto.RdsMemoryDataPoint.prototype.setSource = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string stream = 3;
+ * @return {string}
+ */
+proto.RdsMemoryDataPoint.prototype.getStream = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.RdsMemoryDataPoint} returns this
+ */
+proto.RdsMemoryDataPoint.prototype.setStream = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional uint64 usedBytes = 4;
+ * @return {number}
+ */
+proto.RdsMemoryDataPoint.prototype.getUsedbytes = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.RdsMemoryDataPoint} returns this
+ */
+proto.RdsMemoryDataPoint.prototype.setUsedbytes = function(value) {
+  return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+/**
+ * optional uint64 totalBytes = 5;
+ * @return {number}
+ */
+proto.RdsMemoryDataPoint.prototype.getTotalbytes = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.RdsMemoryDataPoint} returns this
+ */
+proto.RdsMemoryDataPoint.prototype.setTotalbytes = function(value) {
+  return jspb.Message.setProto3IntField(this, 5, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.RdsToConsumerDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.RdsToConsumerDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.RdsToConsumerDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.RdsToConsumerDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    pipelinestepid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    consumerinstanceid: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    beamtime: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    source: jspb.Message.getFieldWithDefault(msg, 4, ""),
+    stream: jspb.Message.getFieldWithDefault(msg, 5, ""),
+    hits: jspb.Message.getFieldWithDefault(msg, 6, 0),
+    misses: jspb.Message.getFieldWithDefault(msg, 7, 0),
+    totalfilesize: jspb.Message.getFieldWithDefault(msg, 8, 0),
+    totaltransfersendtimeinmicroseconds: jspb.Message.getFieldWithDefault(msg, 9, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.RdsToConsumerDataPoint}
+ */
+proto.RdsToConsumerDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.RdsToConsumerDataPoint;
+  return proto.RdsToConsumerDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.RdsToConsumerDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.RdsToConsumerDataPoint}
+ */
+proto.RdsToConsumerDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPipelinestepid(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setConsumerinstanceid(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBeamtime(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setSource(value);
+      break;
+    case 5:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setStream(value);
+      break;
+    case 6:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setHits(value);
+      break;
+    case 7:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setMisses(value);
+      break;
+    case 8:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalfilesize(value);
+      break;
+    case 9:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotaltransfersendtimeinmicroseconds(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.RdsToConsumerDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.RdsToConsumerDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.RdsToConsumerDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.RdsToConsumerDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPipelinestepid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getConsumerinstanceid();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getBeamtime();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getSource();
+  if (f.length > 0) {
+    writer.writeString(
+      4,
+      f
+    );
+  }
+  f = message.getStream();
+  if (f.length > 0) {
+    writer.writeString(
+      5,
+      f
+    );
+  }
+  f = message.getHits();
+  if (f !== 0) {
+    writer.writeUint64(
+      6,
+      f
+    );
+  }
+  f = message.getMisses();
+  if (f !== 0) {
+    writer.writeUint64(
+      7,
+      f
+    );
+  }
+  f = message.getTotalfilesize();
+  if (f !== 0) {
+    writer.writeUint64(
+      8,
+      f
+    );
+  }
+  f = message.getTotaltransfersendtimeinmicroseconds();
+  if (f !== 0) {
+    writer.writeUint64(
+      9,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string pipelineStepId = 1;
+ * @return {string}
+ */
+proto.RdsToConsumerDataPoint.prototype.getPipelinestepid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setPipelinestepid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string consumerInstanceId = 2;
+ * @return {string}
+ */
+proto.RdsToConsumerDataPoint.prototype.getConsumerinstanceid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setConsumerinstanceid = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string beamtime = 3;
+ * @return {string}
+ */
+proto.RdsToConsumerDataPoint.prototype.getBeamtime = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setBeamtime = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional string source = 4;
+ * @return {string}
+ */
+proto.RdsToConsumerDataPoint.prototype.getSource = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setSource = function(value) {
+  return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+/**
+ * optional string stream = 5;
+ * @return {string}
+ */
+proto.RdsToConsumerDataPoint.prototype.getStream = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setStream = function(value) {
+  return jspb.Message.setProto3StringField(this, 5, value);
+};
+
+
+/**
+ * optional uint64 hits = 6;
+ * @return {number}
+ */
+proto.RdsToConsumerDataPoint.prototype.getHits = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setHits = function(value) {
+  return jspb.Message.setProto3IntField(this, 6, value);
+};
+
+
+/**
+ * optional uint64 misses = 7;
+ * @return {number}
+ */
+proto.RdsToConsumerDataPoint.prototype.getMisses = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setMisses = function(value) {
+  return jspb.Message.setProto3IntField(this, 7, value);
+};
+
+
+/**
+ * optional uint64 totalFileSize = 8;
+ * @return {number}
+ */
+proto.RdsToConsumerDataPoint.prototype.getTotalfilesize = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setTotalfilesize = function(value) {
+  return jspb.Message.setProto3IntField(this, 8, value);
+};
+
+
+/**
+ * optional uint64 totalTransferSendTimeInMicroseconds = 9;
+ * @return {number}
+ */
+proto.RdsToConsumerDataPoint.prototype.getTotaltransfersendtimeinmicroseconds = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.RdsToConsumerDataPoint} returns this
+ */
+proto.RdsToConsumerDataPoint.prototype.setTotaltransfersendtimeinmicroseconds = function(value) {
+  return jspb.Message.setProto3IntField(this, 9, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.FdsToConsumerDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.FdsToConsumerDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.FdsToConsumerDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.FdsToConsumerDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    pipelinestepid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    consumerinstanceid: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    beamtime: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    source: jspb.Message.getFieldWithDefault(msg, 4, ""),
+    stream: jspb.Message.getFieldWithDefault(msg, 5, ""),
+    filecount: jspb.Message.getFieldWithDefault(msg, 6, 0),
+    totalfilesize: jspb.Message.getFieldWithDefault(msg, 7, 0),
+    totaltransfersendtimeinmicroseconds: jspb.Message.getFieldWithDefault(msg, 8, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.FdsToConsumerDataPoint}
+ */
+proto.FdsToConsumerDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.FdsToConsumerDataPoint;
+  return proto.FdsToConsumerDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.FdsToConsumerDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.FdsToConsumerDataPoint}
+ */
+proto.FdsToConsumerDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPipelinestepid(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setConsumerinstanceid(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBeamtime(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setSource(value);
+      break;
+    case 5:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setStream(value);
+      break;
+    case 6:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setFilecount(value);
+      break;
+    case 7:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalfilesize(value);
+      break;
+    case 8:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotaltransfersendtimeinmicroseconds(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.FdsToConsumerDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.FdsToConsumerDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.FdsToConsumerDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.FdsToConsumerDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getPipelinestepid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getConsumerinstanceid();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getBeamtime();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getSource();
+  if (f.length > 0) {
+    writer.writeString(
+      4,
+      f
+    );
+  }
+  f = message.getStream();
+  if (f.length > 0) {
+    writer.writeString(
+      5,
+      f
+    );
+  }
+  f = message.getFilecount();
+  if (f !== 0) {
+    writer.writeUint64(
+      6,
+      f
+    );
+  }
+  f = message.getTotalfilesize();
+  if (f !== 0) {
+    writer.writeUint64(
+      7,
+      f
+    );
+  }
+  f = message.getTotaltransfersendtimeinmicroseconds();
+  if (f !== 0) {
+    writer.writeUint64(
+      8,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string pipelineStepId = 1;
+ * @return {string}
+ */
+proto.FdsToConsumerDataPoint.prototype.getPipelinestepid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.FdsToConsumerDataPoint} returns this
+ */
+proto.FdsToConsumerDataPoint.prototype.setPipelinestepid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string consumerInstanceId = 2;
+ * @return {string}
+ */
+proto.FdsToConsumerDataPoint.prototype.getConsumerinstanceid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.FdsToConsumerDataPoint} returns this
+ */
+proto.FdsToConsumerDataPoint.prototype.setConsumerinstanceid = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string beamtime = 3;
+ * @return {string}
+ */
+proto.FdsToConsumerDataPoint.prototype.getBeamtime = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.FdsToConsumerDataPoint} returns this
+ */
+proto.FdsToConsumerDataPoint.prototype.setBeamtime = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional string source = 4;
+ * @return {string}
+ */
+proto.FdsToConsumerDataPoint.prototype.getSource = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.FdsToConsumerDataPoint} returns this
+ */
+proto.FdsToConsumerDataPoint.prototype.setSource = function(value) {
+  return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+/**
+ * optional string stream = 5;
+ * @return {string}
+ */
+proto.FdsToConsumerDataPoint.prototype.getStream = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.FdsToConsumerDataPoint} returns this
+ */
+proto.FdsToConsumerDataPoint.prototype.setStream = function(value) {
+  return jspb.Message.setProto3StringField(this, 5, value);
+};
+
+
+/**
+ * optional uint64 fileCount = 6;
+ * @return {number}
+ */
+proto.FdsToConsumerDataPoint.prototype.getFilecount = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.FdsToConsumerDataPoint} returns this
+ */
+proto.FdsToConsumerDataPoint.prototype.setFilecount = function(value) {
+  return jspb.Message.setProto3IntField(this, 6, value);
+};
+
+
+/**
+ * optional uint64 totalFileSize = 7;
+ * @return {number}
+ */
+proto.FdsToConsumerDataPoint.prototype.getTotalfilesize = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.FdsToConsumerDataPoint} returns this
+ */
+proto.FdsToConsumerDataPoint.prototype.setTotalfilesize = function(value) {
+  return jspb.Message.setProto3IntField(this, 7, value);
+};
+
+
+/**
+ * optional uint64 totalTransferSendTimeInMicroseconds = 8;
+ * @return {number}
+ */
+proto.FdsToConsumerDataPoint.prototype.getTotaltransfersendtimeinmicroseconds = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.FdsToConsumerDataPoint} returns this
+ */
+proto.FdsToConsumerDataPoint.prototype.setTotaltransfersendtimeinmicroseconds = function(value) {
+  return jspb.Message.setProto3IntField(this, 8, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.ReceiverDataPointContainer.repeatedFields_ = [3,4,5];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.ReceiverDataPointContainer.prototype.toObject = function(opt_includeInstance) {
+  return proto.ReceiverDataPointContainer.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.ReceiverDataPointContainer} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ReceiverDataPointContainer.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    receivername: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    timestampms: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    groupedp2rtransfersList: jspb.Message.toObjectList(msg.getGroupedp2rtransfersList(),
+    proto.ProducerToReceiverTransferDataPoint.toObject, includeInstance),
+    groupedrds2ctransfersList: jspb.Message.toObjectList(msg.getGroupedrds2ctransfersList(),
+    proto.RdsToConsumerDataPoint.toObject, includeInstance),
+    groupedmemorystatsList: jspb.Message.toObjectList(msg.getGroupedmemorystatsList(),
+    proto.RdsMemoryDataPoint.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.ReceiverDataPointContainer}
+ */
+proto.ReceiverDataPointContainer.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.ReceiverDataPointContainer;
+  return proto.ReceiverDataPointContainer.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.ReceiverDataPointContainer} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.ReceiverDataPointContainer}
+ */
+proto.ReceiverDataPointContainer.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setReceivername(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTimestampms(value);
+      break;
+    case 3:
+      var value = new proto.ProducerToReceiverTransferDataPoint;
+      reader.readMessage(value,proto.ProducerToReceiverTransferDataPoint.deserializeBinaryFromReader);
+      msg.addGroupedp2rtransfers(value);
+      break;
+    case 4:
+      var value = new proto.RdsToConsumerDataPoint;
+      reader.readMessage(value,proto.RdsToConsumerDataPoint.deserializeBinaryFromReader);
+      msg.addGroupedrds2ctransfers(value);
+      break;
+    case 5:
+      var value = new proto.RdsMemoryDataPoint;
+      reader.readMessage(value,proto.RdsMemoryDataPoint.deserializeBinaryFromReader);
+      msg.addGroupedmemorystats(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.ReceiverDataPointContainer.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.ReceiverDataPointContainer.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.ReceiverDataPointContainer} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ReceiverDataPointContainer.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getReceivername();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getTimestampms();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+  f = message.getGroupedp2rtransfersList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.ProducerToReceiverTransferDataPoint.serializeBinaryToWriter
+    );
+  }
+  f = message.getGroupedrds2ctransfersList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      4,
+      f,
+      proto.RdsToConsumerDataPoint.serializeBinaryToWriter
+    );
+  }
+  f = message.getGroupedmemorystatsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      proto.RdsMemoryDataPoint.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional string receiverName = 1;
+ * @return {string}
+ */
+proto.ReceiverDataPointContainer.prototype.getReceivername = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.ReceiverDataPointContainer} returns this
+ */
+proto.ReceiverDataPointContainer.prototype.setReceivername = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 timestampMs = 2;
+ * @return {number}
+ */
+proto.ReceiverDataPointContainer.prototype.getTimestampms = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ReceiverDataPointContainer} returns this
+ */
+proto.ReceiverDataPointContainer.prototype.setTimestampms = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * repeated ProducerToReceiverTransferDataPoint groupedP2rTransfers = 3;
+ * @return {!Array<!proto.ProducerToReceiverTransferDataPoint>}
+ */
+proto.ReceiverDataPointContainer.prototype.getGroupedp2rtransfersList = function() {
+  return /** @type{!Array<!proto.ProducerToReceiverTransferDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.ProducerToReceiverTransferDataPoint, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.ProducerToReceiverTransferDataPoint>} value
+ * @return {!proto.ReceiverDataPointContainer} returns this
+*/
+proto.ReceiverDataPointContainer.prototype.setGroupedp2rtransfersList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.ProducerToReceiverTransferDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.ProducerToReceiverTransferDataPoint}
+ */
+proto.ReceiverDataPointContainer.prototype.addGroupedp2rtransfers = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.ProducerToReceiverTransferDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.ReceiverDataPointContainer} returns this
+ */
+proto.ReceiverDataPointContainer.prototype.clearGroupedp2rtransfersList = function() {
+  return this.setGroupedp2rtransfersList([]);
+};
+
+
+/**
+ * repeated RdsToConsumerDataPoint groupedRds2cTransfers = 4;
+ * @return {!Array<!proto.RdsToConsumerDataPoint>}
+ */
+proto.ReceiverDataPointContainer.prototype.getGroupedrds2ctransfersList = function() {
+  return /** @type{!Array<!proto.RdsToConsumerDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.RdsToConsumerDataPoint, 4));
+};
+
+
+/**
+ * @param {!Array<!proto.RdsToConsumerDataPoint>} value
+ * @return {!proto.ReceiverDataPointContainer} returns this
+*/
+proto.ReceiverDataPointContainer.prototype.setGroupedrds2ctransfersList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 4, value);
+};
+
+
+/**
+ * @param {!proto.RdsToConsumerDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.RdsToConsumerDataPoint}
+ */
+proto.ReceiverDataPointContainer.prototype.addGroupedrds2ctransfers = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.RdsToConsumerDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.ReceiverDataPointContainer} returns this
+ */
+proto.ReceiverDataPointContainer.prototype.clearGroupedrds2ctransfersList = function() {
+  return this.setGroupedrds2ctransfersList([]);
+};
+
+
+/**
+ * repeated RdsMemoryDataPoint groupedMemoryStats = 5;
+ * @return {!Array<!proto.RdsMemoryDataPoint>}
+ */
+proto.ReceiverDataPointContainer.prototype.getGroupedmemorystatsList = function() {
+  return /** @type{!Array<!proto.RdsMemoryDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.RdsMemoryDataPoint, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.RdsMemoryDataPoint>} value
+ * @return {!proto.ReceiverDataPointContainer} returns this
+*/
+proto.ReceiverDataPointContainer.prototype.setGroupedmemorystatsList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.RdsMemoryDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.RdsMemoryDataPoint}
+ */
+proto.ReceiverDataPointContainer.prototype.addGroupedmemorystats = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.RdsMemoryDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.ReceiverDataPointContainer} returns this
+ */
+proto.ReceiverDataPointContainer.prototype.clearGroupedmemorystatsList = function() {
+  return this.setGroupedmemorystatsList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.BrokerDataPointContainer.repeatedFields_ = [3];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.BrokerDataPointContainer.prototype.toObject = function(opt_includeInstance) {
+  return proto.BrokerDataPointContainer.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.BrokerDataPointContainer} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.BrokerDataPointContainer.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    brokername: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    timestampms: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    groupedbrokerrequestsList: jspb.Message.toObjectList(msg.getGroupedbrokerrequestsList(),
+    proto.BrokerRequestDataPoint.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.BrokerDataPointContainer}
+ */
+proto.BrokerDataPointContainer.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.BrokerDataPointContainer;
+  return proto.BrokerDataPointContainer.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.BrokerDataPointContainer} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.BrokerDataPointContainer}
+ */
+proto.BrokerDataPointContainer.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBrokername(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTimestampms(value);
+      break;
+    case 3:
+      var value = new proto.BrokerRequestDataPoint;
+      reader.readMessage(value,proto.BrokerRequestDataPoint.deserializeBinaryFromReader);
+      msg.addGroupedbrokerrequests(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.BrokerDataPointContainer.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.BrokerDataPointContainer.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.BrokerDataPointContainer} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.BrokerDataPointContainer.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getBrokername();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getTimestampms();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+  f = message.getGroupedbrokerrequestsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.BrokerRequestDataPoint.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional string brokerName = 1;
+ * @return {string}
+ */
+proto.BrokerDataPointContainer.prototype.getBrokername = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.BrokerDataPointContainer} returns this
+ */
+proto.BrokerDataPointContainer.prototype.setBrokername = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 timestampMs = 2;
+ * @return {number}
+ */
+proto.BrokerDataPointContainer.prototype.getTimestampms = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.BrokerDataPointContainer} returns this
+ */
+proto.BrokerDataPointContainer.prototype.setTimestampms = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * repeated BrokerRequestDataPoint groupedBrokerRequests = 3;
+ * @return {!Array<!proto.BrokerRequestDataPoint>}
+ */
+proto.BrokerDataPointContainer.prototype.getGroupedbrokerrequestsList = function() {
+  return /** @type{!Array<!proto.BrokerRequestDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.BrokerRequestDataPoint, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.BrokerRequestDataPoint>} value
+ * @return {!proto.BrokerDataPointContainer} returns this
+*/
+proto.BrokerDataPointContainer.prototype.setGroupedbrokerrequestsList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.BrokerRequestDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.BrokerRequestDataPoint}
+ */
+proto.BrokerDataPointContainer.prototype.addGroupedbrokerrequests = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.BrokerRequestDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.BrokerDataPointContainer} returns this
+ */
+proto.BrokerDataPointContainer.prototype.clearGroupedbrokerrequestsList = function() {
+  return this.setGroupedbrokerrequestsList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.FtsToConsumerDataPointContainer.repeatedFields_ = [3];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.FtsToConsumerDataPointContainer.prototype.toObject = function(opt_includeInstance) {
+  return proto.FtsToConsumerDataPointContainer.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.FtsToConsumerDataPointContainer} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.FtsToConsumerDataPointContainer.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    ftsname: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    timestampms: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    groupedfdstransfersList: jspb.Message.toObjectList(msg.getGroupedfdstransfersList(),
+    proto.FdsToConsumerDataPoint.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.FtsToConsumerDataPointContainer}
+ */
+proto.FtsToConsumerDataPointContainer.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.FtsToConsumerDataPointContainer;
+  return proto.FtsToConsumerDataPointContainer.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.FtsToConsumerDataPointContainer} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.FtsToConsumerDataPointContainer}
+ */
+proto.FtsToConsumerDataPointContainer.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setFtsname(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTimestampms(value);
+      break;
+    case 3:
+      var value = new proto.FdsToConsumerDataPoint;
+      reader.readMessage(value,proto.FdsToConsumerDataPoint.deserializeBinaryFromReader);
+      msg.addGroupedfdstransfers(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.FtsToConsumerDataPointContainer.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.FtsToConsumerDataPointContainer.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.FtsToConsumerDataPointContainer} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.FtsToConsumerDataPointContainer.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getFtsname();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getTimestampms();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+  f = message.getGroupedfdstransfersList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.FdsToConsumerDataPoint.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional string ftsName = 1;
+ * @return {string}
+ */
+proto.FtsToConsumerDataPointContainer.prototype.getFtsname = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.FtsToConsumerDataPointContainer} returns this
+ */
+proto.FtsToConsumerDataPointContainer.prototype.setFtsname = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 timestampMs = 2;
+ * @return {number}
+ */
+proto.FtsToConsumerDataPointContainer.prototype.getTimestampms = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.FtsToConsumerDataPointContainer} returns this
+ */
+proto.FtsToConsumerDataPointContainer.prototype.setTimestampms = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * repeated FdsToConsumerDataPoint groupedFdsTransfers = 3;
+ * @return {!Array<!proto.FdsToConsumerDataPoint>}
+ */
+proto.FtsToConsumerDataPointContainer.prototype.getGroupedfdstransfersList = function() {
+  return /** @type{!Array<!proto.FdsToConsumerDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.FdsToConsumerDataPoint, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.FdsToConsumerDataPoint>} value
+ * @return {!proto.FtsToConsumerDataPointContainer} returns this
+*/
+proto.FtsToConsumerDataPointContainer.prototype.setGroupedfdstransfersList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.FdsToConsumerDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.FdsToConsumerDataPoint}
+ */
+proto.FtsToConsumerDataPointContainer.prototype.addGroupedfdstransfers = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.FdsToConsumerDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.FtsToConsumerDataPointContainer} returns this
+ */
+proto.FtsToConsumerDataPointContainer.prototype.clearGroupedfdstransfersList = function() {
+  return this.setGroupedfdstransfersList([]);
+};
+
+
+goog.object.extend(exports, proto);
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_grpc_web_pb.d.ts b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_grpc_web_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2a969296842f974f7ec573a98aea65a4a2ff2847
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_grpc_web_pb.d.ts
@@ -0,0 +1,68 @@
+import * as grpcWeb from 'grpc-web';
+
+import * as AsapoMonitoringCommonService_pb from './AsapoMonitoringCommonService_pb';
+import * as AsapoMonitoringQueryService_pb from './AsapoMonitoringQueryService_pb';
+
+
+export class AsapoMonitoringQueryServiceClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  getMetadata(
+    request: AsapoMonitoringCommonService_pb.Empty,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: AsapoMonitoringQueryService_pb.MetadataResponse) => void
+  ): grpcWeb.ClientReadableStream<AsapoMonitoringQueryService_pb.MetadataResponse>;
+
+  getTopology(
+    request: AsapoMonitoringQueryService_pb.ToplogyQuery,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: AsapoMonitoringQueryService_pb.TopologyResponse) => void
+  ): grpcWeb.ClientReadableStream<AsapoMonitoringQueryService_pb.TopologyResponse>;
+
+  getDataPoints(
+    request: AsapoMonitoringQueryService_pb.DataPointsQuery,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: AsapoMonitoringQueryService_pb.DataPointsResponse) => void
+  ): grpcWeb.ClientReadableStream<AsapoMonitoringQueryService_pb.DataPointsResponse>;
+
+  getGroupDelay(
+    request: AsapoMonitoringQueryService_pb.GroupDelayQuery,
+    metadata: grpcWeb.Metadata | undefined,
+    callback: (err: grpcWeb.Error,
+               response: AsapoMonitoringQueryService_pb.GroupDelayResponse) => void
+  ): grpcWeb.ClientReadableStream<AsapoMonitoringQueryService_pb.GroupDelayResponse>;
+
+}
+
+export class AsapoMonitoringQueryServicePromiseClient {
+  constructor (hostname: string,
+               credentials?: null | { [index: string]: string; },
+               options?: null | { [index: string]: any; });
+
+  getMetadata(
+    request: AsapoMonitoringCommonService_pb.Empty,
+    metadata?: grpcWeb.Metadata
+  ): Promise<AsapoMonitoringQueryService_pb.MetadataResponse>;
+
+  getTopology(
+    request: AsapoMonitoringQueryService_pb.ToplogyQuery,
+    metadata?: grpcWeb.Metadata
+  ): Promise<AsapoMonitoringQueryService_pb.TopologyResponse>;
+
+  getDataPoints(
+    request: AsapoMonitoringQueryService_pb.DataPointsQuery,
+    metadata?: grpcWeb.Metadata
+  ): Promise<AsapoMonitoringQueryService_pb.DataPointsResponse>;
+
+  getGroupDelay(
+    request: AsapoMonitoringQueryService_pb.GroupDelayQuery,
+    metadata?: grpcWeb.Metadata
+  ): Promise<AsapoMonitoringQueryService_pb.GroupDelayResponse>;
+
+}
+
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_grpc_web_pb.js b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_grpc_web_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab80ef904e423e31fe60a0276a97834f50d8c2f7
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_grpc_web_pb.js
@@ -0,0 +1,395 @@
+/**
+ * @fileoverview gRPC-Web generated client stub for 
+ * @enhanceable
+ * @public
+ */
+
+// GENERATED CODE -- DO NOT EDIT!
+
+
+/* eslint-disable */
+// @ts-nocheck
+
+
+
+const grpc = {};
+grpc.web = require('grpc-web');
+
+
+var AsapoMonitoringCommonService_pb = require('./AsapoMonitoringCommonService_pb.js')
+const proto = require('./AsapoMonitoringQueryService_pb.js');
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.AsapoMonitoringQueryServiceClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @param {string} hostname
+ * @param {?Object} credentials
+ * @param {?Object} options
+ * @constructor
+ * @struct
+ * @final
+ */
+proto.AsapoMonitoringQueryServicePromiseClient =
+    function(hostname, credentials, options) {
+  if (!options) options = {};
+  options['format'] = 'text';
+
+  /**
+   * @private @const {!grpc.web.GrpcWebClientBase} The client
+   */
+  this.client_ = new grpc.web.GrpcWebClientBase(options);
+
+  /**
+   * @private @const {string} The hostname
+   */
+  this.hostname_ = hostname;
+
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.Empty,
+ *   !proto.MetadataResponse>}
+ */
+const methodDescriptor_AsapoMonitoringQueryService_GetMetadata = new grpc.web.MethodDescriptor(
+  '/AsapoMonitoringQueryService/GetMetadata',
+  grpc.web.MethodType.UNARY,
+  AsapoMonitoringCommonService_pb.Empty,
+  proto.MetadataResponse,
+  /**
+   * @param {!proto.Empty} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.MetadataResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.Empty,
+ *   !proto.MetadataResponse>}
+ */
+const methodInfo_AsapoMonitoringQueryService_GetMetadata = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.MetadataResponse,
+  /**
+   * @param {!proto.Empty} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.MetadataResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.Empty} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.MetadataResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.MetadataResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.AsapoMonitoringQueryServiceClient.prototype.getMetadata =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/AsapoMonitoringQueryService/GetMetadata',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringQueryService_GetMetadata,
+      callback);
+};
+
+
+/**
+ * @param {!proto.Empty} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.MetadataResponse>}
+ *     Promise that resolves to the response
+ */
+proto.AsapoMonitoringQueryServicePromiseClient.prototype.getMetadata =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/AsapoMonitoringQueryService/GetMetadata',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringQueryService_GetMetadata);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.ToplogyQuery,
+ *   !proto.TopologyResponse>}
+ */
+const methodDescriptor_AsapoMonitoringQueryService_GetTopology = new grpc.web.MethodDescriptor(
+  '/AsapoMonitoringQueryService/GetTopology',
+  grpc.web.MethodType.UNARY,
+  proto.ToplogyQuery,
+  proto.TopologyResponse,
+  /**
+   * @param {!proto.ToplogyQuery} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.TopologyResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.ToplogyQuery,
+ *   !proto.TopologyResponse>}
+ */
+const methodInfo_AsapoMonitoringQueryService_GetTopology = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.TopologyResponse,
+  /**
+   * @param {!proto.ToplogyQuery} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.TopologyResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.ToplogyQuery} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.TopologyResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.TopologyResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.AsapoMonitoringQueryServiceClient.prototype.getTopology =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/AsapoMonitoringQueryService/GetTopology',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringQueryService_GetTopology,
+      callback);
+};
+
+
+/**
+ * @param {!proto.ToplogyQuery} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.TopologyResponse>}
+ *     Promise that resolves to the response
+ */
+proto.AsapoMonitoringQueryServicePromiseClient.prototype.getTopology =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/AsapoMonitoringQueryService/GetTopology',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringQueryService_GetTopology);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.DataPointsQuery,
+ *   !proto.DataPointsResponse>}
+ */
+const methodDescriptor_AsapoMonitoringQueryService_GetDataPoints = new grpc.web.MethodDescriptor(
+  '/AsapoMonitoringQueryService/GetDataPoints',
+  grpc.web.MethodType.UNARY,
+  proto.DataPointsQuery,
+  proto.DataPointsResponse,
+  /**
+   * @param {!proto.DataPointsQuery} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.DataPointsResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.DataPointsQuery,
+ *   !proto.DataPointsResponse>}
+ */
+const methodInfo_AsapoMonitoringQueryService_GetDataPoints = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.DataPointsResponse,
+  /**
+   * @param {!proto.DataPointsQuery} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.DataPointsResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.DataPointsQuery} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.DataPointsResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.DataPointsResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.AsapoMonitoringQueryServiceClient.prototype.getDataPoints =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/AsapoMonitoringQueryService/GetDataPoints',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringQueryService_GetDataPoints,
+      callback);
+};
+
+
+/**
+ * @param {!proto.DataPointsQuery} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.DataPointsResponse>}
+ *     Promise that resolves to the response
+ */
+proto.AsapoMonitoringQueryServicePromiseClient.prototype.getDataPoints =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/AsapoMonitoringQueryService/GetDataPoints',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringQueryService_GetDataPoints);
+};
+
+
+/**
+ * @const
+ * @type {!grpc.web.MethodDescriptor<
+ *   !proto.GroupDelayQuery,
+ *   !proto.GroupDelayResponse>}
+ */
+const methodDescriptor_AsapoMonitoringQueryService_GetGroupDelay = new grpc.web.MethodDescriptor(
+  '/AsapoMonitoringQueryService/GetGroupDelay',
+  grpc.web.MethodType.UNARY,
+  proto.GroupDelayQuery,
+  proto.GroupDelayResponse,
+  /**
+   * @param {!proto.GroupDelayQuery} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.GroupDelayResponse.deserializeBinary
+);
+
+
+/**
+ * @const
+ * @type {!grpc.web.AbstractClientBase.MethodInfo<
+ *   !proto.GroupDelayQuery,
+ *   !proto.GroupDelayResponse>}
+ */
+const methodInfo_AsapoMonitoringQueryService_GetGroupDelay = new grpc.web.AbstractClientBase.MethodInfo(
+  proto.GroupDelayResponse,
+  /**
+   * @param {!proto.GroupDelayQuery} request
+   * @return {!Uint8Array}
+   */
+  function(request) {
+    return request.serializeBinary();
+  },
+  proto.GroupDelayResponse.deserializeBinary
+);
+
+
+/**
+ * @param {!proto.GroupDelayQuery} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @param {function(?grpc.web.Error, ?proto.GroupDelayResponse)}
+ *     callback The callback function(error, response)
+ * @return {!grpc.web.ClientReadableStream<!proto.GroupDelayResponse>|undefined}
+ *     The XHR Node Readable Stream
+ */
+proto.AsapoMonitoringQueryServiceClient.prototype.getGroupDelay =
+    function(request, metadata, callback) {
+  return this.client_.rpcCall(this.hostname_ +
+      '/AsapoMonitoringQueryService/GetGroupDelay',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringQueryService_GetGroupDelay,
+      callback);
+};
+
+
+/**
+ * @param {!proto.GroupDelayQuery} request The
+ *     request proto
+ * @param {?Object<string, string>} metadata User defined
+ *     call metadata
+ * @return {!Promise<!proto.GroupDelayResponse>}
+ *     Promise that resolves to the response
+ */
+proto.AsapoMonitoringQueryServicePromiseClient.prototype.getGroupDelay =
+    function(request, metadata) {
+  return this.client_.unaryCall(this.hostname_ +
+      '/AsapoMonitoringQueryService/GetGroupDelay',
+      request,
+      metadata || {},
+      methodDescriptor_AsapoMonitoringQueryService_GetGroupDelay);
+};
+
+
+module.exports = proto;
+
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_pb.d.ts b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_pb.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..eadefed46072ee596b1d7b8d0cd3c410fb511b92
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_pb.d.ts
@@ -0,0 +1,428 @@
+import * as jspb from 'google-protobuf'
+
+import * as AsapoMonitoringCommonService_pb from './AsapoMonitoringCommonService_pb';
+
+
+export class DataPointsQuery extends jspb.Message {
+  getFromtimestamp(): number;
+  setFromtimestamp(value: number): DataPointsQuery;
+
+  getTotimestamp(): number;
+  setTotimestamp(value: number): DataPointsQuery;
+
+  getBeamtimefilter(): string;
+  setBeamtimefilter(value: string): DataPointsQuery;
+
+  getSourcefilter(): string;
+  setSourcefilter(value: string): DataPointsQuery;
+
+  getReceiverfilter(): string;
+  setReceiverfilter(value: string): DataPointsQuery;
+
+  getFrompipelinestepfilter(): string;
+  setFrompipelinestepfilter(value: string): DataPointsQuery;
+
+  getTopipelinestepfilter(): string;
+  setTopipelinestepfilter(value: string): DataPointsQuery;
+
+  getPipelinequerymode(): ipelineConnectionQueryMode;
+  setPipelinequerymode(value: ipelineConnectionQueryMode): DataPointsQuery;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): DataPointsQuery.AsObject;
+  static toObject(includeInstance: boolean, msg: DataPointsQuery): DataPointsQuery.AsObject;
+  static serializeBinaryToWriter(message: DataPointsQuery, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): DataPointsQuery;
+  static deserializeBinaryFromReader(message: DataPointsQuery, reader: jspb.BinaryReader): DataPointsQuery;
+}
+
+export namespace DataPointsQuery {
+  export type AsObject = {
+    fromtimestamp: number,
+    totimestamp: number,
+    beamtimefilter: string,
+    sourcefilter: string,
+    receiverfilter: string,
+    frompipelinestepfilter: string,
+    topipelinestepfilter: string,
+    pipelinequerymode: ipelineConnectionQueryMode,
+  }
+}
+
+export class TotalTransferRateDataPoint extends jspb.Message {
+  getTotalbytespersecrecv(): number;
+  setTotalbytespersecrecv(value: number): TotalTransferRateDataPoint;
+
+  getTotalbytespersecsend(): number;
+  setTotalbytespersecsend(value: number): TotalTransferRateDataPoint;
+
+  getTotalbytespersecrdssend(): number;
+  setTotalbytespersecrdssend(value: number): TotalTransferRateDataPoint;
+
+  getTotalbytespersecftssend(): number;
+  setTotalbytespersecftssend(value: number): TotalTransferRateDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TotalTransferRateDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: TotalTransferRateDataPoint): TotalTransferRateDataPoint.AsObject;
+  static serializeBinaryToWriter(message: TotalTransferRateDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TotalTransferRateDataPoint;
+  static deserializeBinaryFromReader(message: TotalTransferRateDataPoint, reader: jspb.BinaryReader): TotalTransferRateDataPoint;
+}
+
+export namespace TotalTransferRateDataPoint {
+  export type AsObject = {
+    totalbytespersecrecv: number,
+    totalbytespersecsend: number,
+    totalbytespersecrdssend: number,
+    totalbytespersecftssend: number,
+  }
+}
+
+export class TotalFileRateDataPoint extends jspb.Message {
+  getTotalrequests(): number;
+  setTotalrequests(value: number): TotalFileRateDataPoint;
+
+  getCachemisses(): number;
+  setCachemisses(value: number): TotalFileRateDataPoint;
+
+  getFromcache(): number;
+  setFromcache(value: number): TotalFileRateDataPoint;
+
+  getFromdisk(): number;
+  setFromdisk(value: number): TotalFileRateDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TotalFileRateDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: TotalFileRateDataPoint): TotalFileRateDataPoint.AsObject;
+  static serializeBinaryToWriter(message: TotalFileRateDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TotalFileRateDataPoint;
+  static deserializeBinaryFromReader(message: TotalFileRateDataPoint, reader: jspb.BinaryReader): TotalFileRateDataPoint;
+}
+
+export namespace TotalFileRateDataPoint {
+  export type AsObject = {
+    totalrequests: number,
+    cachemisses: number,
+    fromcache: number,
+    fromdisk: number,
+  }
+}
+
+export class TaskTimeDataPoint extends jspb.Message {
+  getReceiveiotimeus(): number;
+  setReceiveiotimeus(value: number): TaskTimeDataPoint;
+
+  getWritetodisktimeus(): number;
+  setWritetodisktimeus(value: number): TaskTimeDataPoint;
+
+  getWritetodatabasetimeus(): number;
+  setWritetodatabasetimeus(value: number): TaskTimeDataPoint;
+
+  getRdssendtoconsumertimeus(): number;
+  setRdssendtoconsumertimeus(value: number): TaskTimeDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TaskTimeDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: TaskTimeDataPoint): TaskTimeDataPoint.AsObject;
+  static serializeBinaryToWriter(message: TaskTimeDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TaskTimeDataPoint;
+  static deserializeBinaryFromReader(message: TaskTimeDataPoint, reader: jspb.BinaryReader): TaskTimeDataPoint;
+}
+
+export namespace TaskTimeDataPoint {
+  export type AsObject = {
+    receiveiotimeus: number,
+    writetodisktimeus: number,
+    writetodatabasetimeus: number,
+    rdssendtoconsumertimeus: number,
+  }
+}
+
+export class RdsMemoryUsageDataPoint extends jspb.Message {
+  getTotalusedmemory(): number;
+  setTotalusedmemory(value: number): RdsMemoryUsageDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): RdsMemoryUsageDataPoint.AsObject;
+  static toObject(includeInstance: boolean, msg: RdsMemoryUsageDataPoint): RdsMemoryUsageDataPoint.AsObject;
+  static serializeBinaryToWriter(message: RdsMemoryUsageDataPoint, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): RdsMemoryUsageDataPoint;
+  static deserializeBinaryFromReader(message: RdsMemoryUsageDataPoint, reader: jspb.BinaryReader): RdsMemoryUsageDataPoint;
+}
+
+export namespace RdsMemoryUsageDataPoint {
+  export type AsObject = {
+    totalusedmemory: number,
+  }
+}
+
+export class DataPointsResponse extends jspb.Message {
+  getStarttimestampinsec(): number;
+  setStarttimestampinsec(value: number): DataPointsResponse;
+
+  getTimeintervalinsec(): number;
+  setTimeintervalinsec(value: number): DataPointsResponse;
+
+  getTransferratesList(): Array<TotalTransferRateDataPoint>;
+  setTransferratesList(value: Array<TotalTransferRateDataPoint>): DataPointsResponse;
+  clearTransferratesList(): DataPointsResponse;
+  addTransferrates(value?: TotalTransferRateDataPoint, index?: number): TotalTransferRateDataPoint;
+
+  getFileratesList(): Array<TotalFileRateDataPoint>;
+  setFileratesList(value: Array<TotalFileRateDataPoint>): DataPointsResponse;
+  clearFileratesList(): DataPointsResponse;
+  addFilerates(value?: TotalFileRateDataPoint, index?: number): TotalFileRateDataPoint;
+
+  getTasktimesList(): Array<TaskTimeDataPoint>;
+  setTasktimesList(value: Array<TaskTimeDataPoint>): DataPointsResponse;
+  clearTasktimesList(): DataPointsResponse;
+  addTasktimes(value?: TaskTimeDataPoint, index?: number): TaskTimeDataPoint;
+
+  getMemoryusagesList(): Array<RdsMemoryUsageDataPoint>;
+  setMemoryusagesList(value: Array<RdsMemoryUsageDataPoint>): DataPointsResponse;
+  clearMemoryusagesList(): DataPointsResponse;
+  addMemoryusages(value?: RdsMemoryUsageDataPoint, index?: number): RdsMemoryUsageDataPoint;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): DataPointsResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: DataPointsResponse): DataPointsResponse.AsObject;
+  static serializeBinaryToWriter(message: DataPointsResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): DataPointsResponse;
+  static deserializeBinaryFromReader(message: DataPointsResponse, reader: jspb.BinaryReader): DataPointsResponse;
+}
+
+export namespace DataPointsResponse {
+  export type AsObject = {
+    starttimestampinsec: number,
+    timeintervalinsec: number,
+    transferratesList: Array<TotalTransferRateDataPoint.AsObject>,
+    fileratesList: Array<TotalFileRateDataPoint.AsObject>,
+    tasktimesList: Array<TaskTimeDataPoint.AsObject>,
+    memoryusagesList: Array<RdsMemoryUsageDataPoint.AsObject>,
+  }
+}
+
+export class MetadataResponse extends jspb.Message {
+  getClustername(): string;
+  setClustername(value: string): MetadataResponse;
+
+  getAvailablebeamtimesList(): Array<string>;
+  setAvailablebeamtimesList(value: Array<string>): MetadataResponse;
+  clearAvailablebeamtimesList(): MetadataResponse;
+  addAvailablebeamtimes(value: string, index?: number): MetadataResponse;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): MetadataResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: MetadataResponse): MetadataResponse.AsObject;
+  static serializeBinaryToWriter(message: MetadataResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): MetadataResponse;
+  static deserializeBinaryFromReader(message: MetadataResponse, reader: jspb.BinaryReader): MetadataResponse;
+}
+
+export namespace MetadataResponse {
+  export type AsObject = {
+    clustername: string,
+    availablebeamtimesList: Array<string>,
+  }
+}
+
+export class ToplogyQuery extends jspb.Message {
+  getFromtimestamp(): number;
+  setFromtimestamp(value: number): ToplogyQuery;
+
+  getTotimestamp(): number;
+  setTotimestamp(value: number): ToplogyQuery;
+
+  getBeamtimefilter(): string;
+  setBeamtimefilter(value: string): ToplogyQuery;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): ToplogyQuery.AsObject;
+  static toObject(includeInstance: boolean, msg: ToplogyQuery): ToplogyQuery.AsObject;
+  static serializeBinaryToWriter(message: ToplogyQuery, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): ToplogyQuery;
+  static deserializeBinaryFromReader(message: ToplogyQuery, reader: jspb.BinaryReader): ToplogyQuery;
+}
+
+export namespace ToplogyQuery {
+  export type AsObject = {
+    fromtimestamp: number,
+    totimestamp: number,
+    beamtimefilter: string,
+  }
+}
+
+export class TopologyResponseNode extends jspb.Message {
+  getNodeid(): string;
+  setNodeid(value: string): TopologyResponseNode;
+
+  getLevel(): number;
+  setLevel(value: number): TopologyResponseNode;
+
+  getConsumerinstancesList(): Array<string>;
+  setConsumerinstancesList(value: Array<string>): TopologyResponseNode;
+  clearConsumerinstancesList(): TopologyResponseNode;
+  addConsumerinstances(value: string, index?: number): TopologyResponseNode;
+
+  getProducerinstancesList(): Array<string>;
+  setProducerinstancesList(value: Array<string>): TopologyResponseNode;
+  clearProducerinstancesList(): TopologyResponseNode;
+  addProducerinstances(value: string, index?: number): TopologyResponseNode;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TopologyResponseNode.AsObject;
+  static toObject(includeInstance: boolean, msg: TopologyResponseNode): TopologyResponseNode.AsObject;
+  static serializeBinaryToWriter(message: TopologyResponseNode, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TopologyResponseNode;
+  static deserializeBinaryFromReader(message: TopologyResponseNode, reader: jspb.BinaryReader): TopologyResponseNode;
+}
+
+export namespace TopologyResponseNode {
+  export type AsObject = {
+    nodeid: string,
+    level: number,
+    consumerinstancesList: Array<string>,
+    producerinstancesList: Array<string>,
+  }
+}
+
+export class TopologyResponseEdge extends jspb.Message {
+  getFromnodeid(): string;
+  setFromnodeid(value: string): TopologyResponseEdge;
+
+  getTonodeid(): string;
+  setTonodeid(value: string): TopologyResponseEdge;
+
+  getSourcename(): string;
+  setSourcename(value: string): TopologyResponseEdge;
+
+  getInvolvedreceiversList(): Array<string>;
+  setInvolvedreceiversList(value: Array<string>): TopologyResponseEdge;
+  clearInvolvedreceiversList(): TopologyResponseEdge;
+  addInvolvedreceivers(value: string, index?: number): TopologyResponseEdge;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TopologyResponseEdge.AsObject;
+  static toObject(includeInstance: boolean, msg: TopologyResponseEdge): TopologyResponseEdge.AsObject;
+  static serializeBinaryToWriter(message: TopologyResponseEdge, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TopologyResponseEdge;
+  static deserializeBinaryFromReader(message: TopologyResponseEdge, reader: jspb.BinaryReader): TopologyResponseEdge;
+}
+
+export namespace TopologyResponseEdge {
+  export type AsObject = {
+    fromnodeid: string,
+    tonodeid: string,
+    sourcename: string,
+    involvedreceiversList: Array<string>,
+  }
+}
+
+export class TopologyResponse extends jspb.Message {
+  getNodesList(): Array<TopologyResponseNode>;
+  setNodesList(value: Array<TopologyResponseNode>): TopologyResponse;
+  clearNodesList(): TopologyResponse;
+  addNodes(value?: TopologyResponseNode, index?: number): TopologyResponseNode;
+
+  getEdgesList(): Array<TopologyResponseEdge>;
+  setEdgesList(value: Array<TopologyResponseEdge>): TopologyResponse;
+  clearEdgesList(): TopologyResponse;
+  addEdges(value?: TopologyResponseEdge, index?: number): TopologyResponseEdge;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): TopologyResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: TopologyResponse): TopologyResponse.AsObject;
+  static serializeBinaryToWriter(message: TopologyResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): TopologyResponse;
+  static deserializeBinaryFromReader(message: TopologyResponse, reader: jspb.BinaryReader): TopologyResponse;
+}
+
+export namespace TopologyResponse {
+  export type AsObject = {
+    nodesList: Array<TopologyResponseNode.AsObject>,
+    edgesList: Array<TopologyResponseEdge.AsObject>,
+  }
+}
+
+export class GroupDelayQuery extends jspb.Message {
+  getFromtimestamp(): number;
+  setFromtimestamp(value: number): GroupDelayQuery;
+
+  getTotimestamp(): number;
+  setTotimestamp(value: number): GroupDelayQuery;
+
+  getBeamtimefilter(): string;
+  setBeamtimefilter(value: string): GroupDelayQuery;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GroupDelayQuery.AsObject;
+  static toObject(includeInstance: boolean, msg: GroupDelayQuery): GroupDelayQuery.AsObject;
+  static serializeBinaryToWriter(message: GroupDelayQuery, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GroupDelayQuery;
+  static deserializeBinaryFromReader(message: GroupDelayQuery, reader: jspb.BinaryReader): GroupDelayQuery;
+}
+
+export namespace GroupDelayQuery {
+  export type AsObject = {
+    fromtimestamp: number,
+    totimestamp: number,
+    beamtimefilter: string,
+  }
+}
+
+export class GroupDelayResponseItem extends jspb.Message {
+  getGroupid(): string;
+  setGroupid(value: string): GroupDelayResponseItem;
+
+  getDelayms(): number;
+  setDelayms(value: number): GroupDelayResponseItem;
+
+  getPipelinestep(): string;
+  setPipelinestep(value: string): GroupDelayResponseItem;
+
+  getIdx(): number;
+  setIdx(value: number): GroupDelayResponseItem;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GroupDelayResponseItem.AsObject;
+  static toObject(includeInstance: boolean, msg: GroupDelayResponseItem): GroupDelayResponseItem.AsObject;
+  static serializeBinaryToWriter(message: GroupDelayResponseItem, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GroupDelayResponseItem;
+  static deserializeBinaryFromReader(message: GroupDelayResponseItem, reader: jspb.BinaryReader): GroupDelayResponseItem;
+}
+
+export namespace GroupDelayResponseItem {
+  export type AsObject = {
+    groupid: string,
+    delayms: number,
+    pipelinestep: string,
+    idx: number,
+  }
+}
+
+export class GroupDelayResponse extends jspb.Message {
+  getGroupidsList(): Array<GroupDelayResponseItem>;
+  setGroupidsList(value: Array<GroupDelayResponseItem>): GroupDelayResponse;
+  clearGroupidsList(): GroupDelayResponse;
+  addGroupids(value?: GroupDelayResponseItem, index?: number): GroupDelayResponseItem;
+
+  serializeBinary(): Uint8Array;
+  toObject(includeInstance?: boolean): GroupDelayResponse.AsObject;
+  static toObject(includeInstance: boolean, msg: GroupDelayResponse): GroupDelayResponse.AsObject;
+  static serializeBinaryToWriter(message: GroupDelayResponse, writer: jspb.BinaryWriter): void;
+  static deserializeBinary(bytes: Uint8Array): GroupDelayResponse;
+  static deserializeBinaryFromReader(message: GroupDelayResponse, reader: jspb.BinaryReader): GroupDelayResponse;
+}
+
+export namespace GroupDelayResponse {
+  export type AsObject = {
+    groupidsList: Array<GroupDelayResponseItem.AsObject>,
+  }
+}
+
+export enum PipelineConnectionQueryMode { 
+  INVALID_QUERY_MODE = 0,
+  EXACTPATH = 1,
+  JUSTRELATEDTOSTEP = 2,
+}
diff --git a/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_pb.js b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_pb.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4b52085c0b726da892228a9b79c05418225e763
--- /dev/null
+++ b/monitoring/monitoring_ui/src/generated_proto/AsapoMonitoringQueryService_pb.js
@@ -0,0 +1,3517 @@
+// source: AsapoMonitoringQueryService.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {missingRequire} reports error on implicit type usages.
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ *     field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+var AsapoMonitoringCommonService_pb = require('./AsapoMonitoringCommonService_pb.js');
+goog.object.extend(proto, AsapoMonitoringCommonService_pb);
+goog.exportSymbol('proto.DataPointsQuery', null, global);
+goog.exportSymbol('proto.DataPointsResponse', null, global);
+goog.exportSymbol('proto.GroupDelayQuery', null, global);
+goog.exportSymbol('proto.GroupDelayResponse', null, global);
+goog.exportSymbol('proto.GroupDelayResponseItem', null, global);
+goog.exportSymbol('proto.MetadataResponse', null, global);
+goog.exportSymbol('proto.PipelineConnectionQueryMode', null, global);
+goog.exportSymbol('proto.RdsMemoryUsageDataPoint', null, global);
+goog.exportSymbol('proto.TaskTimeDataPoint', null, global);
+goog.exportSymbol('proto.ToplogyQuery', null, global);
+goog.exportSymbol('proto.TopologyResponse', null, global);
+goog.exportSymbol('proto.TopologyResponseEdge', null, global);
+goog.exportSymbol('proto.TopologyResponseNode', null, global);
+goog.exportSymbol('proto.TotalFileRateDataPoint', null, global);
+goog.exportSymbol('proto.TotalTransferRateDataPoint', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.DataPointsQuery = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.DataPointsQuery, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.DataPointsQuery.displayName = 'proto.DataPointsQuery';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.TotalTransferRateDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.TotalTransferRateDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.TotalTransferRateDataPoint.displayName = 'proto.TotalTransferRateDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.TotalFileRateDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.TotalFileRateDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.TotalFileRateDataPoint.displayName = 'proto.TotalFileRateDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.TaskTimeDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.TaskTimeDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.TaskTimeDataPoint.displayName = 'proto.TaskTimeDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.RdsMemoryUsageDataPoint = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.RdsMemoryUsageDataPoint, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.RdsMemoryUsageDataPoint.displayName = 'proto.RdsMemoryUsageDataPoint';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.DataPointsResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.DataPointsResponse.repeatedFields_, null);
+};
+goog.inherits(proto.DataPointsResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.DataPointsResponse.displayName = 'proto.DataPointsResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.MetadataResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.MetadataResponse.repeatedFields_, null);
+};
+goog.inherits(proto.MetadataResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.MetadataResponse.displayName = 'proto.MetadataResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.ToplogyQuery = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.ToplogyQuery, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.ToplogyQuery.displayName = 'proto.ToplogyQuery';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.TopologyResponseNode = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.TopologyResponseNode.repeatedFields_, null);
+};
+goog.inherits(proto.TopologyResponseNode, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.TopologyResponseNode.displayName = 'proto.TopologyResponseNode';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.TopologyResponseEdge = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.TopologyResponseEdge.repeatedFields_, null);
+};
+goog.inherits(proto.TopologyResponseEdge, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.TopologyResponseEdge.displayName = 'proto.TopologyResponseEdge';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.TopologyResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.TopologyResponse.repeatedFields_, null);
+};
+goog.inherits(proto.TopologyResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.TopologyResponse.displayName = 'proto.TopologyResponse';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.GroupDelayQuery = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.GroupDelayQuery, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.GroupDelayQuery.displayName = 'proto.GroupDelayQuery';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.GroupDelayResponseItem = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.GroupDelayResponseItem, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.GroupDelayResponseItem.displayName = 'proto.GroupDelayResponseItem';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.GroupDelayResponse = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, proto.GroupDelayResponse.repeatedFields_, null);
+};
+goog.inherits(proto.GroupDelayResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  /**
+   * @public
+   * @override
+   */
+  proto.GroupDelayResponse.displayName = 'proto.GroupDelayResponse';
+}
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.DataPointsQuery.prototype.toObject = function(opt_includeInstance) {
+  return proto.DataPointsQuery.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.DataPointsQuery} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.DataPointsQuery.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    fromtimestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    totimestamp: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    beamtimefilter: jspb.Message.getFieldWithDefault(msg, 4, ""),
+    sourcefilter: jspb.Message.getFieldWithDefault(msg, 5, ""),
+    receiverfilter: jspb.Message.getFieldWithDefault(msg, 6, ""),
+    frompipelinestepfilter: jspb.Message.getFieldWithDefault(msg, 7, ""),
+    topipelinestepfilter: jspb.Message.getFieldWithDefault(msg, 8, ""),
+    pipelinequerymode: jspb.Message.getFieldWithDefault(msg, 9, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.DataPointsQuery}
+ */
+proto.DataPointsQuery.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.DataPointsQuery;
+  return proto.DataPointsQuery.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.DataPointsQuery} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.DataPointsQuery}
+ */
+proto.DataPointsQuery.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setFromtimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotimestamp(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBeamtimefilter(value);
+      break;
+    case 5:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setSourcefilter(value);
+      break;
+    case 6:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setReceiverfilter(value);
+      break;
+    case 7:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setFrompipelinestepfilter(value);
+      break;
+    case 8:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setTopipelinestepfilter(value);
+      break;
+    case 9:
+      var value = /** @type {!proto.PipelineConnectionQueryMode} */ (reader.readEnum());
+      msg.setPipelinequerymode(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.DataPointsQuery.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.DataPointsQuery.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.DataPointsQuery} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.DataPointsQuery.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getFromtimestamp();
+  if (f !== 0) {
+    writer.writeUint64(
+      1,
+      f
+    );
+  }
+  f = message.getTotimestamp();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+  f = message.getBeamtimefilter();
+  if (f.length > 0) {
+    writer.writeString(
+      4,
+      f
+    );
+  }
+  f = message.getSourcefilter();
+  if (f.length > 0) {
+    writer.writeString(
+      5,
+      f
+    );
+  }
+  f = message.getReceiverfilter();
+  if (f.length > 0) {
+    writer.writeString(
+      6,
+      f
+    );
+  }
+  f = message.getFrompipelinestepfilter();
+  if (f.length > 0) {
+    writer.writeString(
+      7,
+      f
+    );
+  }
+  f = message.getTopipelinestepfilter();
+  if (f.length > 0) {
+    writer.writeString(
+      8,
+      f
+    );
+  }
+  f = message.getPipelinequerymode();
+  if (f !== 0.0) {
+    writer.writeEnum(
+      9,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint64 fromTimestamp = 1;
+ * @return {number}
+ */
+proto.DataPointsQuery.prototype.getFromtimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.DataPointsQuery} returns this
+ */
+proto.DataPointsQuery.prototype.setFromtimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 toTimestamp = 2;
+ * @return {number}
+ */
+proto.DataPointsQuery.prototype.getTotimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.DataPointsQuery} returns this
+ */
+proto.DataPointsQuery.prototype.setTotimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional string beamtimeFilter = 4;
+ * @return {string}
+ */
+proto.DataPointsQuery.prototype.getBeamtimefilter = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.DataPointsQuery} returns this
+ */
+proto.DataPointsQuery.prototype.setBeamtimefilter = function(value) {
+  return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+/**
+ * optional string sourceFilter = 5;
+ * @return {string}
+ */
+proto.DataPointsQuery.prototype.getSourcefilter = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.DataPointsQuery} returns this
+ */
+proto.DataPointsQuery.prototype.setSourcefilter = function(value) {
+  return jspb.Message.setProto3StringField(this, 5, value);
+};
+
+
+/**
+ * optional string receiverFilter = 6;
+ * @return {string}
+ */
+proto.DataPointsQuery.prototype.getReceiverfilter = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.DataPointsQuery} returns this
+ */
+proto.DataPointsQuery.prototype.setReceiverfilter = function(value) {
+  return jspb.Message.setProto3StringField(this, 6, value);
+};
+
+
+/**
+ * optional string fromPipelineStepFilter = 7;
+ * @return {string}
+ */
+proto.DataPointsQuery.prototype.getFrompipelinestepfilter = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.DataPointsQuery} returns this
+ */
+proto.DataPointsQuery.prototype.setFrompipelinestepfilter = function(value) {
+  return jspb.Message.setProto3StringField(this, 7, value);
+};
+
+
+/**
+ * optional string toPipelineStepFilter = 8;
+ * @return {string}
+ */
+proto.DataPointsQuery.prototype.getTopipelinestepfilter = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.DataPointsQuery} returns this
+ */
+proto.DataPointsQuery.prototype.setTopipelinestepfilter = function(value) {
+  return jspb.Message.setProto3StringField(this, 8, value);
+};
+
+
+/**
+ * optional PipelineConnectionQueryMode pipelineQueryMode = 9;
+ * @return {!proto.PipelineConnectionQueryMode}
+ */
+proto.DataPointsQuery.prototype.getPipelinequerymode = function() {
+  return /** @type {!proto.PipelineConnectionQueryMode} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
+};
+
+
+/**
+ * @param {!proto.PipelineConnectionQueryMode} value
+ * @return {!proto.DataPointsQuery} returns this
+ */
+proto.DataPointsQuery.prototype.setPipelinequerymode = function(value) {
+  return jspb.Message.setProto3EnumField(this, 9, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.TotalTransferRateDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.TotalTransferRateDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.TotalTransferRateDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TotalTransferRateDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    totalbytespersecrecv: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    totalbytespersecsend: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    totalbytespersecrdssend: jspb.Message.getFieldWithDefault(msg, 3, 0),
+    totalbytespersecftssend: jspb.Message.getFieldWithDefault(msg, 4, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.TotalTransferRateDataPoint}
+ */
+proto.TotalTransferRateDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.TotalTransferRateDataPoint;
+  return proto.TotalTransferRateDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.TotalTransferRateDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.TotalTransferRateDataPoint}
+ */
+proto.TotalTransferRateDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalbytespersecrecv(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalbytespersecsend(value);
+      break;
+    case 3:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalbytespersecrdssend(value);
+      break;
+    case 4:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalbytespersecftssend(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.TotalTransferRateDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.TotalTransferRateDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.TotalTransferRateDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TotalTransferRateDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTotalbytespersecrecv();
+  if (f !== 0) {
+    writer.writeUint64(
+      1,
+      f
+    );
+  }
+  f = message.getTotalbytespersecsend();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+  f = message.getTotalbytespersecrdssend();
+  if (f !== 0) {
+    writer.writeUint64(
+      3,
+      f
+    );
+  }
+  f = message.getTotalbytespersecftssend();
+  if (f !== 0) {
+    writer.writeUint64(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint64 totalBytesPerSecRecv = 1;
+ * @return {number}
+ */
+proto.TotalTransferRateDataPoint.prototype.getTotalbytespersecrecv = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TotalTransferRateDataPoint} returns this
+ */
+proto.TotalTransferRateDataPoint.prototype.setTotalbytespersecrecv = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 totalBytesPerSecSend = 2;
+ * @return {number}
+ */
+proto.TotalTransferRateDataPoint.prototype.getTotalbytespersecsend = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TotalTransferRateDataPoint} returns this
+ */
+proto.TotalTransferRateDataPoint.prototype.setTotalbytespersecsend = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional uint64 totalBytesPerSecRdsSend = 3;
+ * @return {number}
+ */
+proto.TotalTransferRateDataPoint.prototype.getTotalbytespersecrdssend = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TotalTransferRateDataPoint} returns this
+ */
+proto.TotalTransferRateDataPoint.prototype.setTotalbytespersecrdssend = function(value) {
+  return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+/**
+ * optional uint64 totalBytesPerSecFtsSend = 4;
+ * @return {number}
+ */
+proto.TotalTransferRateDataPoint.prototype.getTotalbytespersecftssend = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TotalTransferRateDataPoint} returns this
+ */
+proto.TotalTransferRateDataPoint.prototype.setTotalbytespersecftssend = function(value) {
+  return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.TotalFileRateDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.TotalFileRateDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.TotalFileRateDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TotalFileRateDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    totalrequests: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    cachemisses: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    fromcache: jspb.Message.getFieldWithDefault(msg, 3, 0),
+    fromdisk: jspb.Message.getFieldWithDefault(msg, 4, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.TotalFileRateDataPoint}
+ */
+proto.TotalFileRateDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.TotalFileRateDataPoint;
+  return proto.TotalFileRateDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.TotalFileRateDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.TotalFileRateDataPoint}
+ */
+proto.TotalFileRateDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setTotalrequests(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setCachemisses(value);
+      break;
+    case 3:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setFromcache(value);
+      break;
+    case 4:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setFromdisk(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.TotalFileRateDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.TotalFileRateDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.TotalFileRateDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TotalFileRateDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTotalrequests();
+  if (f !== 0) {
+    writer.writeUint32(
+      1,
+      f
+    );
+  }
+  f = message.getCachemisses();
+  if (f !== 0) {
+    writer.writeUint32(
+      2,
+      f
+    );
+  }
+  f = message.getFromcache();
+  if (f !== 0) {
+    writer.writeUint32(
+      3,
+      f
+    );
+  }
+  f = message.getFromdisk();
+  if (f !== 0) {
+    writer.writeUint32(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint32 totalRequests = 1;
+ * @return {number}
+ */
+proto.TotalFileRateDataPoint.prototype.getTotalrequests = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TotalFileRateDataPoint} returns this
+ */
+proto.TotalFileRateDataPoint.prototype.setTotalrequests = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 cacheMisses = 2;
+ * @return {number}
+ */
+proto.TotalFileRateDataPoint.prototype.getCachemisses = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TotalFileRateDataPoint} returns this
+ */
+proto.TotalFileRateDataPoint.prototype.setCachemisses = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional uint32 fromCache = 3;
+ * @return {number}
+ */
+proto.TotalFileRateDataPoint.prototype.getFromcache = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TotalFileRateDataPoint} returns this
+ */
+proto.TotalFileRateDataPoint.prototype.setFromcache = function(value) {
+  return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+/**
+ * optional uint32 fromDisk = 4;
+ * @return {number}
+ */
+proto.TotalFileRateDataPoint.prototype.getFromdisk = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TotalFileRateDataPoint} returns this
+ */
+proto.TotalFileRateDataPoint.prototype.setFromdisk = function(value) {
+  return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.TaskTimeDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.TaskTimeDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.TaskTimeDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TaskTimeDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    receiveiotimeus: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    writetodisktimeus: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    writetodatabasetimeus: jspb.Message.getFieldWithDefault(msg, 3, 0),
+    rdssendtoconsumertimeus: jspb.Message.getFieldWithDefault(msg, 4, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.TaskTimeDataPoint}
+ */
+proto.TaskTimeDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.TaskTimeDataPoint;
+  return proto.TaskTimeDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.TaskTimeDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.TaskTimeDataPoint}
+ */
+proto.TaskTimeDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setReceiveiotimeus(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setWritetodisktimeus(value);
+      break;
+    case 3:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setWritetodatabasetimeus(value);
+      break;
+    case 4:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setRdssendtoconsumertimeus(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.TaskTimeDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.TaskTimeDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.TaskTimeDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TaskTimeDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getReceiveiotimeus();
+  if (f !== 0) {
+    writer.writeUint32(
+      1,
+      f
+    );
+  }
+  f = message.getWritetodisktimeus();
+  if (f !== 0) {
+    writer.writeUint32(
+      2,
+      f
+    );
+  }
+  f = message.getWritetodatabasetimeus();
+  if (f !== 0) {
+    writer.writeUint32(
+      3,
+      f
+    );
+  }
+  f = message.getRdssendtoconsumertimeus();
+  if (f !== 0) {
+    writer.writeUint32(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint32 receiveIoTimeUs = 1;
+ * @return {number}
+ */
+proto.TaskTimeDataPoint.prototype.getReceiveiotimeus = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TaskTimeDataPoint} returns this
+ */
+proto.TaskTimeDataPoint.prototype.setReceiveiotimeus = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 writeToDiskTimeUs = 2;
+ * @return {number}
+ */
+proto.TaskTimeDataPoint.prototype.getWritetodisktimeus = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TaskTimeDataPoint} returns this
+ */
+proto.TaskTimeDataPoint.prototype.setWritetodisktimeus = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional uint32 writeToDatabaseTimeUs = 3;
+ * @return {number}
+ */
+proto.TaskTimeDataPoint.prototype.getWritetodatabasetimeus = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TaskTimeDataPoint} returns this
+ */
+proto.TaskTimeDataPoint.prototype.setWritetodatabasetimeus = function(value) {
+  return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+/**
+ * optional uint32 rdsSendToConsumerTimeUs = 4;
+ * @return {number}
+ */
+proto.TaskTimeDataPoint.prototype.getRdssendtoconsumertimeus = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TaskTimeDataPoint} returns this
+ */
+proto.TaskTimeDataPoint.prototype.setRdssendtoconsumertimeus = function(value) {
+  return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.RdsMemoryUsageDataPoint.prototype.toObject = function(opt_includeInstance) {
+  return proto.RdsMemoryUsageDataPoint.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.RdsMemoryUsageDataPoint} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.RdsMemoryUsageDataPoint.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    totalusedmemory: jspb.Message.getFieldWithDefault(msg, 1, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.RdsMemoryUsageDataPoint}
+ */
+proto.RdsMemoryUsageDataPoint.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.RdsMemoryUsageDataPoint;
+  return proto.RdsMemoryUsageDataPoint.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.RdsMemoryUsageDataPoint} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.RdsMemoryUsageDataPoint}
+ */
+proto.RdsMemoryUsageDataPoint.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotalusedmemory(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.RdsMemoryUsageDataPoint.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.RdsMemoryUsageDataPoint.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.RdsMemoryUsageDataPoint} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.RdsMemoryUsageDataPoint.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getTotalusedmemory();
+  if (f !== 0) {
+    writer.writeUint64(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint64 totalUsedMemory = 1;
+ * @return {number}
+ */
+proto.RdsMemoryUsageDataPoint.prototype.getTotalusedmemory = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.RdsMemoryUsageDataPoint} returns this
+ */
+proto.RdsMemoryUsageDataPoint.prototype.setTotalusedmemory = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.DataPointsResponse.repeatedFields_ = [3,4,5,6];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.DataPointsResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.DataPointsResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.DataPointsResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.DataPointsResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    starttimestampinsec: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    timeintervalinsec: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    transferratesList: jspb.Message.toObjectList(msg.getTransferratesList(),
+    proto.TotalTransferRateDataPoint.toObject, includeInstance),
+    fileratesList: jspb.Message.toObjectList(msg.getFileratesList(),
+    proto.TotalFileRateDataPoint.toObject, includeInstance),
+    tasktimesList: jspb.Message.toObjectList(msg.getTasktimesList(),
+    proto.TaskTimeDataPoint.toObject, includeInstance),
+    memoryusagesList: jspb.Message.toObjectList(msg.getMemoryusagesList(),
+    proto.RdsMemoryUsageDataPoint.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.DataPointsResponse}
+ */
+proto.DataPointsResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.DataPointsResponse;
+  return proto.DataPointsResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.DataPointsResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.DataPointsResponse}
+ */
+proto.DataPointsResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setStarttimestampinsec(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setTimeintervalinsec(value);
+      break;
+    case 3:
+      var value = new proto.TotalTransferRateDataPoint;
+      reader.readMessage(value,proto.TotalTransferRateDataPoint.deserializeBinaryFromReader);
+      msg.addTransferrates(value);
+      break;
+    case 4:
+      var value = new proto.TotalFileRateDataPoint;
+      reader.readMessage(value,proto.TotalFileRateDataPoint.deserializeBinaryFromReader);
+      msg.addFilerates(value);
+      break;
+    case 5:
+      var value = new proto.TaskTimeDataPoint;
+      reader.readMessage(value,proto.TaskTimeDataPoint.deserializeBinaryFromReader);
+      msg.addTasktimes(value);
+      break;
+    case 6:
+      var value = new proto.RdsMemoryUsageDataPoint;
+      reader.readMessage(value,proto.RdsMemoryUsageDataPoint.deserializeBinaryFromReader);
+      msg.addMemoryusages(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.DataPointsResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.DataPointsResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.DataPointsResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.DataPointsResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getStarttimestampinsec();
+  if (f !== 0) {
+    writer.writeUint64(
+      1,
+      f
+    );
+  }
+  f = message.getTimeintervalinsec();
+  if (f !== 0) {
+    writer.writeUint32(
+      2,
+      f
+    );
+  }
+  f = message.getTransferratesList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      3,
+      f,
+      proto.TotalTransferRateDataPoint.serializeBinaryToWriter
+    );
+  }
+  f = message.getFileratesList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      4,
+      f,
+      proto.TotalFileRateDataPoint.serializeBinaryToWriter
+    );
+  }
+  f = message.getTasktimesList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      5,
+      f,
+      proto.TaskTimeDataPoint.serializeBinaryToWriter
+    );
+  }
+  f = message.getMemoryusagesList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      6,
+      f,
+      proto.RdsMemoryUsageDataPoint.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * optional uint64 startTimestampInSec = 1;
+ * @return {number}
+ */
+proto.DataPointsResponse.prototype.getStarttimestampinsec = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.DataPointsResponse} returns this
+ */
+proto.DataPointsResponse.prototype.setStarttimestampinsec = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 timeIntervalInSec = 2;
+ * @return {number}
+ */
+proto.DataPointsResponse.prototype.getTimeintervalinsec = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.DataPointsResponse} returns this
+ */
+proto.DataPointsResponse.prototype.setTimeintervalinsec = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * repeated TotalTransferRateDataPoint transferRates = 3;
+ * @return {!Array<!proto.TotalTransferRateDataPoint>}
+ */
+proto.DataPointsResponse.prototype.getTransferratesList = function() {
+  return /** @type{!Array<!proto.TotalTransferRateDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.TotalTransferRateDataPoint, 3));
+};
+
+
+/**
+ * @param {!Array<!proto.TotalTransferRateDataPoint>} value
+ * @return {!proto.DataPointsResponse} returns this
+*/
+proto.DataPointsResponse.prototype.setTransferratesList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 3, value);
+};
+
+
+/**
+ * @param {!proto.TotalTransferRateDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.TotalTransferRateDataPoint}
+ */
+proto.DataPointsResponse.prototype.addTransferrates = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.TotalTransferRateDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.DataPointsResponse} returns this
+ */
+proto.DataPointsResponse.prototype.clearTransferratesList = function() {
+  return this.setTransferratesList([]);
+};
+
+
+/**
+ * repeated TotalFileRateDataPoint fileRates = 4;
+ * @return {!Array<!proto.TotalFileRateDataPoint>}
+ */
+proto.DataPointsResponse.prototype.getFileratesList = function() {
+  return /** @type{!Array<!proto.TotalFileRateDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.TotalFileRateDataPoint, 4));
+};
+
+
+/**
+ * @param {!Array<!proto.TotalFileRateDataPoint>} value
+ * @return {!proto.DataPointsResponse} returns this
+*/
+proto.DataPointsResponse.prototype.setFileratesList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 4, value);
+};
+
+
+/**
+ * @param {!proto.TotalFileRateDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.TotalFileRateDataPoint}
+ */
+proto.DataPointsResponse.prototype.addFilerates = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.TotalFileRateDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.DataPointsResponse} returns this
+ */
+proto.DataPointsResponse.prototype.clearFileratesList = function() {
+  return this.setFileratesList([]);
+};
+
+
+/**
+ * repeated TaskTimeDataPoint taskTimes = 5;
+ * @return {!Array<!proto.TaskTimeDataPoint>}
+ */
+proto.DataPointsResponse.prototype.getTasktimesList = function() {
+  return /** @type{!Array<!proto.TaskTimeDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.TaskTimeDataPoint, 5));
+};
+
+
+/**
+ * @param {!Array<!proto.TaskTimeDataPoint>} value
+ * @return {!proto.DataPointsResponse} returns this
+*/
+proto.DataPointsResponse.prototype.setTasktimesList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 5, value);
+};
+
+
+/**
+ * @param {!proto.TaskTimeDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.TaskTimeDataPoint}
+ */
+proto.DataPointsResponse.prototype.addTasktimes = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.TaskTimeDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.DataPointsResponse} returns this
+ */
+proto.DataPointsResponse.prototype.clearTasktimesList = function() {
+  return this.setTasktimesList([]);
+};
+
+
+/**
+ * repeated RdsMemoryUsageDataPoint memoryUsages = 6;
+ * @return {!Array<!proto.RdsMemoryUsageDataPoint>}
+ */
+proto.DataPointsResponse.prototype.getMemoryusagesList = function() {
+  return /** @type{!Array<!proto.RdsMemoryUsageDataPoint>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.RdsMemoryUsageDataPoint, 6));
+};
+
+
+/**
+ * @param {!Array<!proto.RdsMemoryUsageDataPoint>} value
+ * @return {!proto.DataPointsResponse} returns this
+*/
+proto.DataPointsResponse.prototype.setMemoryusagesList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 6, value);
+};
+
+
+/**
+ * @param {!proto.RdsMemoryUsageDataPoint=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.RdsMemoryUsageDataPoint}
+ */
+proto.DataPointsResponse.prototype.addMemoryusages = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.RdsMemoryUsageDataPoint, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.DataPointsResponse} returns this
+ */
+proto.DataPointsResponse.prototype.clearMemoryusagesList = function() {
+  return this.setMemoryusagesList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.MetadataResponse.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.MetadataResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.MetadataResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.MetadataResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.MetadataResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    clustername: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    availablebeamtimesList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.MetadataResponse}
+ */
+proto.MetadataResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.MetadataResponse;
+  return proto.MetadataResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.MetadataResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.MetadataResponse}
+ */
+proto.MetadataResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setClustername(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addAvailablebeamtimes(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.MetadataResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.MetadataResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.MetadataResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.MetadataResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getClustername();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getAvailablebeamtimesList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string clusterName = 1;
+ * @return {string}
+ */
+proto.MetadataResponse.prototype.getClustername = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.MetadataResponse} returns this
+ */
+proto.MetadataResponse.prototype.setClustername = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * repeated string availableBeamtimes = 2;
+ * @return {!Array<string>}
+ */
+proto.MetadataResponse.prototype.getAvailablebeamtimesList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.MetadataResponse} returns this
+ */
+proto.MetadataResponse.prototype.setAvailablebeamtimesList = function(value) {
+  return jspb.Message.setField(this, 2, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.MetadataResponse} returns this
+ */
+proto.MetadataResponse.prototype.addAvailablebeamtimes = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.MetadataResponse} returns this
+ */
+proto.MetadataResponse.prototype.clearAvailablebeamtimesList = function() {
+  return this.setAvailablebeamtimesList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.ToplogyQuery.prototype.toObject = function(opt_includeInstance) {
+  return proto.ToplogyQuery.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.ToplogyQuery} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ToplogyQuery.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    fromtimestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    totimestamp: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    beamtimefilter: jspb.Message.getFieldWithDefault(msg, 3, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.ToplogyQuery}
+ */
+proto.ToplogyQuery.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.ToplogyQuery;
+  return proto.ToplogyQuery.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.ToplogyQuery} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.ToplogyQuery}
+ */
+proto.ToplogyQuery.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setFromtimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotimestamp(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBeamtimefilter(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.ToplogyQuery.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.ToplogyQuery.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.ToplogyQuery} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.ToplogyQuery.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getFromtimestamp();
+  if (f !== 0) {
+    writer.writeUint64(
+      1,
+      f
+    );
+  }
+  f = message.getTotimestamp();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+  f = message.getBeamtimefilter();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint64 fromTimestamp = 1;
+ * @return {number}
+ */
+proto.ToplogyQuery.prototype.getFromtimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ToplogyQuery} returns this
+ */
+proto.ToplogyQuery.prototype.setFromtimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 toTimestamp = 2;
+ * @return {number}
+ */
+proto.ToplogyQuery.prototype.getTotimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.ToplogyQuery} returns this
+ */
+proto.ToplogyQuery.prototype.setTotimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional string beamtimeFilter = 3;
+ * @return {string}
+ */
+proto.ToplogyQuery.prototype.getBeamtimefilter = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.ToplogyQuery} returns this
+ */
+proto.ToplogyQuery.prototype.setBeamtimefilter = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.TopologyResponseNode.repeatedFields_ = [3,4];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.TopologyResponseNode.prototype.toObject = function(opt_includeInstance) {
+  return proto.TopologyResponseNode.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.TopologyResponseNode} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TopologyResponseNode.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    nodeid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    level: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    consumerinstancesList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,
+    producerinstancesList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.TopologyResponseNode}
+ */
+proto.TopologyResponseNode.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.TopologyResponseNode;
+  return proto.TopologyResponseNode.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.TopologyResponseNode} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.TopologyResponseNode}
+ */
+proto.TopologyResponseNode.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setNodeid(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setLevel(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addConsumerinstances(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addProducerinstances(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.TopologyResponseNode.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.TopologyResponseNode.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.TopologyResponseNode} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TopologyResponseNode.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getNodeid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getLevel();
+  if (f !== 0) {
+    writer.writeUint32(
+      2,
+      f
+    );
+  }
+  f = message.getConsumerinstancesList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      3,
+      f
+    );
+  }
+  f = message.getProducerinstancesList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string nodeId = 1;
+ * @return {string}
+ */
+proto.TopologyResponseNode.prototype.getNodeid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.TopologyResponseNode} returns this
+ */
+proto.TopologyResponseNode.prototype.setNodeid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 level = 2;
+ * @return {number}
+ */
+proto.TopologyResponseNode.prototype.getLevel = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.TopologyResponseNode} returns this
+ */
+proto.TopologyResponseNode.prototype.setLevel = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * repeated string consumerInstances = 3;
+ * @return {!Array<string>}
+ */
+proto.TopologyResponseNode.prototype.getConsumerinstancesList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 3));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.TopologyResponseNode} returns this
+ */
+proto.TopologyResponseNode.prototype.setConsumerinstancesList = function(value) {
+  return jspb.Message.setField(this, 3, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.TopologyResponseNode} returns this
+ */
+proto.TopologyResponseNode.prototype.addConsumerinstances = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 3, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.TopologyResponseNode} returns this
+ */
+proto.TopologyResponseNode.prototype.clearConsumerinstancesList = function() {
+  return this.setConsumerinstancesList([]);
+};
+
+
+/**
+ * repeated string producerInstances = 4;
+ * @return {!Array<string>}
+ */
+proto.TopologyResponseNode.prototype.getProducerinstancesList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 4));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.TopologyResponseNode} returns this
+ */
+proto.TopologyResponseNode.prototype.setProducerinstancesList = function(value) {
+  return jspb.Message.setField(this, 4, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.TopologyResponseNode} returns this
+ */
+proto.TopologyResponseNode.prototype.addProducerinstances = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 4, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.TopologyResponseNode} returns this
+ */
+proto.TopologyResponseNode.prototype.clearProducerinstancesList = function() {
+  return this.setProducerinstancesList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.TopologyResponseEdge.repeatedFields_ = [4];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.TopologyResponseEdge.prototype.toObject = function(opt_includeInstance) {
+  return proto.TopologyResponseEdge.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.TopologyResponseEdge} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TopologyResponseEdge.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    fromnodeid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    tonodeid: jspb.Message.getFieldWithDefault(msg, 2, ""),
+    sourcename: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    involvedreceiversList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.TopologyResponseEdge}
+ */
+proto.TopologyResponseEdge.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.TopologyResponseEdge;
+  return proto.TopologyResponseEdge.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.TopologyResponseEdge} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.TopologyResponseEdge}
+ */
+proto.TopologyResponseEdge.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setFromnodeid(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setTonodeid(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setSourcename(value);
+      break;
+    case 4:
+      var value = /** @type {string} */ (reader.readString());
+      msg.addInvolvedreceivers(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.TopologyResponseEdge.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.TopologyResponseEdge.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.TopologyResponseEdge} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TopologyResponseEdge.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getFromnodeid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getTonodeid();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+  f = message.getSourcename();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getInvolvedreceiversList();
+  if (f.length > 0) {
+    writer.writeRepeatedString(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string fromNodeId = 1;
+ * @return {string}
+ */
+proto.TopologyResponseEdge.prototype.getFromnodeid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.TopologyResponseEdge} returns this
+ */
+proto.TopologyResponseEdge.prototype.setFromnodeid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional string toNodeId = 2;
+ * @return {string}
+ */
+proto.TopologyResponseEdge.prototype.getTonodeid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.TopologyResponseEdge} returns this
+ */
+proto.TopologyResponseEdge.prototype.setTonodeid = function(value) {
+  return jspb.Message.setProto3StringField(this, 2, value);
+};
+
+
+/**
+ * optional string sourceName = 3;
+ * @return {string}
+ */
+proto.TopologyResponseEdge.prototype.getSourcename = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.TopologyResponseEdge} returns this
+ */
+proto.TopologyResponseEdge.prototype.setSourcename = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * repeated string involvedReceivers = 4;
+ * @return {!Array<string>}
+ */
+proto.TopologyResponseEdge.prototype.getInvolvedreceiversList = function() {
+  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 4));
+};
+
+
+/**
+ * @param {!Array<string>} value
+ * @return {!proto.TopologyResponseEdge} returns this
+ */
+proto.TopologyResponseEdge.prototype.setInvolvedreceiversList = function(value) {
+  return jspb.Message.setField(this, 4, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ * @return {!proto.TopologyResponseEdge} returns this
+ */
+proto.TopologyResponseEdge.prototype.addInvolvedreceivers = function(value, opt_index) {
+  return jspb.Message.addToRepeatedField(this, 4, value, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.TopologyResponseEdge} returns this
+ */
+proto.TopologyResponseEdge.prototype.clearInvolvedreceiversList = function() {
+  return this.setInvolvedreceiversList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.TopologyResponse.repeatedFields_ = [1,2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.TopologyResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.TopologyResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.TopologyResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TopologyResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    nodesList: jspb.Message.toObjectList(msg.getNodesList(),
+    proto.TopologyResponseNode.toObject, includeInstance),
+    edgesList: jspb.Message.toObjectList(msg.getEdgesList(),
+    proto.TopologyResponseEdge.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.TopologyResponse}
+ */
+proto.TopologyResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.TopologyResponse;
+  return proto.TopologyResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.TopologyResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.TopologyResponse}
+ */
+proto.TopologyResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.TopologyResponseNode;
+      reader.readMessage(value,proto.TopologyResponseNode.deserializeBinaryFromReader);
+      msg.addNodes(value);
+      break;
+    case 2:
+      var value = new proto.TopologyResponseEdge;
+      reader.readMessage(value,proto.TopologyResponseEdge.deserializeBinaryFromReader);
+      msg.addEdges(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.TopologyResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.TopologyResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.TopologyResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.TopologyResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getNodesList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      1,
+      f,
+      proto.TopologyResponseNode.serializeBinaryToWriter
+    );
+  }
+  f = message.getEdgesList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      2,
+      f,
+      proto.TopologyResponseEdge.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * repeated TopologyResponseNode nodes = 1;
+ * @return {!Array<!proto.TopologyResponseNode>}
+ */
+proto.TopologyResponse.prototype.getNodesList = function() {
+  return /** @type{!Array<!proto.TopologyResponseNode>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.TopologyResponseNode, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.TopologyResponseNode>} value
+ * @return {!proto.TopologyResponse} returns this
+*/
+proto.TopologyResponse.prototype.setNodesList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.TopologyResponseNode=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.TopologyResponseNode}
+ */
+proto.TopologyResponse.prototype.addNodes = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.TopologyResponseNode, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.TopologyResponse} returns this
+ */
+proto.TopologyResponse.prototype.clearNodesList = function() {
+  return this.setNodesList([]);
+};
+
+
+/**
+ * repeated TopologyResponseEdge edges = 2;
+ * @return {!Array<!proto.TopologyResponseEdge>}
+ */
+proto.TopologyResponse.prototype.getEdgesList = function() {
+  return /** @type{!Array<!proto.TopologyResponseEdge>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.TopologyResponseEdge, 2));
+};
+
+
+/**
+ * @param {!Array<!proto.TopologyResponseEdge>} value
+ * @return {!proto.TopologyResponse} returns this
+*/
+proto.TopologyResponse.prototype.setEdgesList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.TopologyResponseEdge=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.TopologyResponseEdge}
+ */
+proto.TopologyResponse.prototype.addEdges = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.TopologyResponseEdge, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.TopologyResponse} returns this
+ */
+proto.TopologyResponse.prototype.clearEdgesList = function() {
+  return this.setEdgesList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.GroupDelayQuery.prototype.toObject = function(opt_includeInstance) {
+  return proto.GroupDelayQuery.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.GroupDelayQuery} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.GroupDelayQuery.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    fromtimestamp: jspb.Message.getFieldWithDefault(msg, 1, 0),
+    totimestamp: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    beamtimefilter: jspb.Message.getFieldWithDefault(msg, 3, "")
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.GroupDelayQuery}
+ */
+proto.GroupDelayQuery.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.GroupDelayQuery;
+  return proto.GroupDelayQuery.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.GroupDelayQuery} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.GroupDelayQuery}
+ */
+proto.GroupDelayQuery.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setFromtimestamp(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint64());
+      msg.setTotimestamp(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setBeamtimefilter(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.GroupDelayQuery.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.GroupDelayQuery.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.GroupDelayQuery} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.GroupDelayQuery.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getFromtimestamp();
+  if (f !== 0) {
+    writer.writeUint64(
+      1,
+      f
+    );
+  }
+  f = message.getTotimestamp();
+  if (f !== 0) {
+    writer.writeUint64(
+      2,
+      f
+    );
+  }
+  f = message.getBeamtimefilter();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional uint64 fromTimestamp = 1;
+ * @return {number}
+ */
+proto.GroupDelayQuery.prototype.getFromtimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.GroupDelayQuery} returns this
+ */
+proto.GroupDelayQuery.prototype.setFromtimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional uint64 toTimestamp = 2;
+ * @return {number}
+ */
+proto.GroupDelayQuery.prototype.getTotimestamp = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.GroupDelayQuery} returns this
+ */
+proto.GroupDelayQuery.prototype.setTotimestamp = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional string beamtimeFilter = 3;
+ * @return {string}
+ */
+proto.GroupDelayQuery.prototype.getBeamtimefilter = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.GroupDelayQuery} returns this
+ */
+proto.GroupDelayQuery.prototype.setBeamtimefilter = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.GroupDelayResponseItem.prototype.toObject = function(opt_includeInstance) {
+  return proto.GroupDelayResponseItem.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.GroupDelayResponseItem} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.GroupDelayResponseItem.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    groupid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+    delayms: jspb.Message.getFieldWithDefault(msg, 2, 0),
+    pipelinestep: jspb.Message.getFieldWithDefault(msg, 3, ""),
+    idx: jspb.Message.getFieldWithDefault(msg, 4, 0)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.GroupDelayResponseItem}
+ */
+proto.GroupDelayResponseItem.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.GroupDelayResponseItem;
+  return proto.GroupDelayResponseItem.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.GroupDelayResponseItem} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.GroupDelayResponseItem}
+ */
+proto.GroupDelayResponseItem.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setGroupid(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setDelayms(value);
+      break;
+    case 3:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setPipelinestep(value);
+      break;
+    case 4:
+      var value = /** @type {number} */ (reader.readUint32());
+      msg.setIdx(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.GroupDelayResponseItem.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.GroupDelayResponseItem.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.GroupDelayResponseItem} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.GroupDelayResponseItem.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getGroupid();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = message.getDelayms();
+  if (f !== 0) {
+    writer.writeUint32(
+      2,
+      f
+    );
+  }
+  f = message.getPipelinestep();
+  if (f.length > 0) {
+    writer.writeString(
+      3,
+      f
+    );
+  }
+  f = message.getIdx();
+  if (f !== 0) {
+    writer.writeUint32(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * optional string groupId = 1;
+ * @return {string}
+ */
+proto.GroupDelayResponseItem.prototype.getGroupid = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.GroupDelayResponseItem} returns this
+ */
+proto.GroupDelayResponseItem.prototype.setGroupid = function(value) {
+  return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional uint32 delayMs = 2;
+ * @return {number}
+ */
+proto.GroupDelayResponseItem.prototype.getDelayms = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.GroupDelayResponseItem} returns this
+ */
+proto.GroupDelayResponseItem.prototype.setDelayms = function(value) {
+  return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional string pipelineStep = 3;
+ * @return {string}
+ */
+proto.GroupDelayResponseItem.prototype.getPipelinestep = function() {
+  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.GroupDelayResponseItem} returns this
+ */
+proto.GroupDelayResponseItem.prototype.setPipelinestep = function(value) {
+  return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+/**
+ * optional uint32 idx = 4;
+ * @return {number}
+ */
+proto.GroupDelayResponseItem.prototype.getIdx = function() {
+  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.GroupDelayResponseItem} returns this
+ */
+proto.GroupDelayResponseItem.prototype.setIdx = function(value) {
+  return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array<number>}
+ * @const
+ */
+proto.GroupDelayResponse.repeatedFields_ = [1];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ *     JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.GroupDelayResponse.prototype.toObject = function(opt_includeInstance) {
+  return proto.GroupDelayResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ *     the JSPB instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.GroupDelayResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.GroupDelayResponse.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    groupidsList: jspb.Message.toObjectList(msg.getGroupidsList(),
+    proto.GroupDelayResponseItem.toObject, includeInstance)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg;
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.GroupDelayResponse}
+ */
+proto.GroupDelayResponse.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.GroupDelayResponse;
+  return proto.GroupDelayResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.GroupDelayResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.GroupDelayResponse}
+ */
+proto.GroupDelayResponse.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.GroupDelayResponseItem;
+      reader.readMessage(value,proto.GroupDelayResponseItem.deserializeBinaryFromReader);
+      msg.addGroupids(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.GroupDelayResponse.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  proto.GroupDelayResponse.serializeBinaryToWriter(this, writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.GroupDelayResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.GroupDelayResponse.serializeBinaryToWriter = function(message, writer) {
+  var f = undefined;
+  f = message.getGroupidsList();
+  if (f.length > 0) {
+    writer.writeRepeatedMessage(
+      1,
+      f,
+      proto.GroupDelayResponseItem.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * repeated GroupDelayResponseItem groupIds = 1;
+ * @return {!Array<!proto.GroupDelayResponseItem>}
+ */
+proto.GroupDelayResponse.prototype.getGroupidsList = function() {
+  return /** @type{!Array<!proto.GroupDelayResponseItem>} */ (
+    jspb.Message.getRepeatedWrapperField(this, proto.GroupDelayResponseItem, 1));
+};
+
+
+/**
+ * @param {!Array<!proto.GroupDelayResponseItem>} value
+ * @return {!proto.GroupDelayResponse} returns this
+*/
+proto.GroupDelayResponse.prototype.setGroupidsList = function(value) {
+  return jspb.Message.setRepeatedWrapperField(this, 1, value);
+};
+
+
+/**
+ * @param {!proto.GroupDelayResponseItem=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.GroupDelayResponseItem}
+ */
+proto.GroupDelayResponse.prototype.addGroupids = function(opt_value, opt_index) {
+  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.GroupDelayResponseItem, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.GroupDelayResponse} returns this
+ */
+proto.GroupDelayResponse.prototype.clearGroupidsList = function() {
+  return this.setGroupidsList([]);
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.PipelineConnectionQueryMode = {
+  INVALID_QUERY_MODE: 0,
+  EXACTPATH: 1,
+  JUSTRELATEDTOSTEP: 2
+};
+
+goog.object.extend(exports, proto);