text: /**
   * @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')();
  
  goog.exportSymbol('proto.DeletePeersRequest', null, global);
  goog.exportSymbol('proto.DeletePeersResponse', null, global);
  goog.exportSymbol('proto.GetPeersRequest', null, global);
  goog.exportSymbol('proto.GetPeersResponse', null, global);
  goog.exportSymbol('proto.Peer', null, global);
  goog.exportSymbol('proto.RegisterPeersRequest', null, global);
  goog.exportSymbol('proto.RegisterPeersResponse', null, global);
  goog.exportSymbol('proto.UDPNetworkType', 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.GetPeersRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.GetPeersRequest.repeatedFields_, null);
  };
  goog.inherits(proto.GetPeersRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.GetPeersRequest.displayName = 'proto.GetPeersRequest';
  }
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.GetPeersRequest.repeatedFields_ = [2];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.GetPeersRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.GetPeersRequest.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.GetPeersRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.GetPeersRequest.toObject = function(includeInstance, msg) {
    var f, obj = {
      deviceName: jspb.Message.getFieldWithDefault(msg, 1, ""),
      filterPublicKeysList: jspb.Message.getRepeatedField(msg, 2)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.GetPeersRequest}
   */
  proto.GetPeersRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.GetPeersRequest;
    return proto.GetPeersRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.GetPeersRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.GetPeersRequest}
   */
  proto.GetPeersRequest.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.setDeviceName(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.addFilterPublicKeys(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.GetPeersRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.GetPeersRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.GetPeersRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.GetPeersRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getDeviceName();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getFilterPublicKeysList();
    if (f.length > 0) {
      writer.writeRepeatedString(
        2,
        f
      );
    }
  };
  
  
  /**
   * optional string device_name = 1;
   * @return {string}
   */
  proto.GetPeersRequest.prototype.getDeviceName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /** @param {string} value */
  proto.GetPeersRequest.prototype.setDeviceName = function(value) {
    jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * repeated string filter_public_keys = 2;
   * @return {!Array<string>}
   */
  proto.GetPeersRequest.prototype.getFilterPublicKeysList = function() {
    return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
  };
  
  
  /** @param {!Array<string>} value */
  proto.GetPeersRequest.prototype.setFilterPublicKeysList = function(value) {
    jspb.Message.setField(this, 2, value || []);
  };
  
  
  /**
   * @param {!string} value
   * @param {number=} opt_index
   */
  proto.GetPeersRequest.prototype.addFilterPublicKeys = function(value, opt_index) {
    jspb.Message.addToRepeatedField(this, 2, value, opt_index);
  };
  
  
  proto.GetPeersRequest.prototype.clearFilterPublicKeysList = function() {
    this.setFilterPublicKeysList([]);
  };
  
  
  
  /**
   * 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.GetPeersResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.GetPeersResponse.repeatedFields_, null);
  };
  goog.inherits(proto.GetPeersResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.GetPeersResponse.displayName = 'proto.GetPeersResponse';
  }
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.GetPeersResponse.repeatedFields_ = [1];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.GetPeersResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.GetPeersResponse.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.GetPeersResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.GetPeersResponse.toObject = function(includeInstance, msg) {
    var f, obj = {
      peersList: jspb.Message.toObjectList(msg.getPeersList(),
      proto.Peer.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.GetPeersResponse}
   */
  proto.GetPeersResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.GetPeersResponse;
    return proto.GetPeersResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.GetPeersResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.GetPeersResponse}
   */
  proto.GetPeersResponse.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new proto.Peer;
        reader.readMessage(value,proto.Peer.deserializeBinaryFromReader);
        msg.addPeers(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.GetPeersResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.GetPeersResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.GetPeersResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.GetPeersResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getPeersList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        1,
        f,
        proto.Peer.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * repeated Peer peers = 1;
   * @return {!Array<!proto.Peer>}
   */
  proto.GetPeersResponse.prototype.getPeersList = function() {
    return /** @type{!Array<!proto.Peer>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Peer, 1));
  };
  
  
  /** @param {!Array<!proto.Peer>} value */
  proto.GetPeersResponse.prototype.setPeersList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 1, value);
  };
  
  
  /**
   * @param {!proto.Peer=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Peer}
   */
  proto.GetPeersResponse.prototype.addPeers = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.Peer, opt_index);
  };
  
  
  proto.GetPeersResponse.prototype.clearPeersList = function() {
    this.setPeersList([]);
  };
  
  
  
  /**
   * 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.RegisterPeersRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.RegisterPeersRequest.repeatedFields_, null);
  };
  goog.inherits(proto.RegisterPeersRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.RegisterPeersRequest.displayName = 'proto.RegisterPeersRequest';
  }
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.RegisterPeersRequest.repeatedFields_ = [2];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.RegisterPeersRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.RegisterPeersRequest.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.RegisterPeersRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.RegisterPeersRequest.toObject = function(includeInstance, msg) {
    var f, obj = {
      deviceName: jspb.Message.getFieldWithDefault(msg, 1, ""),
      peersList: jspb.Message.toObjectList(msg.getPeersList(),
      proto.Peer.toObject, includeInstance),
      hooksPayload: msg.getHooksPayload_asB64()
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.RegisterPeersRequest}
   */
  proto.RegisterPeersRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.RegisterPeersRequest;
    return proto.RegisterPeersRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.RegisterPeersRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.RegisterPeersRequest}
   */
  proto.RegisterPeersRequest.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.setDeviceName(value);
        break;
      case 2:
        var value = new proto.Peer;
        reader.readMessage(value,proto.Peer.deserializeBinaryFromReader);
        msg.addPeers(value);
        break;
      case 3:
        var value = /** @type {!Uint8Array} */ (reader.readBytes());
        msg.setHooksPayload(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.RegisterPeersRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.RegisterPeersRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.RegisterPeersRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.RegisterPeersRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getDeviceName();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getPeersList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        2,
        f,
        proto.Peer.serializeBinaryToWriter
      );
    }
    f = message.getHooksPayload_asU8();
    if (f.length > 0) {
      writer.writeBytes(
        3,
        f
      );
    }
  };
  
  
  /**
   * optional string device_name = 1;
   * @return {string}
   */
  proto.RegisterPeersRequest.prototype.getDeviceName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /** @param {string} value */
  proto.RegisterPeersRequest.prototype.setDeviceName = function(value) {
    jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * repeated Peer peers = 2;
   * @return {!Array<!proto.Peer>}
   */
  proto.RegisterPeersRequest.prototype.getPeersList = function() {
    return /** @type{!Array<!proto.Peer>} */ (
      jspb.Message.getRepeatedWrapperField(this, proto.Peer, 2));
  };
  
  
  /** @param {!Array<!proto.Peer>} value */
  proto.RegisterPeersRequest.prototype.setPeersList = function(value) {
    jspb.Message.setRepeatedWrapperField(this, 2, value);
  };
  
  
  /**
   * @param {!proto.Peer=} opt_value
   * @param {number=} opt_index
   * @return {!proto.Peer}
   */
  proto.RegisterPeersRequest.prototype.addPeers = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.Peer, opt_index);
  };
  
  
  proto.RegisterPeersRequest.prototype.clearPeersList = function() {
    this.setPeersList([]);
  };
  
  
  /**
   * optional bytes hooks_payload = 3;
   * @return {!(string|Uint8Array)}
   */
  proto.RegisterPeersRequest.prototype.getHooksPayload = function() {
    return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * optional bytes hooks_payload = 3;
   * This is a type-conversion wrapper around `getHooksPayload()`
   * @return {string}
   */
  proto.RegisterPeersRequest.prototype.getHooksPayload_asB64 = function() {
    return /** @type {string} */ (jspb.Message.bytesAsB64(
        this.getHooksPayload()));
  };
  
  
  /**
   * optional bytes hooks_payload = 3;
   * Note that Uint8Array is not supported on all browsers.
   * @see http://caniuse.com/Uint8Array
   * This is a type-conversion wrapper around `getHooksPayload()`
   * @return {!Uint8Array}
   */
  proto.RegisterPeersRequest.prototype.getHooksPayload_asU8 = function() {
    return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
        this.getHooksPayload()));
  };
  
  
  /** @param {!(string|Uint8Array)} value */
  proto.RegisterPeersRequest.prototype.setHooksPayload = function(value) {
    jspb.Message.setProto3BytesField(this, 3, value);
  };
  
  
  
  /**
   * 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.RegisterPeersResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.RegisterPeersResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.RegisterPeersResponse.displayName = 'proto.RegisterPeersResponse';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.RegisterPeersResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.RegisterPeersResponse.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.RegisterPeersResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.RegisterPeersResponse.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.RegisterPeersResponse}
   */
  proto.RegisterPeersResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.RegisterPeersResponse;
    return proto.RegisterPeersResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.RegisterPeersResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.RegisterPeersResponse}
   */
  proto.RegisterPeersResponse.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.RegisterPeersResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.RegisterPeersResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.RegisterPeersResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.RegisterPeersResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
  };
  
  
  
  /**
   * 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.DeletePeersRequest = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.DeletePeersRequest.repeatedFields_, null);
  };
  goog.inherits(proto.DeletePeersRequest, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.DeletePeersRequest.displayName = 'proto.DeletePeersRequest';
  }
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.DeletePeersRequest.repeatedFields_ = [2];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.DeletePeersRequest.prototype.toObject = function(opt_includeInstance) {
    return proto.DeletePeersRequest.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.DeletePeersRequest} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.DeletePeersRequest.toObject = function(includeInstance, msg) {
    var f, obj = {
      deviceName: jspb.Message.getFieldWithDefault(msg, 1, ""),
      publicKeysList: jspb.Message.getRepeatedField(msg, 2),
      hooksPayload: msg.getHooksPayload_asB64()
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.DeletePeersRequest}
   */
  proto.DeletePeersRequest.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.DeletePeersRequest;
    return proto.DeletePeersRequest.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.DeletePeersRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.DeletePeersRequest}
   */
  proto.DeletePeersRequest.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.setDeviceName(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.addPublicKeys(value);
        break;
      case 3:
        var value = /** @type {!Uint8Array} */ (reader.readBytes());
        msg.setHooksPayload(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.DeletePeersRequest.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.DeletePeersRequest.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.DeletePeersRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.DeletePeersRequest.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getDeviceName();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getPublicKeysList();
    if (f.length > 0) {
      writer.writeRepeatedString(
        2,
        f
      );
    }
    f = message.getHooksPayload_asU8();
    if (f.length > 0) {
      writer.writeBytes(
        3,
        f
      );
    }
  };
  
  
  /**
   * optional string device_name = 1;
   * @return {string}
   */
  proto.DeletePeersRequest.prototype.getDeviceName = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /** @param {string} value */
  proto.DeletePeersRequest.prototype.setDeviceName = function(value) {
    jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * repeated string public_keys = 2;
   * @return {!Array<string>}
   */
  proto.DeletePeersRequest.prototype.getPublicKeysList = function() {
    return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
  };
  
  
  /** @param {!Array<string>} value */
  proto.DeletePeersRequest.prototype.setPublicKeysList = function(value) {
    jspb.Message.setField(this, 2, value || []);
  };
  
  
  /**
   * @param {!string} value
   * @param {number=} opt_index
   */
  proto.DeletePeersRequest.prototype.addPublicKeys = function(value, opt_index) {
    jspb.Message.addToRepeatedField(this, 2, value, opt_index);
  };
  
  
  proto.DeletePeersRequest.prototype.clearPublicKeysList = function() {
    this.setPublicKeysList([]);
  };
  
  
  /**
   * optional bytes hooks_payload = 3;
   * @return {!(string|Uint8Array)}
   */
  proto.DeletePeersRequest.prototype.getHooksPayload = function() {
    return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * optional bytes hooks_payload = 3;
   * This is a type-conversion wrapper around `getHooksPayload()`
   * @return {string}
   */
  proto.DeletePeersRequest.prototype.getHooksPayload_asB64 = function() {
    return /** @type {string} */ (jspb.Message.bytesAsB64(
        this.getHooksPayload()));
  };
  
  
  /**
   * optional bytes hooks_payload = 3;
   * Note that Uint8Array is not supported on all browsers.
   * @see http://caniuse.com/Uint8Array
   * This is a type-conversion wrapper around `getHooksPayload()`
   * @return {!Uint8Array}
   */
  proto.DeletePeersRequest.prototype.getHooksPayload_asU8 = function() {
    return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
        this.getHooksPayload()));
  };
  
  
  /** @param {!(string|Uint8Array)} value */
  proto.DeletePeersRequest.prototype.setHooksPayload = function(value) {
    jspb.Message.setProto3BytesField(this, 3, value);
  };
  
  
  
  /**
   * 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.DeletePeersResponse = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.DeletePeersResponse, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.DeletePeersResponse.displayName = 'proto.DeletePeersResponse';
  }
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.DeletePeersResponse.prototype.toObject = function(opt_includeInstance) {
    return proto.DeletePeersResponse.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.DeletePeersResponse} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.DeletePeersResponse.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.DeletePeersResponse}
   */
  proto.DeletePeersResponse.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.DeletePeersResponse;
    return proto.DeletePeersResponse.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.DeletePeersResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.DeletePeersResponse}
   */
  proto.DeletePeersResponse.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.DeletePeersResponse.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.DeletePeersResponse.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.DeletePeersResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.DeletePeersResponse.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
  };
  
  
  
  /**
   * 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.Peer = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.Peer.repeatedFields_, null);
  };
  goog.inherits(proto.Peer, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    proto.Peer.displayName = 'proto.Peer';
  }
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.Peer.repeatedFields_ = [2];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto suitable for use in Soy templates.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
   * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
   *     for transitional soy proto support: http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.Peer.prototype.toObject = function(opt_includeInstance) {
    return proto.Peer.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Whether to include the JSPB
   *     instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.Peer} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Peer.toObject = function(includeInstance, msg) {
    var f, obj = {
      publicKey: jspb.Message.getFieldWithDefault(msg, 1, ""),
      allowedIpsList: jspb.Message.getRepeatedField(msg, 2),
      endpointUdpType: jspb.Message.getFieldWithDefault(msg, 3, 0),
      endpoint: jspb.Message.getFieldWithDefault(msg, 4, ""),
      presharedKey: jspb.Message.getFieldWithDefault(msg, 5, ""),
      persistentKeepaliveIntervalSeconds: jspb.Message.getFieldWithDefault(msg, 6, 0),
      protocolVersion: jspb.Message.getFieldWithDefault(msg, 7, 0),
      receiveBytes: jspb.Message.getFieldWithDefault(msg, 8, 0),
      transmitBytes: jspb.Message.getFieldWithDefault(msg, 9, 0),
      lastHandshakeTimeUnixSec: 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.Peer}
   */
  proto.Peer.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.Peer;
    return proto.Peer.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.Peer} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.Peer}
   */
  proto.Peer.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.setPublicKey(value);
        break;
      case 2:
        var value = /** @type {string} */ (reader.readString());
        msg.addAllowedIps(value);
        break;
      case 3:
        var value = /** @type {!proto.UDPNetworkType} */ (reader.readEnum());
        msg.setEndpointUdpType(value);
        break;
      case 4:
        var value = /** @type {string} */ (reader.readString());
        msg.setEndpoint(value);
        break;
      case 5:
        var value = /** @type {string} */ (reader.readString());
        msg.setPresharedKey(value);
        break;
      case 6:
        var value = /** @type {number} */ (reader.readUint32());
        msg.setPersistentKeepaliveIntervalSeconds(value);
        break;
      case 7:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setProtocolVersion(value);
        break;
      case 8:
        var value = /** @type {number} */ (reader.readInt64());
        msg.setReceiveBytes(value);
        break;
      case 9:
        var value = /** @type {number} */ (reader.readInt64());
        msg.setTransmitBytes(value);
        break;
      case 10:
        var value = /** @type {number} */ (reader.readInt64());
        msg.setLastHandshakeTimeUnixSec(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.Peer.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.Peer.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.Peer} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.Peer.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getPublicKey();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getAllowedIpsList();
    if (f.length > 0) {
      writer.writeRepeatedString(
        2,
        f
      );
    }
    f = message.getEndpointUdpType();
    if (f !== 0.0) {
      writer.writeEnum(
        3,
        f
      );
    }
    f = message.getEndpoint();
    if (f.length > 0) {
      writer.writeString(
        4,
        f
      );
    }
    f = message.getPresharedKey();
    if (f.length > 0) {
      writer.writeString(
        5,
        f
      );
    }
    f = message.getPersistentKeepaliveIntervalSeconds();
    if (f !== 0) {
      writer.writeUint32(
        6,
        f
      );
    }
    f = message.getProtocolVersion();
    if (f !== 0) {
      writer.writeUint64(
        7,
        f
      );
    }
    f = message.getReceiveBytes();
    if (f !== 0) {
      writer.writeInt64(
        8,
        f
      );
    }
    f = message.getTransmitBytes();
    if (f !== 0) {
      writer.writeInt64(
        9,
        f
      );
    }
    f = message.getLastHandshakeTimeUnixSec();
    if (f !== 0) {
      writer.writeInt64(
        10,
        f
      );
    }
  };
  
  
  /**
   * optional string public_key = 1;
   * @return {string}
   */
  proto.Peer.prototype.getPublicKey = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /** @param {string} value */
  proto.Peer.prototype.setPublicKey = function(value) {
    jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * repeated string allowed_ips = 2;
   * @return {!Array<string>}
   */
  proto.Peer.prototype.getAllowedIpsList = function() {
    return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
  };
  
  
  /** @param {!Array<string>} value */
  proto.Peer.prototype.setAllowedIpsList = function(value) {
    jspb.Message.setField(this, 2, value || []);
  };
  
  
  /**
   * @param {!string} value
   * @param {number=} opt_index
   */
  proto.Peer.prototype.addAllowedIps = function(value, opt_index) {
    jspb.Message.addToRepeatedField(this, 2, value, opt_index);
  };
  
  
  proto.Peer.prototype.clearAllowedIpsList = function() {
    this.setAllowedIpsList([]);
  };
  
  
  /**
   * optional UDPNetworkType endpoint_udp_type = 3;
   * @return {!proto.UDPNetworkType}
   */
  proto.Peer.prototype.getEndpointUdpType = function() {
    return /** @type {!proto.UDPNetworkType} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
  };
  
  
  /** @param {!proto.UDPNetworkType} value */
  proto.Peer.prototype.setEndpointUdpType = function(value) {
    jspb.Message.setProto3EnumField(this, 3, value);
  };
  
  
  /**
   * optional string endpoint = 4;
   * @return {string}
   */
  proto.Peer.prototype.getEndpoint = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
  };
  
  
  /** @param {string} value */
  proto.Peer.prototype.setEndpoint = function(value) {
    jspb.Message.setProto3StringField(this, 4, value);
  };
  
  
  /**
   * optional string preshared_key = 5;
   * @return {string}
   */
  proto.Peer.prototype.getPresharedKey = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
  };
  
  
  /** @param {string} value */
  proto.Peer.prototype.setPresharedKey = function(value) {
    jspb.Message.setProto3StringField(this, 5, value);
  };
  
  
  /**
   * optional uint32 persistent_keepalive_interval_seconds = 6;
   * @return {number}
   */
  proto.Peer.prototype.getPersistentKeepaliveIntervalSeconds = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
  };
  
  
  /** @param {number} value */
  proto.Peer.prototype.setPersistentKeepaliveIntervalSeconds = function(value) {
    jspb.Message.setProto3IntField(this, 6, value);
  };
  
  
  /**
   * optional uint64 protocol_version = 7;
   * @return {number}
   */
  proto.Peer.prototype.getProtocolVersion = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
  };
  
  
  /** @param {number} value */
  proto.Peer.prototype.setProtocolVersion = function(value) {
    jspb.Message.setProto3IntField(this, 7, value);
  };
  
  
  /**
   * optional int64 receive_bytes = 8;
   * @return {number}
   */
  proto.Peer.prototype.getReceiveBytes = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
  };
  
  
  /** @param {number} value */
  proto.Peer.prototype.setReceiveBytes = function(value) {
    jspb.Message.setProto3IntField(this, 8, value);
  };
  
  
  /**
   * optional int64 transmit_bytes = 9;
   * @return {number}
   */
  proto.Peer.prototype.getTransmitBytes = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
  };
  
  
  /** @param {number} value */
  proto.Peer.prototype.setTransmitBytes = function(value) {
    jspb.Message.setProto3IntField(this, 9, value);
  };
  
  
  /**
   * optional int64 last_handshake_time_unix_sec = 10;
   * @return {number}
   */
  proto.Peer.prototype.getLastHandshakeTimeUnixSec = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
  };
  
  
  /** @param {number} value */
  proto.Peer.prototype.setLastHandshakeTimeUnixSec = function(value) {
    jspb.Message.setProto3IntField(this, 10, value);
  };
  
  
  /**
   * @enum {number}
   */
  proto.UDPNetworkType = {
    UDP: 0,
    UDP4: 1,
    UDP6: 2
  };
  
  goog.object.extend(exports, proto);
  