text: // source: api/services/services.proto
  /**
   * @fileoverview
   * @enhanceable
   * @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!
  
  var jspb = require('google-protobuf');
  var goog = jspb;
  var global = Function('return this')();
  
  var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js');
  goog.object.extend(proto, google_protobuf_timestamp_pb);
  goog.exportSymbol('proto.api.services.BuildStatus', null, global);
  goog.exportSymbol('proto.api.services.CommitPushed', null, global);
  goog.exportSymbol('proto.api.services.CreateRequest', null, global);
  goog.exportSymbol('proto.api.services.CreateResponse', null, global);
  goog.exportSymbol('proto.api.services.DeploymentType', null, global);
  goog.exportSymbol('proto.api.services.Environment', null, global);
  goog.exportSymbol('proto.api.services.EnvironmentStatus', null, global);
  goog.exportSymbol('proto.api.services.EnvironmentVersionStatus', null, global);
  goog.exportSymbol('proto.api.services.GetBuildLogRequest', null, global);
  goog.exportSymbol('proto.api.services.GetBuildLogResponse', null, global);
  goog.exportSymbol('proto.api.services.GetRequest', null, global);
  goog.exportSymbol('proto.api.services.GetResponse', null, global);
  goog.exportSymbol('proto.api.services.GithubInfo', null, global);
  goog.exportSymbol('proto.api.services.GithubRepo', null, global);
  goog.exportSymbol('proto.api.services.Instance', null, global);
  goog.exportSymbol('proto.api.services.InstanceStatus', null, global);
  goog.exportSymbol('proto.api.services.ListGithubReposRequest', null, global);
  goog.exportSymbol('proto.api.services.ListGithubReposResponse', null, global);
  goog.exportSymbol('proto.api.services.ListRequest', null, global);
  goog.exportSymbol('proto.api.services.ListResponse', null, global);
  goog.exportSymbol('proto.api.services.ListVersionsRequest', null, global);
  goog.exportSymbol('proto.api.services.ListVersionsResponse', null, global);
  goog.exportSymbol('proto.api.services.PortType', null, global);
  goog.exportSymbol('proto.api.services.Region', null, global);
  goog.exportSymbol('proto.api.services.Service', null, global);
  goog.exportSymbol('proto.api.services.ServiceStatus', null, global);
  goog.exportSymbol('proto.api.services.Version', 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.api.services.Environment = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, 500, null, null);
  };
  goog.inherits(proto.api.services.Environment, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.Environment.displayName = 'proto.api.services.Environment';
  }
  /**
   * 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.api.services.Service = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, 500, proto.api.services.Service.repeatedFields_, null);
  };
  goog.inherits(proto.api.services.Service, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.Service.displayName = 'proto.api.services.Service';
  }
  /**
   * 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.api.services.GithubInfo = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.GithubInfo, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.GithubInfo.displayName = 'proto.api.services.GithubInfo';
  }
  /**
   * 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.api.services.Version = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, 500, null, null);
  };
  goog.inherits(proto.api.services.Version, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.Version.displayName = 'proto.api.services.Version';
  }
  /**
   * 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.api.services.ServiceStatus = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.api.services.ServiceStatus.repeatedFields_, null);
  };
  goog.inherits(proto.api.services.ServiceStatus, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.ServiceStatus.displayName = 'proto.api.services.ServiceStatus';
  }
  /**
   * 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.api.services.EnvironmentStatus = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.api.services.EnvironmentStatus.repeatedFields_, null);
  };
  goog.inherits(proto.api.services.EnvironmentStatus, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.EnvironmentStatus.displayName = 'proto.api.services.EnvironmentStatus';
  }
  /**
   * 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.api.services.EnvironmentVersionStatus = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.api.services.EnvironmentVersionStatus.repeatedFields_, null);
  };
  goog.inherits(proto.api.services.EnvironmentVersionStatus, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.EnvironmentVersionStatus.displayName = 'proto.api.services.EnvironmentVersionStatus';
  }
  /**
   * 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.api.services.Instance = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.Instance, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.Instance.displayName = 'proto.api.services.Instance';
  }
  /**
   * 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.api.services.GetRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.GetRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.GetRequest.displayName = 'proto.api.services.GetRequest';
  }
  /**
   * 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.api.services.GetResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.GetResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.GetResponse.displayName = 'proto.api.services.GetResponse';
  }
  /**
   * 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.api.services.CreateRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.api.services.CreateRequest.repeatedFields_, null);
  };
  goog.inherits(proto.api.services.CreateRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.CreateRequest.displayName = 'proto.api.services.CreateRequest';
  }
  /**
   * 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.api.services.CreateResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.CreateResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.CreateResponse.displayName = 'proto.api.services.CreateResponse';
  }
  /**
   * 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.api.services.ListRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.ListRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.ListRequest.displayName = 'proto.api.services.ListRequest';
  }
  /**
   * 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.api.services.ListResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.api.services.ListResponse.repeatedFields_, null);
  };
  goog.inherits(proto.api.services.ListResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.ListResponse.displayName = 'proto.api.services.ListResponse';
  }
  /**
   * 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.api.services.ListVersionsRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.ListVersionsRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.ListVersionsRequest.displayName = 'proto.api.services.ListVersionsRequest';
  }
  /**
   * 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.api.services.ListVersionsResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.api.services.ListVersionsResponse.repeatedFields_, null);
  };
  goog.inherits(proto.api.services.ListVersionsResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.ListVersionsResponse.displayName = 'proto.api.services.ListVersionsResponse';
  }
  /**
   * 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.api.services.GetBuildLogRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.GetBuildLogRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.GetBuildLogRequest.displayName = 'proto.api.services.GetBuildLogRequest';
  }
  /**
   * 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.api.services.GetBuildLogResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.GetBuildLogResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.GetBuildLogResponse.displayName = 'proto.api.services.GetBuildLogResponse';
  }
  /**
   * 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.api.services.ListGithubReposRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.ListGithubReposRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.ListGithubReposRequest.displayName = 'proto.api.services.ListGithubReposRequest';
  }
  /**
   * 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.api.services.GithubRepo = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, 500, null, null);
  };
  goog.inherits(proto.api.services.GithubRepo, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.GithubRepo.displayName = 'proto.api.services.GithubRepo';
  }
  /**
   * 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.api.services.ListGithubReposResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.api.services.ListGithubReposResponse.repeatedFields_, null);
  };
  goog.inherits(proto.api.services.ListGithubReposResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.ListGithubReposResponse.displayName = 'proto.api.services.ListGithubReposResponse';
  }
  /**
   * 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.api.services.CommitPushed = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.api.services.CommitPushed, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.api.services.CommitPushed.displayName = 'proto.api.services.CommitPushed';
  }
  
  
  
  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.api.services.Environment.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.Environment.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.api.services.Environment} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.Environment.toObject = function(includeInstance, msg) {
    var f, obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, ""),
      name: jspb.Message.getFieldWithDefault(msg, 2, ""),
      dnsSafeName: jspb.Message.getFieldWithDefault(msg, 3, ""),
      createdAt: (f = msg.getCreatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
      updatedAt: (f = msg.getUpdatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, 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.api.services.Environment}
   */
  proto.api.services.Environment.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.Environment;
    return proto.api.services.Environment.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.Environment} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.Environment}
   */
  proto.api.services.Environment.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.setId(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setName(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setDnsSafeName(value);
        break;
      case 1000:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setCreatedAt(value);
        break;
      case 1001:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setUpdatedAt(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.Environment.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.Environment.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.Environment} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.Environment.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getName();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getDnsSafeName();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
    f = message.getCreatedAt();
    if (f != null) {
      writer.writeMessage(
        1000,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
    f = message.getUpdatedAt();
    if (f != null) {
      writer.writeMessage(
        1001,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional string id = 1;
   * @return {string}
   */
  proto.api.services.Environment.prototype.getId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Environment} returns this
   */
  proto.api.services.Environment.prototype.setId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional string name = 2;
   * @return {string}
   */
  proto.api.services.Environment.prototype.getName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Environment} returns this
   */
  proto.api.services.Environment.prototype.setName = function(value) {
    return jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * optional string dns_safe_name = 3;
   * @return {string}
   */
  proto.api.services.Environment.prototype.getDnsSafeName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Environment} returns this
   */
  proto.api.services.Environment.prototype.setDnsSafeName = function(value) {
    return jspb.Message.setProto3StringField(this, 3, value);
  };
  
  
  /**
   * optional google.protobuf.Timestamp created_at = 1000;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.api.services.Environment.prototype.getCreatedAt = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1000));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.api.services.Environment} returns this
  */
  proto.api.services.Environment.prototype.setCreatedAt = function(value) {
    return jspb.Message.setWrapperField(this, 1000, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.Environment} returns this
   */
  proto.api.services.Environment.prototype.clearCreatedAt = function() {
    return this.setCreatedAt(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.Environment.prototype.hasCreatedAt = function() {
    return jspb.Message.getField(this, 1000) != null;
  };
  
  
  /**
   * optional google.protobuf.Timestamp updated_at = 1001;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.api.services.Environment.prototype.getUpdatedAt = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1001));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.api.services.Environment} returns this
  */
  proto.api.services.Environment.prototype.setUpdatedAt = function(value) {
    return jspb.Message.setWrapperField(this, 1001, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.Environment} returns this
   */
  proto.api.services.Environment.prototype.clearUpdatedAt = function() {
    return this.setUpdatedAt(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.Environment.prototype.hasUpdatedAt = function() {
    return jspb.Message.getField(this, 1001) != null;
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.api.services.Service.repeatedFields_ = [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.api.services.Service.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.Service.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.api.services.Service} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.Service.toObject = function(includeInstance, msg) {
    var f, obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, ""),
      accountId: jspb.Message.getFieldWithDefault(msg, 12, ""),
      projectId: jspb.Message.getFieldWithDefault(msg, 2, ""),
      name: jspb.Message.getFieldWithDefault(msg, 3, ""),
      dnsSafeName: jspb.Message.getFieldWithDefault(msg, 4, ""),
      regionsList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,
      githubInfo: (f = msg.getGithubInfo()) && proto.api.services.GithubInfo.toObject(includeInstance, f),
      portsMap: (f = msg.getPortsMap()) ? f.toObject(includeInstance, undefined) : [],
      environmentVariablesMap: (f = msg.getEnvironmentVariablesMap()) ? f.toObject(includeInstance, undefined) : [],
      replicasPerRegion: jspb.Message.getFieldWithDefault(msg, 9, 0),
      cpu: jspb.Message.getFieldWithDefault(msg, 10, 0),
      memory: jspb.Message.getFieldWithDefault(msg, 11, 0),
      createdAt: (f = msg.getCreatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
      updatedAt: (f = msg.getUpdatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, 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.api.services.Service}
   */
  proto.api.services.Service.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.Service;
    return proto.api.services.Service.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.Service} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.Service}
   */
  proto.api.services.Service.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.setId(value);
        break;
      case 12:
        var value = /** @type {string} */ (reader.readString());
        msg.setAccountId(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setProjectId(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setName(value);
        break;
      case 4:
        var value = /** @type {string} */ (reader.readString());
        msg.setDnsSafeName(value);
        break;
      case 5:
        var value = /** @type {!Array<!proto.api.services.Region>} */ (reader.readPackedEnum());
        msg.setRegionsList(value);
        break;
      case 6:
        var value = new proto.api.services.GithubInfo;
        reader.readMessage(value,proto.api.services.GithubInfo.deserializeBinaryFromReader);
        msg.setGithubInfo(value);
        break;
      case 7:
        var value = msg.getPortsMap();
        reader.readMessage(value, function(message, reader) {
          jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readEnum, null, "", 0);
           });
        break;
      case 8:
        var value = msg.getEnvironmentVariablesMap();
        reader.readMessage(value, function(message, reader) {
          jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", "");
           });
        break;
      case 9:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setReplicasPerRegion(value);
        break;
      case 10:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setCpu(value);
        break;
      case 11:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setMemory(value);
        break;
      case 1000:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setCreatedAt(value);
        break;
      case 1001:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setUpdatedAt(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.Service.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.Service.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.Service} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.Service.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getAccountId();
    if (f.length > 0) {
      writer.writeString(
        12,
        f
      );
    }
    f = message.getProjectId();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getName();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
    f = message.getDnsSafeName();
    if (f.length > 0) {
      writer.writeString(
        4,
        f
      );
    }
    f = message.getRegionsList();
    if (f.length > 0) {
      writer.writePackedEnum(
        5,
        f
      );
    }
    f = message.getGithubInfo();
    if (f != null) {
      writer.writeMessage(
        6,
        f,
        proto.api.services.GithubInfo.serializeBinaryToWriter
      );
    }
    f = message.getPortsMap(true);
    if (f && f.getLength() > 0) {
      f.serializeBinary(7, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeEnum);
    }
    f = message.getEnvironmentVariablesMap(true);
    if (f && f.getLength() > 0) {
      f.serializeBinary(8, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);
    }
    f = message.getReplicasPerRegion();
    if (f !== 0) {
      writer.writeInt32(
        9,
        f
      );
    }
    f = message.getCpu();
    if (f !== 0) {
      writer.writeInt32(
        10,
        f
      );
    }
    f = message.getMemory();
    if (f !== 0) {
      writer.writeInt32(
        11,
        f
      );
    }
    f = message.getCreatedAt();
    if (f != null) {
      writer.writeMessage(
        1000,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
    f = message.getUpdatedAt();
    if (f != null) {
      writer.writeMessage(
        1001,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional string id = 1;
   * @return {string}
   */
  proto.api.services.Service.prototype.getId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional string account_id = 12;
   * @return {string}
   */
  proto.api.services.Service.prototype.getAccountId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setAccountId = function(value) {
    return jspb.Message.setProto3StringField(this, 12, value);
  };
  
  
  /**
   * optional string project_id = 2;
   * @return {string}
   */
  proto.api.services.Service.prototype.getProjectId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setProjectId = function(value) {
    return jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * optional string name = 3;
   * @return {string}
   */
  proto.api.services.Service.prototype.getName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setName = function(value) {
    return jspb.Message.setProto3StringField(this, 3, value);
  };
  
  
  /**
   * optional string dns_safe_name = 4;
   * @return {string}
   */
  proto.api.services.Service.prototype.getDnsSafeName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setDnsSafeName = function(value) {
    return jspb.Message.setProto3StringField(this, 4, value);
  };
  
  
  /**
   * repeated Region regions = 5;
   * @return {!Array<!proto.api.services.Region>}
   */
  proto.api.services.Service.prototype.getRegionsList = function() {
    return /** @type {!Array<!proto.api.services.Region>} */ (jspb.Message.getRepeatedField(this, 5));
  };
  
  
  /**
   * @param {!Array<!proto.api.services.Region>} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setRegionsList = function(value) {
    return jspb.Message.setField(this, 5, value || []);
  };
  
  
  /**
   * @param {!proto.api.services.Region} value
   * @param {number=} opt_index
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.addRegions = function(value, opt_index) {
    return jspb.Message.addToRepeatedField(this, 5, value, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.clearRegionsList = function() {
    return this.setRegionsList([]);
  };
  
  
  /**
   * optional GithubInfo github_info = 6;
   * @return {?proto.api.services.GithubInfo}
   */
  proto.api.services.Service.prototype.getGithubInfo = function() {
    return /** @type{?proto.api.services.GithubInfo} */ (
      jspb.Message.getWrapperField(this, proto.api.services.GithubInfo, 6));
  };
  
  
  /**
   * @param {?proto.api.services.GithubInfo|undefined} value
   * @return {!proto.api.services.Service} returns this
  */
  proto.api.services.Service.prototype.setGithubInfo = function(value) {
    return jspb.Message.setWrapperField(this, 6, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.clearGithubInfo = function() {
    return this.setGithubInfo(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.Service.prototype.hasGithubInfo = function() {
    return jspb.Message.getField(this, 6) != null;
  };
  
  
  /**
   * map<string, PortType> ports = 7;
   * @param {boolean=} opt_noLazyCreate Do not create the map if
   * empty, instead returning `undefined`
   * @return {!jspb.Map<string,!proto.api.services.PortType>}
   */
  proto.api.services.Service.prototype.getPortsMap = function(opt_noLazyCreate) {
    return /** @type {!jspb.Map<string,!proto.api.services.PortType>} */ (
        jspb.Message.getMapField(this, 7, opt_noLazyCreate,
        null));
  };
  
  
  /**
   * Clears values from the map. The map will be non-null.
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.clearPortsMap = function() {
    this.getPortsMap().clear();
    return this;};
  
  
  /**
   * map<string, string> environment_variables = 8;
   * @param {boolean=} opt_noLazyCreate Do not create the map if
   * empty, instead returning `undefined`
   * @return {!jspb.Map<string,string>}
   */
  proto.api.services.Service.prototype.getEnvironmentVariablesMap = function(opt_noLazyCreate) {
    return /** @type {!jspb.Map<string,string>} */ (
        jspb.Message.getMapField(this, 8, opt_noLazyCreate,
        null));
  };
  
  
  /**
   * Clears values from the map. The map will be non-null.
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.clearEnvironmentVariablesMap = function() {
    this.getEnvironmentVariablesMap().clear();
    return this;};
  
  
  /**
   * optional int32 replicas_per_region = 9;
   * @return {number}
   */
  proto.api.services.Service.prototype.getReplicasPerRegion = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setReplicasPerRegion = function(value) {
    return jspb.Message.setProto3IntField(this, 9, value);
  };
  
  
  /**
   * optional int32 cpu = 10;
   * @return {number}
   */
  proto.api.services.Service.prototype.getCpu = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setCpu = function(value) {
    return jspb.Message.setProto3IntField(this, 10, value);
  };
  
  
  /**
   * optional int32 memory = 11;
   * @return {number}
   */
  proto.api.services.Service.prototype.getMemory = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.setMemory = function(value) {
    return jspb.Message.setProto3IntField(this, 11, value);
  };
  
  
  /**
   * optional google.protobuf.Timestamp created_at = 1000;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.api.services.Service.prototype.getCreatedAt = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1000));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.api.services.Service} returns this
  */
  proto.api.services.Service.prototype.setCreatedAt = function(value) {
    return jspb.Message.setWrapperField(this, 1000, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.clearCreatedAt = function() {
    return this.setCreatedAt(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.Service.prototype.hasCreatedAt = function() {
    return jspb.Message.getField(this, 1000) != null;
  };
  
  
  /**
   * optional google.protobuf.Timestamp updated_at = 1001;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.api.services.Service.prototype.getUpdatedAt = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1001));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.api.services.Service} returns this
  */
  proto.api.services.Service.prototype.setUpdatedAt = function(value) {
    return jspb.Message.setWrapperField(this, 1001, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.Service} returns this
   */
  proto.api.services.Service.prototype.clearUpdatedAt = function() {
    return this.setUpdatedAt(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.Service.prototype.hasUpdatedAt = function() {
    return jspb.Message.getField(this, 1001) != null;
  };
  
  
  
  
  
  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.api.services.GithubInfo.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.GithubInfo.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.api.services.GithubInfo} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GithubInfo.toObject = function(includeInstance, msg) {
    var f, obj = {
      githubRepoId: jspb.Message.getFieldWithDefault(msg, 1, 0),
      fullName: jspb.Message.getFieldWithDefault(msg, 2, ""),
      mainBranch: 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.api.services.GithubInfo}
   */
  proto.api.services.GithubInfo.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.GithubInfo;
    return proto.api.services.GithubInfo.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.GithubInfo} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.GithubInfo}
   */
  proto.api.services.GithubInfo.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readInt64());
        msg.setGithubRepoId(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setFullName(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setMainBranch(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.GithubInfo.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.GithubInfo.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.GithubInfo} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GithubInfo.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getGithubRepoId();
    if (f !== 0) {
      writer.writeInt64(
        1,
        f
      );
    }
    f = message.getFullName();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getMainBranch();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
  };
  
  
  /**
   * optional int64 github_repo_id = 1;
   * @return {number}
   */
  proto.api.services.GithubInfo.prototype.getGithubRepoId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.GithubInfo} returns this
   */
  proto.api.services.GithubInfo.prototype.setGithubRepoId = function(value) {
    return jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional string full_name = 2;
   * @return {string}
   */
  proto.api.services.GithubInfo.prototype.getFullName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.GithubInfo} returns this
   */
  proto.api.services.GithubInfo.prototype.setFullName = function(value) {
    return jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * optional string main_branch = 3;
   * @return {string}
   */
  proto.api.services.GithubInfo.prototype.getMainBranch = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.GithubInfo} returns this
   */
  proto.api.services.GithubInfo.prototype.setMainBranch = 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.api.services.Version.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.Version.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.api.services.Version} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.Version.toObject = function(includeInstance, msg) {
    var f, obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, ""),
      serviceId: jspb.Message.getFieldWithDefault(msg, 2, ""),
      version: jspb.Message.getFieldWithDefault(msg, 3, ""),
      sha: jspb.Message.getFieldWithDefault(msg, 4, ""),
      commitMessage: jspb.Message.getFieldWithDefault(msg, 5, ""),
      authorUsername: jspb.Message.getFieldWithDefault(msg, 6, ""),
      authorEmail: jspb.Message.getFieldWithDefault(msg, 7, ""),
      authorAccountId: jspb.Message.getFieldWithDefault(msg, 8, ""),
      containerUrl: jspb.Message.getFieldWithDefault(msg, 9, ""),
      buildStatus: jspb.Message.getFieldWithDefault(msg, 10, 0),
      available: jspb.Message.getBooleanFieldWithDefault(msg, 11, false),
      createdAt: (f = msg.getCreatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, 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.api.services.Version}
   */
  proto.api.services.Version.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.Version;
    return proto.api.services.Version.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.Version} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.Version}
   */
  proto.api.services.Version.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.setId(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setServiceId(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setVersion(value);
        break;
      case 4:
        var value = /** @type {string} */ (reader.readString());
        msg.setSha(value);
        break;
      case 5:
        var value = /** @type {string} */ (reader.readString());
        msg.setCommitMessage(value);
        break;
      case 6:
        var value = /** @type {string} */ (reader.readString());
        msg.setAuthorUsername(value);
        break;
      case 7:
        var value = /** @type {string} */ (reader.readString());
        msg.setAuthorEmail(value);
        break;
      case 8:
        var value = /** @type {string} */ (reader.readString());
        msg.setAuthorAccountId(value);
        break;
      case 9:
        var value = /** @type {string} */ (reader.readString());
        msg.setContainerUrl(value);
        break;
      case 10:
        var value = /** @type {!proto.api.services.BuildStatus} */ (reader.readEnum());
        msg.setBuildStatus(value);
        break;
      case 11:
        var value = /** @type {boolean} */ (reader.readBool());
        msg.setAvailable(value);
        break;
      case 1000:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setCreatedAt(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.Version.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.Version.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.Version} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.Version.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getServiceId();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getVersion();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
    f = message.getSha();
    if (f.length > 0) {
      writer.writeString(
        4,
        f
      );
    }
    f = message.getCommitMessage();
    if (f.length > 0) {
      writer.writeString(
        5,
        f
      );
    }
    f = message.getAuthorUsername();
    if (f.length > 0) {
      writer.writeString(
        6,
        f
      );
    }
    f = message.getAuthorEmail();
    if (f.length > 0) {
      writer.writeString(
        7,
        f
      );
    }
    f = message.getAuthorAccountId();
    if (f.length > 0) {
      writer.writeString(
        8,
        f
      );
    }
    f = message.getContainerUrl();
    if (f.length > 0) {
      writer.writeString(
        9,
        f
      );
    }
    f = message.getBuildStatus();
    if (f !== 0.0) {
      writer.writeEnum(
        10,
        f
      );
    }
    f = message.getAvailable();
    if (f) {
      writer.writeBool(
        11,
        f
      );
    }
    f = message.getCreatedAt();
    if (f != null) {
      writer.writeMessage(
        1000,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional string id = 1;
   * @return {string}
   */
  proto.api.services.Version.prototype.getId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional string service_id = 2;
   * @return {string}
   */
  proto.api.services.Version.prototype.getServiceId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setServiceId = function(value) {
    return jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * optional string version = 3;
   * @return {string}
   */
  proto.api.services.Version.prototype.getVersion = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setVersion = function(value) {
    return jspb.Message.setProto3StringField(this, 3, value);
  };
  
  
  /**
   * optional string sha = 4;
   * @return {string}
   */
  proto.api.services.Version.prototype.getSha = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setSha = function(value) {
    return jspb.Message.setProto3StringField(this, 4, value);
  };
  
  
  /**
   * optional string commit_message = 5;
   * @return {string}
   */
  proto.api.services.Version.prototype.getCommitMessage = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setCommitMessage = function(value) {
    return jspb.Message.setProto3StringField(this, 5, value);
  };
  
  
  /**
   * optional string author_username = 6;
   * @return {string}
   */
  proto.api.services.Version.prototype.getAuthorUsername = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setAuthorUsername = function(value) {
    return jspb.Message.setProto3StringField(this, 6, value);
  };
  
  
  /**
   * optional string author_email = 7;
   * @return {string}
   */
  proto.api.services.Version.prototype.getAuthorEmail = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setAuthorEmail = function(value) {
    return jspb.Message.setProto3StringField(this, 7, value);
  };
  
  
  /**
   * optional string author_account_id = 8;
   * @return {string}
   */
  proto.api.services.Version.prototype.getAuthorAccountId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setAuthorAccountId = function(value) {
    return jspb.Message.setProto3StringField(this, 8, value);
  };
  
  
  /**
   * optional string container_url = 9;
   * @return {string}
   */
  proto.api.services.Version.prototype.getContainerUrl = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setContainerUrl = function(value) {
    return jspb.Message.setProto3StringField(this, 9, value);
  };
  
  
  /**
   * optional BuildStatus build_status = 10;
   * @return {!proto.api.services.BuildStatus}
   */
  proto.api.services.Version.prototype.getBuildStatus = function() {
    return /** @type {!proto.api.services.BuildStatus} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
  };
  
  
  /**
   * @param {!proto.api.services.BuildStatus} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setBuildStatus = function(value) {
    return jspb.Message.setProto3EnumField(this, 10, value);
  };
  
  
  /**
   * optional bool available = 11;
   * @return {boolean}
   */
  proto.api.services.Version.prototype.getAvailable = function() {
    return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 11, false));
  };
  
  
  /**
   * @param {boolean} value
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.setAvailable = function(value) {
    return jspb.Message.setProto3BooleanField(this, 11, value);
  };
  
  
  /**
   * optional google.protobuf.Timestamp created_at = 1000;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.api.services.Version.prototype.getCreatedAt = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1000));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.api.services.Version} returns this
  */
  proto.api.services.Version.prototype.setCreatedAt = function(value) {
    return jspb.Message.setWrapperField(this, 1000, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.Version} returns this
   */
  proto.api.services.Version.prototype.clearCreatedAt = function() {
    return this.setCreatedAt(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.Version.prototype.hasCreatedAt = function() {
    return jspb.Message.getField(this, 1000) != null;
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.api.services.ServiceStatus.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.api.services.ServiceStatus.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.ServiceStatus.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.api.services.ServiceStatus} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ServiceStatus.toObject = function(includeInstance, msg) {
    var f, obj = {
      environmentsList: jspb.Message.toObjectList(msg.getEnvironmentsList(),
      proto.api.services.EnvironmentStatus.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.api.services.ServiceStatus}
   */
  proto.api.services.ServiceStatus.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.ServiceStatus;
    return proto.api.services.ServiceStatus.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.ServiceStatus} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.ServiceStatus}
   */
  proto.api.services.ServiceStatus.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.api.services.EnvironmentStatus;
        reader.readMessage(value,proto.api.services.EnvironmentStatus.deserializeBinaryFromReader);
        msg.addEnvironments(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.ServiceStatus.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.ServiceStatus.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.ServiceStatus} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ServiceStatus.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getEnvironmentsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        1,
        f,
        proto.api.services.EnvironmentStatus.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * repeated EnvironmentStatus environments = 1;
   * @return {!Array<!proto.api.services.EnvironmentStatus>}
   */
  proto.api.services.ServiceStatus.prototype.getEnvironmentsList = function() {
    return /** @type{!Array<!proto.api.services.EnvironmentStatus>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.api.services.EnvironmentStatus, 1));
  };
  
  
  /**
   * @param {!Array<!proto.api.services.EnvironmentStatus>} value
   * @return {!proto.api.services.ServiceStatus} returns this
  */
  proto.api.services.ServiceStatus.prototype.setEnvironmentsList = function(value) {
    return jspb.Message.setRepeatedWrapperField(this, 1, value);
  };
  
  
  /**
   * @param {!proto.api.services.EnvironmentStatus=} opt_value
   * @param {number=} opt_index
   * @return {!proto.api.services.EnvironmentStatus}
   */
  proto.api.services.ServiceStatus.prototype.addEnvironments = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.api.services.EnvironmentStatus, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.api.services.ServiceStatus} returns this
   */
  proto.api.services.ServiceStatus.prototype.clearEnvironmentsList = function() {
    return this.setEnvironmentsList([]);
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.api.services.EnvironmentStatus.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.api.services.EnvironmentStatus.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.EnvironmentStatus.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.api.services.EnvironmentStatus} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.EnvironmentStatus.toObject = function(includeInstance, msg) {
    var f, obj = {
      environment: (f = msg.getEnvironment()) && proto.api.services.Environment.toObject(includeInstance, f),
      versionsList: jspb.Message.toObjectList(msg.getVersionsList(),
      proto.api.services.EnvironmentVersionStatus.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.api.services.EnvironmentStatus}
   */
  proto.api.services.EnvironmentStatus.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.EnvironmentStatus;
    return proto.api.services.EnvironmentStatus.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.EnvironmentStatus} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.EnvironmentStatus}
   */
  proto.api.services.EnvironmentStatus.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.api.services.Environment;
        reader.readMessage(value,proto.api.services.Environment.deserializeBinaryFromReader);
        msg.setEnvironment(value);
        break;
      case 2:
        var value = new proto.api.services.EnvironmentVersionStatus;
        reader.readMessage(value,proto.api.services.EnvironmentVersionStatus.deserializeBinaryFromReader);
        msg.addVersions(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.EnvironmentStatus.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.EnvironmentStatus.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.EnvironmentStatus} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.EnvironmentStatus.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getEnvironment();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.api.services.Environment.serializeBinaryToWriter
      );
    }
    f = message.getVersionsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        2,
        f,
        proto.api.services.EnvironmentVersionStatus.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional Environment environment = 1;
   * @return {?proto.api.services.Environment}
   */
  proto.api.services.EnvironmentStatus.prototype.getEnvironment = function() {
    return /** @type{?proto.api.services.Environment} */ (
      jspb.Message.getWrapperField(this, proto.api.services.Environment, 1));
  };
  
  
  /**
   * @param {?proto.api.services.Environment|undefined} value
   * @return {!proto.api.services.EnvironmentStatus} returns this
  */
  proto.api.services.EnvironmentStatus.prototype.setEnvironment = function(value) {
    return jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.EnvironmentStatus} returns this
   */
  proto.api.services.EnvironmentStatus.prototype.clearEnvironment = function() {
    return this.setEnvironment(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.EnvironmentStatus.prototype.hasEnvironment = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * repeated EnvironmentVersionStatus versions = 2;
   * @return {!Array<!proto.api.services.EnvironmentVersionStatus>}
   */
  proto.api.services.EnvironmentStatus.prototype.getVersionsList = function() {
    return /** @type{!Array<!proto.api.services.EnvironmentVersionStatus>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.api.services.EnvironmentVersionStatus, 2));
  };
  
  
  /**
   * @param {!Array<!proto.api.services.EnvironmentVersionStatus>} value
   * @return {!proto.api.services.EnvironmentStatus} returns this
  */
  proto.api.services.EnvironmentStatus.prototype.setVersionsList = function(value) {
    return jspb.Message.setRepeatedWrapperField(this, 2, value);
  };
  
  
  /**
   * @param {!proto.api.services.EnvironmentVersionStatus=} opt_value
   * @param {number=} opt_index
   * @return {!proto.api.services.EnvironmentVersionStatus}
   */
  proto.api.services.EnvironmentStatus.prototype.addVersions = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.api.services.EnvironmentVersionStatus, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.api.services.EnvironmentStatus} returns this
   */
  proto.api.services.EnvironmentStatus.prototype.clearVersionsList = function() {
    return this.setVersionsList([]);
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.api.services.EnvironmentVersionStatus.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.api.services.EnvironmentVersionStatus.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.EnvironmentVersionStatus.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.api.services.EnvironmentVersionStatus} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.EnvironmentVersionStatus.toObject = function(includeInstance, msg) {
    var f, obj = {
      trafficPercentage: jspb.Message.getFieldWithDefault(msg, 2, 0),
      instancesList: jspb.Message.toObjectList(msg.getInstancesList(),
      proto.api.services.Instance.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.api.services.EnvironmentVersionStatus}
   */
  proto.api.services.EnvironmentVersionStatus.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.EnvironmentVersionStatus;
    return proto.api.services.EnvironmentVersionStatus.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.EnvironmentVersionStatus} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.EnvironmentVersionStatus}
   */
  proto.api.services.EnvironmentVersionStatus.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 2:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setTrafficPercentage(value);
        break;
      case 3:
        var value = new proto.api.services.Instance;
        reader.readMessage(value,proto.api.services.Instance.deserializeBinaryFromReader);
        msg.addInstances(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.EnvironmentVersionStatus.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.EnvironmentVersionStatus.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.EnvironmentVersionStatus} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.EnvironmentVersionStatus.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getTrafficPercentage();
    if (f !== 0) {
      writer.writeInt32(
        2,
        f
      );
    }
    f = message.getInstancesList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        3,
        f,
        proto.api.services.Instance.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional int32 traffic_percentage = 2;
   * @return {number}
   */
  proto.api.services.EnvironmentVersionStatus.prototype.getTrafficPercentage = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.EnvironmentVersionStatus} returns this
   */
  proto.api.services.EnvironmentVersionStatus.prototype.setTrafficPercentage = function(value) {
    return jspb.Message.setProto3IntField(this, 2, value);
  };
  
  
  /**
   * repeated Instance instances = 3;
   * @return {!Array<!proto.api.services.Instance>}
   */
  proto.api.services.EnvironmentVersionStatus.prototype.getInstancesList = function() {
    return /** @type{!Array<!proto.api.services.Instance>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.api.services.Instance, 3));
  };
  
  
  /**
   * @param {!Array<!proto.api.services.Instance>} value
   * @return {!proto.api.services.EnvironmentVersionStatus} returns this
  */
  proto.api.services.EnvironmentVersionStatus.prototype.setInstancesList = function(value) {
    return jspb.Message.setRepeatedWrapperField(this, 3, value);
  };
  
  
  /**
   * @param {!proto.api.services.Instance=} opt_value
   * @param {number=} opt_index
   * @return {!proto.api.services.Instance}
   */
  proto.api.services.EnvironmentVersionStatus.prototype.addInstances = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.api.services.Instance, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.api.services.EnvironmentVersionStatus} returns this
   */
  proto.api.services.EnvironmentVersionStatus.prototype.clearInstancesList = function() {
    return this.setInstancesList([]);
  };
  
  
  
  
  
  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.api.services.Instance.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.Instance.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.api.services.Instance} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.Instance.toObject = function(includeInstance, msg) {
    var f, obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, ""),
      status: jspb.Message.getFieldWithDefault(msg, 2, 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.api.services.Instance}
   */
  proto.api.services.Instance.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.Instance;
    return proto.api.services.Instance.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.Instance} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.Instance}
   */
  proto.api.services.Instance.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.setId(value);
        break;
      case 2:
        var value = /** @type {!proto.api.services.InstanceStatus} */ (reader.readEnum());
        msg.setStatus(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.Instance.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.Instance.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.Instance} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.Instance.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getStatus();
    if (f !== 0.0) {
      writer.writeEnum(
        2,
        f
      );
    }
  };
  
  
  /**
   * optional string id = 1;
   * @return {string}
   */
  proto.api.services.Instance.prototype.getId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.Instance} returns this
   */
  proto.api.services.Instance.prototype.setId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional InstanceStatus status = 2;
   * @return {!proto.api.services.InstanceStatus}
   */
  proto.api.services.Instance.prototype.getStatus = function() {
    return /** @type {!proto.api.services.InstanceStatus} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /**
   * @param {!proto.api.services.InstanceStatus} value
   * @return {!proto.api.services.Instance} returns this
   */
  proto.api.services.Instance.prototype.setStatus = function(value) {
    return jspb.Message.setProto3EnumField(this, 2, 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.api.services.GetRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.GetRequest.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.api.services.GetRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GetRequest.toObject = function(includeInstance, msg) {
    var f, obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, "")
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.api.services.GetRequest}
   */
  proto.api.services.GetRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.GetRequest;
    return proto.api.services.GetRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.GetRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.GetRequest}
   */
  proto.api.services.GetRequest.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.setId(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.GetRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.GetRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.GetRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GetRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
  };
  
  
  /**
   * optional string id = 1;
   * @return {string}
   */
  proto.api.services.GetRequest.prototype.getId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.GetRequest} returns this
   */
  proto.api.services.GetRequest.prototype.setId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, 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.api.services.GetResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.GetResponse.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.api.services.GetResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GetResponse.toObject = function(includeInstance, msg) {
    var f, obj = {
      service: (f = msg.getService()) && proto.api.services.Service.toObject(includeInstance, f),
      status: (f = msg.getStatus()) && proto.api.services.ServiceStatus.toObject(includeInstance, 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.api.services.GetResponse}
   */
  proto.api.services.GetResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.GetResponse;
    return proto.api.services.GetResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.GetResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.GetResponse}
   */
  proto.api.services.GetResponse.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.api.services.Service;
        reader.readMessage(value,proto.api.services.Service.deserializeBinaryFromReader);
        msg.setService(value);
        break;
      case 2:
        var value = new proto.api.services.ServiceStatus;
        reader.readMessage(value,proto.api.services.ServiceStatus.deserializeBinaryFromReader);
        msg.setStatus(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.GetResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.GetResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.GetResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GetResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getService();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.api.services.Service.serializeBinaryToWriter
      );
    }
    f = message.getStatus();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.api.services.ServiceStatus.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional Service service = 1;
   * @return {?proto.api.services.Service}
   */
  proto.api.services.GetResponse.prototype.getService = function() {
    return /** @type{?proto.api.services.Service} */ (
      jspb.Message.getWrapperField(this, proto.api.services.Service, 1));
  };
  
  
  /**
   * @param {?proto.api.services.Service|undefined} value
   * @return {!proto.api.services.GetResponse} returns this
  */
  proto.api.services.GetResponse.prototype.setService = function(value) {
    return jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.GetResponse} returns this
   */
  proto.api.services.GetResponse.prototype.clearService = function() {
    return this.setService(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.GetResponse.prototype.hasService = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional ServiceStatus status = 2;
   * @return {?proto.api.services.ServiceStatus}
   */
  proto.api.services.GetResponse.prototype.getStatus = function() {
    return /** @type{?proto.api.services.ServiceStatus} */ (
      jspb.Message.getWrapperField(this, proto.api.services.ServiceStatus, 2));
  };
  
  
  /**
   * @param {?proto.api.services.ServiceStatus|undefined} value
   * @return {!proto.api.services.GetResponse} returns this
  */
  proto.api.services.GetResponse.prototype.setStatus = function(value) {
    return jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.GetResponse} returns this
   */
  proto.api.services.GetResponse.prototype.clearStatus = function() {
    return this.setStatus(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.GetResponse.prototype.hasStatus = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.api.services.CreateRequest.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.api.services.CreateRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.CreateRequest.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.api.services.CreateRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.CreateRequest.toObject = function(includeInstance, msg) {
    var f, obj = {
      projectId: jspb.Message.getFieldWithDefault(msg, 1, ""),
      accountId: jspb.Message.getFieldWithDefault(msg, 11, ""),
      name: jspb.Message.getFieldWithDefault(msg, 2, ""),
      dnsSafeName: jspb.Message.getFieldWithDefault(msg, 3, ""),
      regionsList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,
      githubRepoId: jspb.Message.getFieldWithDefault(msg, 5, 0),
      portsMap: (f = msg.getPortsMap()) ? f.toObject(includeInstance, undefined) : [],
      environmentVariablesMap: (f = msg.getEnvironmentVariablesMap()) ? f.toObject(includeInstance, undefined) : [],
      replicasPerRegion: jspb.Message.getFieldWithDefault(msg, 8, 0),
      cpu: jspb.Message.getFieldWithDefault(msg, 9, 0),
      memory: 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.api.services.CreateRequest}
   */
  proto.api.services.CreateRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.CreateRequest;
    return proto.api.services.CreateRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.CreateRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.CreateRequest}
   */
  proto.api.services.CreateRequest.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.setProjectId(value);
        break;
      case 11:
        var value = /** @type {string} */ (reader.readString());
        msg.setAccountId(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setName(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setDnsSafeName(value);
        break;
      case 4:
        var value = /** @type {!Array<!proto.api.services.Region>} */ (reader.readPackedEnum());
        msg.setRegionsList(value);
        break;
      case 5:
        var value = /** @type {number} */ (reader.readInt64());
        msg.setGithubRepoId(value);
        break;
      case 6:
        var value = msg.getPortsMap();
        reader.readMessage(value, function(message, reader) {
          jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readEnum, null, "", 0);
           });
        break;
      case 7:
        var value = msg.getEnvironmentVariablesMap();
        reader.readMessage(value, function(message, reader) {
          jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, "", "");
           });
        break;
      case 8:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setReplicasPerRegion(value);
        break;
      case 9:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setCpu(value);
        break;
      case 10:
        var value = /** @type {number} */ (reader.readInt32());
        msg.setMemory(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.CreateRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.CreateRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.CreateRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.CreateRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getProjectId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getAccountId();
    if (f.length > 0) {
      writer.writeString(
        11,
        f
      );
    }
    f = message.getName();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getDnsSafeName();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
    f = message.getRegionsList();
    if (f.length > 0) {
      writer.writePackedEnum(
        4,
        f
      );
    }
    f = message.getGithubRepoId();
    if (f !== 0) {
      writer.writeInt64(
        5,
        f
      );
    }
    f = message.getPortsMap(true);
    if (f && f.getLength() > 0) {
      f.serializeBinary(6, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeEnum);
    }
    f = message.getEnvironmentVariablesMap(true);
    if (f && f.getLength() > 0) {
      f.serializeBinary(7, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);
    }
    f = message.getReplicasPerRegion();
    if (f !== 0) {
      writer.writeInt32(
        8,
        f
      );
    }
    f = message.getCpu();
    if (f !== 0) {
      writer.writeInt32(
        9,
        f
      );
    }
    f = message.getMemory();
    if (f !== 0) {
      writer.writeInt32(
        10,
        f
      );
    }
  };
  
  
  /**
   * optional string project_id = 1;
   * @return {string}
   */
  proto.api.services.CreateRequest.prototype.getProjectId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setProjectId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional string account_id = 11;
   * @return {string}
   */
  proto.api.services.CreateRequest.prototype.getAccountId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setAccountId = function(value) {
    return jspb.Message.setProto3StringField(this, 11, value);
  };
  
  
  /**
   * optional string name = 2;
   * @return {string}
   */
  proto.api.services.CreateRequest.prototype.getName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setName = function(value) {
    return jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * optional string dns_safe_name = 3;
   * @return {string}
   */
  proto.api.services.CreateRequest.prototype.getDnsSafeName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setDnsSafeName = function(value) {
    return jspb.Message.setProto3StringField(this, 3, value);
  };
  
  
  /**
   * repeated Region regions = 4;
   * @return {!Array<!proto.api.services.Region>}
   */
  proto.api.services.CreateRequest.prototype.getRegionsList = function() {
    return /** @type {!Array<!proto.api.services.Region>} */ (jspb.Message.getRepeatedField(this, 4));
  };
  
  
  /**
   * @param {!Array<!proto.api.services.Region>} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setRegionsList = function(value) {
    return jspb.Message.setField(this, 4, value || []);
  };
  
  
  /**
   * @param {!proto.api.services.Region} value
   * @param {number=} opt_index
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.addRegions = function(value, opt_index) {
    return jspb.Message.addToRepeatedField(this, 4, value, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.clearRegionsList = function() {
    return this.setRegionsList([]);
  };
  
  
  /**
   * optional int64 github_repo_id = 5;
   * @return {number}
   */
  proto.api.services.CreateRequest.prototype.getGithubRepoId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setGithubRepoId = function(value) {
    return jspb.Message.setProto3IntField(this, 5, value);
  };
  
  
  /**
   * map<string, PortType> ports = 6;
   * @param {boolean=} opt_noLazyCreate Do not create the map if
   * empty, instead returning `undefined`
   * @return {!jspb.Map<string,!proto.api.services.PortType>}
   */
  proto.api.services.CreateRequest.prototype.getPortsMap = function(opt_noLazyCreate) {
    return /** @type {!jspb.Map<string,!proto.api.services.PortType>} */ (
        jspb.Message.getMapField(this, 6, opt_noLazyCreate,
        null));
  };
  
  
  /**
   * Clears values from the map. The map will be non-null.
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.clearPortsMap = function() {
    this.getPortsMap().clear();
    return this;};
  
  
  /**
   * map<string, string> environment_variables = 7;
   * @param {boolean=} opt_noLazyCreate Do not create the map if
   * empty, instead returning `undefined`
   * @return {!jspb.Map<string,string>}
   */
  proto.api.services.CreateRequest.prototype.getEnvironmentVariablesMap = function(opt_noLazyCreate) {
    return /** @type {!jspb.Map<string,string>} */ (
        jspb.Message.getMapField(this, 7, opt_noLazyCreate,
        null));
  };
  
  
  /**
   * Clears values from the map. The map will be non-null.
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.clearEnvironmentVariablesMap = function() {
    this.getEnvironmentVariablesMap().clear();
    return this;};
  
  
  /**
   * optional int32 replicas_per_region = 8;
   * @return {number}
   */
  proto.api.services.CreateRequest.prototype.getReplicasPerRegion = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setReplicasPerRegion = function(value) {
    return jspb.Message.setProto3IntField(this, 8, value);
  };
  
  
  /**
   * optional int32 cpu = 9;
   * @return {number}
   */
  proto.api.services.CreateRequest.prototype.getCpu = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setCpu = function(value) {
    return jspb.Message.setProto3IntField(this, 9, value);
  };
  
  
  /**
   * optional int32 memory = 10;
   * @return {number}
   */
  proto.api.services.CreateRequest.prototype.getMemory = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.CreateRequest} returns this
   */
  proto.api.services.CreateRequest.prototype.setMemory = 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.api.services.CreateResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.CreateResponse.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.api.services.CreateResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.CreateResponse.toObject = function(includeInstance, msg) {
    var f, obj = {
      service: (f = msg.getService()) && proto.api.services.Service.toObject(includeInstance, 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.api.services.CreateResponse}
   */
  proto.api.services.CreateResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.CreateResponse;
    return proto.api.services.CreateResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.CreateResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.CreateResponse}
   */
  proto.api.services.CreateResponse.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.api.services.Service;
        reader.readMessage(value,proto.api.services.Service.deserializeBinaryFromReader);
        msg.setService(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.CreateResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.CreateResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.CreateResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.CreateResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getService();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        proto.api.services.Service.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional Service service = 1;
   * @return {?proto.api.services.Service}
   */
  proto.api.services.CreateResponse.prototype.getService = function() {
    return /** @type{?proto.api.services.Service} */ (
      jspb.Message.getWrapperField(this, proto.api.services.Service, 1));
  };
  
  
  /**
   * @param {?proto.api.services.Service|undefined} value
   * @return {!proto.api.services.CreateResponse} returns this
  */
  proto.api.services.CreateResponse.prototype.setService = function(value) {
    return jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.CreateResponse} returns this
   */
  proto.api.services.CreateResponse.prototype.clearService = function() {
    return this.setService(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.CreateResponse.prototype.hasService = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  
  
  
  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.api.services.ListRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.ListRequest.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.api.services.ListRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListRequest.toObject = function(includeInstance, msg) {
    var f, obj = {
      projectId: jspb.Message.getFieldWithDefault(msg, 1, "")
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.api.services.ListRequest}
   */
  proto.api.services.ListRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.ListRequest;
    return proto.api.services.ListRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.ListRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.ListRequest}
   */
  proto.api.services.ListRequest.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.setProjectId(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.ListRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.ListRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.ListRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getProjectId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
  };
  
  
  /**
   * optional string project_id = 1;
   * @return {string}
   */
  proto.api.services.ListRequest.prototype.getProjectId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.ListRequest} returns this
   */
  proto.api.services.ListRequest.prototype.setProjectId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.api.services.ListResponse.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.api.services.ListResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.ListResponse.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.api.services.ListResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListResponse.toObject = function(includeInstance, msg) {
    var f, obj = {
      servicesList: jspb.Message.toObjectList(msg.getServicesList(),
      proto.api.services.Service.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.api.services.ListResponse}
   */
  proto.api.services.ListResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.ListResponse;
    return proto.api.services.ListResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.ListResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.ListResponse}
   */
  proto.api.services.ListResponse.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.api.services.Service;
        reader.readMessage(value,proto.api.services.Service.deserializeBinaryFromReader);
        msg.addServices(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.ListResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.ListResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.ListResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getServicesList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        1,
        f,
        proto.api.services.Service.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * repeated Service services = 1;
   * @return {!Array<!proto.api.services.Service>}
   */
  proto.api.services.ListResponse.prototype.getServicesList = function() {
    return /** @type{!Array<!proto.api.services.Service>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.api.services.Service, 1));
  };
  
  
  /**
   * @param {!Array<!proto.api.services.Service>} value
   * @return {!proto.api.services.ListResponse} returns this
  */
  proto.api.services.ListResponse.prototype.setServicesList = function(value) {
    return jspb.Message.setRepeatedWrapperField(this, 1, value);
  };
  
  
  /**
   * @param {!proto.api.services.Service=} opt_value
   * @param {number=} opt_index
   * @return {!proto.api.services.Service}
   */
  proto.api.services.ListResponse.prototype.addServices = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.api.services.Service, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.api.services.ListResponse} returns this
   */
  proto.api.services.ListResponse.prototype.clearServicesList = function() {
    return this.setServicesList([]);
  };
  
  
  
  
  
  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.api.services.ListVersionsRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.ListVersionsRequest.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.api.services.ListVersionsRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListVersionsRequest.toObject = function(includeInstance, msg) {
    var f, obj = {
      serviceId: jspb.Message.getFieldWithDefault(msg, 1, "")
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.api.services.ListVersionsRequest}
   */
  proto.api.services.ListVersionsRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.ListVersionsRequest;
    return proto.api.services.ListVersionsRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.ListVersionsRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.ListVersionsRequest}
   */
  proto.api.services.ListVersionsRequest.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.setServiceId(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.ListVersionsRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.ListVersionsRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.ListVersionsRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListVersionsRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getServiceId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
  };
  
  
  /**
   * optional string service_id = 1;
   * @return {string}
   */
  proto.api.services.ListVersionsRequest.prototype.getServiceId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.ListVersionsRequest} returns this
   */
  proto.api.services.ListVersionsRequest.prototype.setServiceId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.api.services.ListVersionsResponse.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.api.services.ListVersionsResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.ListVersionsResponse.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.api.services.ListVersionsResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListVersionsResponse.toObject = function(includeInstance, msg) {
    var f, obj = {
      versionsList: jspb.Message.toObjectList(msg.getVersionsList(),
      proto.api.services.Version.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.api.services.ListVersionsResponse}
   */
  proto.api.services.ListVersionsResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.ListVersionsResponse;
    return proto.api.services.ListVersionsResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.ListVersionsResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.ListVersionsResponse}
   */
  proto.api.services.ListVersionsResponse.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.api.services.Version;
        reader.readMessage(value,proto.api.services.Version.deserializeBinaryFromReader);
        msg.addVersions(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.ListVersionsResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.ListVersionsResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.ListVersionsResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListVersionsResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getVersionsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        1,
        f,
        proto.api.services.Version.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * repeated Version versions = 1;
   * @return {!Array<!proto.api.services.Version>}
   */
  proto.api.services.ListVersionsResponse.prototype.getVersionsList = function() {
    return /** @type{!Array<!proto.api.services.Version>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.api.services.Version, 1));
  };
  
  
  /**
   * @param {!Array<!proto.api.services.Version>} value
   * @return {!proto.api.services.ListVersionsResponse} returns this
  */
  proto.api.services.ListVersionsResponse.prototype.setVersionsList = function(value) {
    return jspb.Message.setRepeatedWrapperField(this, 1, value);
  };
  
  
  /**
   * @param {!proto.api.services.Version=} opt_value
   * @param {number=} opt_index
   * @return {!proto.api.services.Version}
   */
  proto.api.services.ListVersionsResponse.prototype.addVersions = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.api.services.Version, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.api.services.ListVersionsResponse} returns this
   */
  proto.api.services.ListVersionsResponse.prototype.clearVersionsList = function() {
    return this.setVersionsList([]);
  };
  
  
  
  
  
  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.api.services.GetBuildLogRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.GetBuildLogRequest.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.api.services.GetBuildLogRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GetBuildLogRequest.toObject = function(includeInstance, msg) {
    var f, obj = {
      versionId: jspb.Message.getFieldWithDefault(msg, 1, "")
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.api.services.GetBuildLogRequest}
   */
  proto.api.services.GetBuildLogRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.GetBuildLogRequest;
    return proto.api.services.GetBuildLogRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.GetBuildLogRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.GetBuildLogRequest}
   */
  proto.api.services.GetBuildLogRequest.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.setVersionId(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.GetBuildLogRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.GetBuildLogRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.GetBuildLogRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GetBuildLogRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getVersionId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
  };
  
  
  /**
   * optional string version_id = 1;
   * @return {string}
   */
  proto.api.services.GetBuildLogRequest.prototype.getVersionId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.GetBuildLogRequest} returns this
   */
  proto.api.services.GetBuildLogRequest.prototype.setVersionId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, 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.api.services.GetBuildLogResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.GetBuildLogResponse.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.api.services.GetBuildLogResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GetBuildLogResponse.toObject = function(includeInstance, msg) {
    var f, obj = {
      log: jspb.Message.getFieldWithDefault(msg, 1, ""),
      status: jspb.Message.getFieldWithDefault(msg, 2, 0),
      available: jspb.Message.getBooleanFieldWithDefault(msg, 3, false)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.api.services.GetBuildLogResponse}
   */
  proto.api.services.GetBuildLogResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.GetBuildLogResponse;
    return proto.api.services.GetBuildLogResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.GetBuildLogResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.GetBuildLogResponse}
   */
  proto.api.services.GetBuildLogResponse.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.setLog(value);
        break;
      case 2:
        var value = /** @type {!proto.api.services.BuildStatus} */ (reader.readEnum());
        msg.setStatus(value);
        break;
      case 3:
        var value = /** @type {boolean} */ (reader.readBool());
        msg.setAvailable(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.GetBuildLogResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.GetBuildLogResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.GetBuildLogResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GetBuildLogResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getLog();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getStatus();
    if (f !== 0.0) {
      writer.writeEnum(
        2,
        f
      );
    }
    f = message.getAvailable();
    if (f) {
      writer.writeBool(
        3,
        f
      );
    }
  };
  
  
  /**
   * optional string log = 1;
   * @return {string}
   */
  proto.api.services.GetBuildLogResponse.prototype.getLog = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.GetBuildLogResponse} returns this
   */
  proto.api.services.GetBuildLogResponse.prototype.setLog = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional BuildStatus status = 2;
   * @return {!proto.api.services.BuildStatus}
   */
  proto.api.services.GetBuildLogResponse.prototype.getStatus = function() {
    return /** @type {!proto.api.services.BuildStatus} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /**
   * @param {!proto.api.services.BuildStatus} value
   * @return {!proto.api.services.GetBuildLogResponse} returns this
   */
  proto.api.services.GetBuildLogResponse.prototype.setStatus = function(value) {
    return jspb.Message.setProto3EnumField(this, 2, value);
  };
  
  
  /**
   * optional bool available = 3;
   * @return {boolean}
   */
  proto.api.services.GetBuildLogResponse.prototype.getAvailable = function() {
    return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));
  };
  
  
  /**
   * @param {boolean} value
   * @return {!proto.api.services.GetBuildLogResponse} returns this
   */
  proto.api.services.GetBuildLogResponse.prototype.setAvailable = function(value) {
    return jspb.Message.setProto3BooleanField(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.api.services.ListGithubReposRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.ListGithubReposRequest.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.api.services.ListGithubReposRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListGithubReposRequest.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.api.services.ListGithubReposRequest}
   */
  proto.api.services.ListGithubReposRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.ListGithubReposRequest;
    return proto.api.services.ListGithubReposRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.ListGithubReposRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.ListGithubReposRequest}
   */
  proto.api.services.ListGithubReposRequest.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.api.services.ListGithubReposRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.ListGithubReposRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.ListGithubReposRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListGithubReposRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
  };
  
  
  
  
  
  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.api.services.GithubRepo.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.GithubRepo.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.api.services.GithubRepo} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GithubRepo.toObject = function(includeInstance, msg) {
    var f, obj = {
      id: jspb.Message.getFieldWithDefault(msg, 1, 0),
      fullName: jspb.Message.getFieldWithDefault(msg, 2, ""),
      pb_private: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),
      lastPush: (f = msg.getLastPush()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
      createdAt: (f = msg.getCreatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
      updatedAt: (f = msg.getUpdatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, 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.api.services.GithubRepo}
   */
  proto.api.services.GithubRepo.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.GithubRepo;
    return proto.api.services.GithubRepo.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.GithubRepo} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.GithubRepo}
   */
  proto.api.services.GithubRepo.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readInt64());
        msg.setId(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.setFullName(value);
        break;
      case 3:
        var value = /** @type {boolean} */ (reader.readBool());
        msg.setPrivate(value);
        break;
      case 4:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setLastPush(value);
        break;
      case 1000:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setCreatedAt(value);
        break;
      case 1001:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setUpdatedAt(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.GithubRepo.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.GithubRepo.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.GithubRepo} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.GithubRepo.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getId();
    if (f !== 0) {
      writer.writeInt64(
        1,
        f
      );
    }
    f = message.getFullName();
    if (f.length > 0) {
      writer.writeString(
        2,
        f
      );
    }
    f = message.getPrivate();
    if (f) {
      writer.writeBool(
        3,
        f
      );
    }
    f = message.getLastPush();
    if (f != null) {
      writer.writeMessage(
        4,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
    f = message.getCreatedAt();
    if (f != null) {
      writer.writeMessage(
        1000,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
    f = message.getUpdatedAt();
    if (f != null) {
      writer.writeMessage(
        1001,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional int64 id = 1;
   * @return {number}
   */
  proto.api.services.GithubRepo.prototype.getId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.GithubRepo} returns this
   */
  proto.api.services.GithubRepo.prototype.setId = function(value) {
    return jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional string full_name = 2;
   * @return {string}
   */
  proto.api.services.GithubRepo.prototype.getFullName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.GithubRepo} returns this
   */
  proto.api.services.GithubRepo.prototype.setFullName = function(value) {
    return jspb.Message.setProto3StringField(this, 2, value);
  };
  
  
  /**
   * optional bool private = 3;
   * @return {boolean}
   */
  proto.api.services.GithubRepo.prototype.getPrivate = function() {
    return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));
  };
  
  
  /**
   * @param {boolean} value
   * @return {!proto.api.services.GithubRepo} returns this
   */
  proto.api.services.GithubRepo.prototype.setPrivate = function(value) {
    return jspb.Message.setProto3BooleanField(this, 3, value);
  };
  
  
  /**
   * optional google.protobuf.Timestamp last_push = 4;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.api.services.GithubRepo.prototype.getLastPush = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 4));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.api.services.GithubRepo} returns this
  */
  proto.api.services.GithubRepo.prototype.setLastPush = function(value) {
    return jspb.Message.setWrapperField(this, 4, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.GithubRepo} returns this
   */
  proto.api.services.GithubRepo.prototype.clearLastPush = function() {
    return this.setLastPush(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.GithubRepo.prototype.hasLastPush = function() {
    return jspb.Message.getField(this, 4) != null;
  };
  
  
  /**
   * optional google.protobuf.Timestamp created_at = 1000;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.api.services.GithubRepo.prototype.getCreatedAt = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1000));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.api.services.GithubRepo} returns this
  */
  proto.api.services.GithubRepo.prototype.setCreatedAt = function(value) {
    return jspb.Message.setWrapperField(this, 1000, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.GithubRepo} returns this
   */
  proto.api.services.GithubRepo.prototype.clearCreatedAt = function() {
    return this.setCreatedAt(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.GithubRepo.prototype.hasCreatedAt = function() {
    return jspb.Message.getField(this, 1000) != null;
  };
  
  
  /**
   * optional google.protobuf.Timestamp updated_at = 1001;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.api.services.GithubRepo.prototype.getUpdatedAt = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1001));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.api.services.GithubRepo} returns this
  */
  proto.api.services.GithubRepo.prototype.setUpdatedAt = function(value) {
    return jspb.Message.setWrapperField(this, 1001, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.api.services.GithubRepo} returns this
   */
  proto.api.services.GithubRepo.prototype.clearUpdatedAt = function() {
    return this.setUpdatedAt(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.api.services.GithubRepo.prototype.hasUpdatedAt = function() {
    return jspb.Message.getField(this, 1001) != null;
  };
  
  
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.api.services.ListGithubReposResponse.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.api.services.ListGithubReposResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.ListGithubReposResponse.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.api.services.ListGithubReposResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListGithubReposResponse.toObject = function(includeInstance, msg) {
    var f, obj = {
      reposList: jspb.Message.toObjectList(msg.getReposList(),
      proto.api.services.GithubRepo.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.api.services.ListGithubReposResponse}
   */
  proto.api.services.ListGithubReposResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.ListGithubReposResponse;
    return proto.api.services.ListGithubReposResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.ListGithubReposResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.ListGithubReposResponse}
   */
  proto.api.services.ListGithubReposResponse.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.api.services.GithubRepo;
        reader.readMessage(value,proto.api.services.GithubRepo.deserializeBinaryFromReader);
        msg.addRepos(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.ListGithubReposResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.ListGithubReposResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.ListGithubReposResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.ListGithubReposResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getReposList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        1,
        f,
        proto.api.services.GithubRepo.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * repeated GithubRepo repos = 1;
   * @return {!Array<!proto.api.services.GithubRepo>}
   */
  proto.api.services.ListGithubReposResponse.prototype.getReposList = function() {
    return /** @type{!Array<!proto.api.services.GithubRepo>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.api.services.GithubRepo, 1));
  };
  
  
  /**
   * @param {!Array<!proto.api.services.GithubRepo>} value
   * @return {!proto.api.services.ListGithubReposResponse} returns this
  */
  proto.api.services.ListGithubReposResponse.prototype.setReposList = function(value) {
    return jspb.Message.setRepeatedWrapperField(this, 1, value);
  };
  
  
  /**
   * @param {!proto.api.services.GithubRepo=} opt_value
   * @param {number=} opt_index
   * @return {!proto.api.services.GithubRepo}
   */
  proto.api.services.ListGithubReposResponse.prototype.addRepos = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.api.services.GithubRepo, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.api.services.ListGithubReposResponse} returns this
   */
  proto.api.services.ListGithubReposResponse.prototype.clearReposList = function() {
    return this.setReposList([]);
  };
  
  
  
  
  
  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.api.services.CommitPushed.prototype.toObject = function(opt_includeInstance) {
    return proto.api.services.CommitPushed.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.api.services.CommitPushed} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.CommitPushed.toObject = function(includeInstance, msg) {
    var f, obj = {
      serviceId: jspb.Message.getFieldWithDefault(msg, 1, ""),
      repoId: jspb.Message.getFieldWithDefault(msg, 2, 0),
      repoName: jspb.Message.getFieldWithDefault(msg, 3, ""),
      ref: jspb.Message.getFieldWithDefault(msg, 4, ""),
      head: jspb.Message.getFieldWithDefault(msg, 5, "")
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.api.services.CommitPushed}
   */
  proto.api.services.CommitPushed.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.api.services.CommitPushed;
    return proto.api.services.CommitPushed.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.api.services.CommitPushed} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.api.services.CommitPushed}
   */
  proto.api.services.CommitPushed.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.setServiceId(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readInt64());
        msg.setRepoId(value);
        break;
      case 3:
        var value = /** @type {string} */ (reader.readString());
        msg.setRepoName(value);
        break;
      case 4:
        var value = /** @type {string} */ (reader.readString());
        msg.setRef(value);
        break;
      case 5:
        var value = /** @type {string} */ (reader.readString());
        msg.setHead(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.api.services.CommitPushed.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.api.services.CommitPushed.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.api.services.CommitPushed} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.api.services.CommitPushed.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getServiceId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getRepoId();
    if (f !== 0) {
      writer.writeInt64(
        2,
        f
      );
    }
    f = message.getRepoName();
    if (f.length > 0) {
      writer.writeString(
        3,
        f
      );
    }
    f = message.getRef();
    if (f.length > 0) {
      writer.writeString(
        4,
        f
      );
    }
    f = message.getHead();
    if (f.length > 0) {
      writer.writeString(
        5,
        f
      );
    }
  };
  
  
  /**
   * optional string service_id = 1;
   * @return {string}
   */
  proto.api.services.CommitPushed.prototype.getServiceId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.CommitPushed} returns this
   */
  proto.api.services.CommitPushed.prototype.setServiceId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional int64 repo_id = 2;
   * @return {number}
   */
  proto.api.services.CommitPushed.prototype.getRepoId = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.api.services.CommitPushed} returns this
   */
  proto.api.services.CommitPushed.prototype.setRepoId = function(value) {
    return jspb.Message.setProto3IntField(this, 2, value);
  };
  
  
  /**
   * optional string repo_name = 3;
   * @return {string}
   */
  proto.api.services.CommitPushed.prototype.getRepoName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.CommitPushed} returns this
   */
  proto.api.services.CommitPushed.prototype.setRepoName = function(value) {
    return jspb.Message.setProto3StringField(this, 3, value);
  };
  
  
  /**
   * optional string ref = 4;
   * @return {string}
   */
  proto.api.services.CommitPushed.prototype.getRef = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.CommitPushed} returns this
   */
  proto.api.services.CommitPushed.prototype.setRef = function(value) {
    return jspb.Message.setProto3StringField(this, 4, value);
  };
  
  
  /**
   * optional string head = 5;
   * @return {string}
   */
  proto.api.services.CommitPushed.prototype.getHead = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.api.services.CommitPushed} returns this
   */
  proto.api.services.CommitPushed.prototype.setHead = function(value) {
    return jspb.Message.setProto3StringField(this, 5, value);
  };
  
  
  /**
   * @enum {number}
   */
  proto.api.services.Region = {
    REGION_UNSPECIFIED: 0,
    REGION_WEST_EUROPE: 1,
    REGION_CENTRAL_USA: 2,
    REGION_EAST_ASIA: 3
  };
  
  /**
   * @enum {number}
   */
  proto.api.services.DeploymentType = {
    DEPLOYMENT_TYPE_UNSPECIFIED: 0,
    DEPLOYMENT_TYPE_MANUAL: 1,
    DEPLOYMENT_TYPE_GITHUB: 2
  };
  
  /**
   * @enum {number}
   */
  proto.api.services.PortType = {
    PORT_TYPE_UNSPECIFIED: 0,
    PORT_TYPE_TCP: 1,
    PORT_TYPE_HTTP: 2,
    PORT_TYPE_HTTPS: 3,
    PORT_TYPE_GRPC: 4,
    PORT_TYPE_GRAPHQL: 5
  };
  
  /**
   * @enum {number}
   */
  proto.api.services.InstanceStatus = {
    INSTANCE_STATUS_UNSPECIFIED: 0,
    INSTANCE_STATUS_PENDING: 1,
    INSTANCE_STATUS_RUNNING: 2,
    INSTANCE_STATUS_SUCCEEDED: 3,
    INSTANCE_STATUS_FAILED: 4
  };
  
  /**
   * @enum {number}
   */
  proto.api.services.BuildStatus = {
    BUILD_STATUS_UNSPECIFIED: 0,
    BUILD_STATUS_PENDING: 1,
    BUILD_STATUS_RUNNING: 2,
    BUILD_STATUS_SUCCEEDED: 3,
    BUILD_STATUS_FAILED: 4
  };
  
  goog.object.extend(exports, proto.api.services);
  