/**
 * @fileoverview
 * @enhanceable
 * @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');
var google_protobuf_struct_pb = require('google-protobuf/google/protobuf/struct_pb.js');
var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');
goog.exportSymbol('proto.api.ActivateDeviceRequest', null, global);
goog.exportSymbol('proto.api.CreateDeviceKeysRequest', null, global);
goog.exportSymbol('proto.api.CreateDeviceRequest', null, global);
goog.exportSymbol('proto.api.DeactivateDeviceRequest', null, global);
goog.exportSymbol('proto.api.DeleteDeviceKeysRequest', null, global);
goog.exportSymbol('proto.api.DeleteDeviceRequest', null, global);
goog.exportSymbol('proto.api.Device', null, global);
goog.exportSymbol('proto.api.DeviceActivation', null, global);
goog.exportSymbol('proto.api.DeviceKeys', null, global);
goog.exportSymbol('proto.api.DeviceListItem', null, global);
goog.exportSymbol('proto.api.DeviceQueueItem', null, global);
goog.exportSymbol('proto.api.DeviceStats', null, global);
goog.exportSymbol('proto.api.DeviceStatus', null, global);
goog.exportSymbol('proto.api.EnqueueDeviceQueueItemRequest', null, global);
goog.exportSymbol('proto.api.EnqueueDeviceQueueItemResponse', null, global);
goog.exportSymbol('proto.api.FlushDevNoncesRequest', null, global);
goog.exportSymbol('proto.api.FlushDeviceQueueRequest', null, global);
goog.exportSymbol('proto.api.GetDeviceActivationRequest', null, global);
goog.exportSymbol('proto.api.GetDeviceActivationResponse', null, global);
goog.exportSymbol('proto.api.GetDeviceKeysRequest', null, global);
goog.exportSymbol('proto.api.GetDeviceKeysResponse', null, global);
goog.exportSymbol('proto.api.GetDeviceQueueItemsRequest', null, global);
goog.exportSymbol('proto.api.GetDeviceQueueItemsResponse', null, global);
goog.exportSymbol('proto.api.GetDeviceRequest', null, global);
goog.exportSymbol('proto.api.GetDeviceResponse', null, global);
goog.exportSymbol('proto.api.GetDeviceStatsRequest', null, global);
goog.exportSymbol('proto.api.GetDeviceStatsResponse', null, global);
goog.exportSymbol('proto.api.GetRandomDevAddrRequest', null, global);
goog.exportSymbol('proto.api.GetRandomDevAddrResponse', null, global);
goog.exportSymbol('proto.api.ListDevicesRequest', null, global);
goog.exportSymbol('proto.api.ListDevicesResponse', null, global);
goog.exportSymbol('proto.api.UpdateDeviceKeysRequest', null, global);
goog.exportSymbol('proto.api.UpdateDeviceRequest', 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.Device = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.Device, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.Device.displayName = 'proto.api.Device';
}


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.api.Device.prototype.toObject = function(opt_includeInstance) {
  return proto.api.Device.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.api.Device} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.Device.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui(),
    name: msg.getName(),
    description: msg.getDescription(),
    applicationId: msg.getApplicationId(),
    deviceProfileId: msg.getDeviceProfileId(),
    skipFcntCheck: msg.getSkipFcntCheck(),
    isDisabled: msg.getIsDisabled(),
    variablesMap: (f = msg.getVariablesMap(true)) ? f.toArray() : [],
    tagsMap: (f = msg.getTagsMap(true)) ? f.toArray() : []
  };

  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.Device}
 */
proto.api.Device.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.Device;
  return proto.api.Device.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.Device} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.Device}
 */
proto.api.Device.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.setDevEui(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setDescription(value);
      break;
    case 4:
      var value = /** @type {string} */ (reader.readString());
      msg.setApplicationId(value);
      break;
    case 5:
      var value = /** @type {string} */ (reader.readString());
      msg.setDeviceProfileId(value);
      break;
    case 6:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setSkipFcntCheck(value);
      break;
    case 7:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setIsDisabled(value);
      break;
    case 8:
      var value = msg.getVariablesMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString);
         });
      break;
    case 9:
      var value = msg.getTagsMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString);
         });
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.Device} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.Device.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.Device.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.Device.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = this.getName();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = this.getDescription();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
  f = this.getApplicationId();
  if (f.length > 0) {
    writer.writeString(
      4,
      f
    );
  }
  f = this.getDeviceProfileId();
  if (f.length > 0) {
    writer.writeString(
      5,
      f
    );
  }
  f = this.getSkipFcntCheck();
  if (f) {
    writer.writeBool(
      6,
      f
    );
  }
  f = this.getIsDisabled();
  if (f) {
    writer.writeBool(
      7,
      f
    );
  }
  f = this.getVariablesMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(8, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);
  }
  f = this.getTagsMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(9, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.Device} The clone.
 */
proto.api.Device.prototype.cloneMessage = function() {
  return /** @type {!proto.api.Device} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.Device.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.Device.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional string name = 2;
 * @return {string}
 */
proto.api.Device.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 2, ""));
};


/** @param {string} value  */
proto.api.Device.prototype.setName = function(value) {
  jspb.Message.setField(this, 2, value);
};


/**
 * optional string description = 3;
 * @return {string}
 */
proto.api.Device.prototype.getDescription = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 3, ""));
};


/** @param {string} value  */
proto.api.Device.prototype.setDescription = function(value) {
  jspb.Message.setField(this, 3, value);
};


/**
 * optional string application_id = 4;
 * @return {string}
 */
proto.api.Device.prototype.getApplicationId = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 4, ""));
};


/** @param {string} value  */
proto.api.Device.prototype.setApplicationId = function(value) {
  jspb.Message.setField(this, 4, value);
};


/**
 * optional string device_profile_id = 5;
 * @return {string}
 */
proto.api.Device.prototype.getDeviceProfileId = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 5, ""));
};


/** @param {string} value  */
proto.api.Device.prototype.setDeviceProfileId = function(value) {
  jspb.Message.setField(this, 5, value);
};


/**
 * optional bool skip_fcnt_check = 6;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.api.Device.prototype.getSkipFcntCheck = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldProto3(this, 6, false));
};


/** @param {boolean} value  */
proto.api.Device.prototype.setSkipFcntCheck = function(value) {
  jspb.Message.setField(this, 6, value);
};


/**
 * optional bool is_disabled = 7;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.api.Device.prototype.getIsDisabled = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldProto3(this, 7, false));
};


/** @param {boolean} value  */
proto.api.Device.prototype.setIsDisabled = function(value) {
  jspb.Message.setField(this, 7, value);
};


/**
 * map<string, string> variables = 8;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<string,string>}
 */
proto.api.Device.prototype.getVariablesMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<string,string>} */ (
      jspb.Message.getMapField(this, 8, opt_noLazyCreate,
      null));
};


/**
 * map<string, string> tags = 9;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<string,string>}
 */
proto.api.Device.prototype.getTagsMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<string,string>} */ (
      jspb.Message.getMapField(this, 9, opt_noLazyCreate,
      null));
};



/**
 * 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.DeviceStatus = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeviceStatus, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeviceStatus.displayName = 'proto.api.DeviceStatus';
}


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.api.DeviceStatus.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeviceStatus.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.api.DeviceStatus} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeviceStatus.toObject = function(includeInstance, msg) {
  var f, obj = {
    margin: msg.getMargin(),
    externalPowerSource: msg.getExternalPowerSource(),
    batteryLevel: msg.getBatteryLevel()
  };

  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.DeviceStatus}
 */
proto.api.DeviceStatus.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeviceStatus;
  return proto.api.DeviceStatus.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeviceStatus} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeviceStatus}
 */
proto.api.DeviceStatus.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readInt32());
      msg.setMargin(value);
      break;
    case 2:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setExternalPowerSource(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readFloat());
      msg.setBatteryLevel(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeviceStatus} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceStatus.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeviceStatus.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceStatus.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getMargin();
  if (f !== 0) {
    writer.writeInt32(
      1,
      f
    );
  }
  f = this.getExternalPowerSource();
  if (f) {
    writer.writeBool(
      2,
      f
    );
  }
  f = this.getBatteryLevel();
  if (f !== 0.0) {
    writer.writeFloat(
      3,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeviceStatus} The clone.
 */
proto.api.DeviceStatus.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeviceStatus} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional int32 margin = 1;
 * @return {number}
 */
proto.api.DeviceStatus.prototype.getMargin = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
};


/** @param {number} value  */
proto.api.DeviceStatus.prototype.setMargin = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional bool external_power_source = 2;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.api.DeviceStatus.prototype.getExternalPowerSource = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldProto3(this, 2, false));
};


/** @param {boolean} value  */
proto.api.DeviceStatus.prototype.setExternalPowerSource = function(value) {
  jspb.Message.setField(this, 2, value);
};


/**
 * optional float battery_level = 3;
 * @return {number}
 */
proto.api.DeviceStatus.prototype.getBatteryLevel = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 3, 0));
};


/** @param {number} value  */
proto.api.DeviceStatus.prototype.setBatteryLevel = function(value) {
  jspb.Message.setField(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.api.DeviceListItem = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeviceListItem, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeviceListItem.displayName = 'proto.api.DeviceListItem';
}


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.api.DeviceListItem.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeviceListItem.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.api.DeviceListItem} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeviceListItem.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui(),
    createdAt: (f = msg.getCreatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
    updatedAt: (f = msg.getUpdatedAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
    lastSeenAt: (f = msg.getLastSeenAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
    name: msg.getName(),
    description: msg.getDescription(),
    deviceProfileId: msg.getDeviceProfileId(),
    deviceProfileName: msg.getDeviceProfileName(),
    deviceStatus: (f = msg.getDeviceStatus()) && proto.api.DeviceStatus.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.DeviceListItem}
 */
proto.api.DeviceListItem.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeviceListItem;
  return proto.api.DeviceListItem.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeviceListItem} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeviceListItem}
 */
proto.api.DeviceListItem.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.setDevEui(value);
      break;
    case 2:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setCreatedAt(value);
      break;
    case 3:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setUpdatedAt(value);
      break;
    case 4:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setLastSeenAt(value);
      break;
    case 5:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 6:
      var value = /** @type {string} */ (reader.readString());
      msg.setDescription(value);
      break;
    case 7:
      var value = /** @type {string} */ (reader.readString());
      msg.setDeviceProfileId(value);
      break;
    case 8:
      var value = /** @type {string} */ (reader.readString());
      msg.setDeviceProfileName(value);
      break;
    case 9:
      var value = new proto.api.DeviceStatus;
      reader.readMessage(value,proto.api.DeviceStatus.deserializeBinaryFromReader);
      msg.setDeviceStatus(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeviceListItem} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceListItem.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeviceListItem.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceListItem.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = this.getCreatedAt();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getUpdatedAt();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getLastSeenAt();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getName();
  if (f.length > 0) {
    writer.writeString(
      5,
      f
    );
  }
  f = this.getDescription();
  if (f.length > 0) {
    writer.writeString(
      6,
      f
    );
  }
  f = this.getDeviceProfileId();
  if (f.length > 0) {
    writer.writeString(
      7,
      f
    );
  }
  f = this.getDeviceProfileName();
  if (f.length > 0) {
    writer.writeString(
      8,
      f
    );
  }
  f = this.getDeviceStatus();
  if (f != null) {
    writer.writeMessage(
      9,
      f,
      proto.api.DeviceStatus.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeviceListItem} The clone.
 */
proto.api.DeviceListItem.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeviceListItem} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.DeviceListItem.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.DeviceListItem.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional google.protobuf.Timestamp created_at = 2;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.DeviceListItem.prototype.getCreatedAt = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 2));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.DeviceListItem.prototype.setCreatedAt = function(value) {
  jspb.Message.setWrapperField(this, 2, value);
};


proto.api.DeviceListItem.prototype.clearCreatedAt = function() {
  this.setCreatedAt(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.DeviceListItem.prototype.hasCreatedAt = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional google.protobuf.Timestamp updated_at = 3;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.DeviceListItem.prototype.getUpdatedAt = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 3));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.DeviceListItem.prototype.setUpdatedAt = function(value) {
  jspb.Message.setWrapperField(this, 3, value);
};


proto.api.DeviceListItem.prototype.clearUpdatedAt = function() {
  this.setUpdatedAt(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.DeviceListItem.prototype.hasUpdatedAt = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional google.protobuf.Timestamp last_seen_at = 4;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.DeviceListItem.prototype.getLastSeenAt = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 4));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.DeviceListItem.prototype.setLastSeenAt = function(value) {
  jspb.Message.setWrapperField(this, 4, value);
};


proto.api.DeviceListItem.prototype.clearLastSeenAt = function() {
  this.setLastSeenAt(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.DeviceListItem.prototype.hasLastSeenAt = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional string name = 5;
 * @return {string}
 */
proto.api.DeviceListItem.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 5, ""));
};


/** @param {string} value  */
proto.api.DeviceListItem.prototype.setName = function(value) {
  jspb.Message.setField(this, 5, value);
};


/**
 * optional string description = 6;
 * @return {string}
 */
proto.api.DeviceListItem.prototype.getDescription = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 6, ""));
};


/** @param {string} value  */
proto.api.DeviceListItem.prototype.setDescription = function(value) {
  jspb.Message.setField(this, 6, value);
};


/**
 * optional string device_profile_id = 7;
 * @return {string}
 */
proto.api.DeviceListItem.prototype.getDeviceProfileId = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 7, ""));
};


/** @param {string} value  */
proto.api.DeviceListItem.prototype.setDeviceProfileId = function(value) {
  jspb.Message.setField(this, 7, value);
};


/**
 * optional string device_profile_name = 8;
 * @return {string}
 */
proto.api.DeviceListItem.prototype.getDeviceProfileName = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 8, ""));
};


/** @param {string} value  */
proto.api.DeviceListItem.prototype.setDeviceProfileName = function(value) {
  jspb.Message.setField(this, 8, value);
};


/**
 * optional DeviceStatus device_status = 9;
 * @return {proto.api.DeviceStatus}
 */
proto.api.DeviceListItem.prototype.getDeviceStatus = function() {
  return /** @type{proto.api.DeviceStatus} */ (
    jspb.Message.getWrapperField(this, proto.api.DeviceStatus, 9));
};


/** @param {proto.api.DeviceStatus|undefined} value  */
proto.api.DeviceListItem.prototype.setDeviceStatus = function(value) {
  jspb.Message.setWrapperField(this, 9, value);
};


proto.api.DeviceListItem.prototype.clearDeviceStatus = function() {
  this.setDeviceStatus(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.DeviceListItem.prototype.hasDeviceStatus = function() {
  return jspb.Message.getField(this, 9) != null;
};



/**
 * 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.DeviceKeys = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeviceKeys, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeviceKeys.displayName = 'proto.api.DeviceKeys';
}


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.api.DeviceKeys.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeviceKeys.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.api.DeviceKeys} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeviceKeys.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui(),
    nwkKey: msg.getNwkKey(),
    appKey: msg.getAppKey()
  };

  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.DeviceKeys}
 */
proto.api.DeviceKeys.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeviceKeys;
  return proto.api.DeviceKeys.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeviceKeys} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeviceKeys}
 */
proto.api.DeviceKeys.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.setDevEui(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setNwkKey(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setAppKey(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeviceKeys} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceKeys.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeviceKeys.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceKeys.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = this.getNwkKey();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = this.getAppKey();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeviceKeys} The clone.
 */
proto.api.DeviceKeys.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeviceKeys} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.DeviceKeys.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.DeviceKeys.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional string nwk_key = 2;
 * @return {string}
 */
proto.api.DeviceKeys.prototype.getNwkKey = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 2, ""));
};


/** @param {string} value  */
proto.api.DeviceKeys.prototype.setNwkKey = function(value) {
  jspb.Message.setField(this, 2, value);
};


/**
 * optional string app_key = 3;
 * @return {string}
 */
proto.api.DeviceKeys.prototype.getAppKey = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 3, ""));
};


/** @param {string} value  */
proto.api.DeviceKeys.prototype.setAppKey = function(value) {
  jspb.Message.setField(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.api.CreateDeviceRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.CreateDeviceRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.CreateDeviceRequest.displayName = 'proto.api.CreateDeviceRequest';
}


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.api.CreateDeviceRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.CreateDeviceRequest.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.api.CreateDeviceRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.CreateDeviceRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    device: (f = msg.getDevice()) && proto.api.Device.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.CreateDeviceRequest}
 */
proto.api.CreateDeviceRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.CreateDeviceRequest;
  return proto.api.CreateDeviceRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.CreateDeviceRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.CreateDeviceRequest}
 */
proto.api.CreateDeviceRequest.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.Device;
      reader.readMessage(value,proto.api.Device.deserializeBinaryFromReader);
      msg.setDevice(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.CreateDeviceRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.CreateDeviceRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.CreateDeviceRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.CreateDeviceRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevice();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.Device.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.CreateDeviceRequest} The clone.
 */
proto.api.CreateDeviceRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.CreateDeviceRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional Device device = 1;
 * @return {proto.api.Device}
 */
proto.api.CreateDeviceRequest.prototype.getDevice = function() {
  return /** @type{proto.api.Device} */ (
    jspb.Message.getWrapperField(this, proto.api.Device, 1));
};


/** @param {proto.api.Device|undefined} value  */
proto.api.CreateDeviceRequest.prototype.setDevice = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.CreateDeviceRequest.prototype.clearDevice = function() {
  this.setDevice(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.CreateDeviceRequest.prototype.hasDevice = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * 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.GetDeviceRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetDeviceRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceRequest.displayName = 'proto.api.GetDeviceRequest';
}


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.api.GetDeviceRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceRequest.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.api.GetDeviceRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.GetDeviceRequest}
 */
proto.api.GetDeviceRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceRequest;
  return proto.api.GetDeviceRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceRequest}
 */
proto.api.GetDeviceRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceRequest} The clone.
 */
proto.api.GetDeviceRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.GetDeviceRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.GetDeviceRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, 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.api.GetDeviceResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetDeviceResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceResponse.displayName = 'proto.api.GetDeviceResponse';
}


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.api.GetDeviceResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceResponse.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.api.GetDeviceResponse} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    device: (f = msg.getDevice()) && proto.api.Device.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),
    lastSeenAt: (f = msg.getLastSeenAt()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
    deviceStatus: (f = msg.getDeviceStatus()) && proto.api.DeviceStatus.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.GetDeviceResponse}
 */
proto.api.GetDeviceResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceResponse;
  return proto.api.GetDeviceResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceResponse}
 */
proto.api.GetDeviceResponse.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.Device;
      reader.readMessage(value,proto.api.Device.deserializeBinaryFromReader);
      msg.setDevice(value);
      break;
    case 2:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setCreatedAt(value);
      break;
    case 3:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setUpdatedAt(value);
      break;
    case 4:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setLastSeenAt(value);
      break;
    case 5:
      var value = new proto.api.DeviceStatus;
      reader.readMessage(value,proto.api.DeviceStatus.deserializeBinaryFromReader);
      msg.setDeviceStatus(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceResponse} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceResponse.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceResponse.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevice();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.Device.serializeBinaryToWriter
    );
  }
  f = this.getCreatedAt();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getUpdatedAt();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getLastSeenAt();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getDeviceStatus();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.api.DeviceStatus.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceResponse} The clone.
 */
proto.api.GetDeviceResponse.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceResponse} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional Device device = 1;
 * @return {proto.api.Device}
 */
proto.api.GetDeviceResponse.prototype.getDevice = function() {
  return /** @type{proto.api.Device} */ (
    jspb.Message.getWrapperField(this, proto.api.Device, 1));
};


/** @param {proto.api.Device|undefined} value  */
proto.api.GetDeviceResponse.prototype.setDevice = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.GetDeviceResponse.prototype.clearDevice = function() {
  this.setDevice(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceResponse.prototype.hasDevice = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional google.protobuf.Timestamp created_at = 2;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.GetDeviceResponse.prototype.getCreatedAt = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 2));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.GetDeviceResponse.prototype.setCreatedAt = function(value) {
  jspb.Message.setWrapperField(this, 2, value);
};


proto.api.GetDeviceResponse.prototype.clearCreatedAt = function() {
  this.setCreatedAt(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceResponse.prototype.hasCreatedAt = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional google.protobuf.Timestamp updated_at = 3;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.GetDeviceResponse.prototype.getUpdatedAt = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 3));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.GetDeviceResponse.prototype.setUpdatedAt = function(value) {
  jspb.Message.setWrapperField(this, 3, value);
};


proto.api.GetDeviceResponse.prototype.clearUpdatedAt = function() {
  this.setUpdatedAt(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceResponse.prototype.hasUpdatedAt = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional google.protobuf.Timestamp last_seen_at = 4;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.GetDeviceResponse.prototype.getLastSeenAt = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 4));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.GetDeviceResponse.prototype.setLastSeenAt = function(value) {
  jspb.Message.setWrapperField(this, 4, value);
};


proto.api.GetDeviceResponse.prototype.clearLastSeenAt = function() {
  this.setLastSeenAt(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceResponse.prototype.hasLastSeenAt = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional DeviceStatus device_status = 5;
 * @return {proto.api.DeviceStatus}
 */
proto.api.GetDeviceResponse.prototype.getDeviceStatus = function() {
  return /** @type{proto.api.DeviceStatus} */ (
    jspb.Message.getWrapperField(this, proto.api.DeviceStatus, 5));
};


/** @param {proto.api.DeviceStatus|undefined} value  */
proto.api.GetDeviceResponse.prototype.setDeviceStatus = function(value) {
  jspb.Message.setWrapperField(this, 5, value);
};


proto.api.GetDeviceResponse.prototype.clearDeviceStatus = function() {
  this.setDeviceStatus(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceResponse.prototype.hasDeviceStatus = function() {
  return jspb.Message.getField(this, 5) != null;
};



/**
 * 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.UpdateDeviceRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.UpdateDeviceRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.UpdateDeviceRequest.displayName = 'proto.api.UpdateDeviceRequest';
}


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.api.UpdateDeviceRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.UpdateDeviceRequest.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.api.UpdateDeviceRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.UpdateDeviceRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    device: (f = msg.getDevice()) && proto.api.Device.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.UpdateDeviceRequest}
 */
proto.api.UpdateDeviceRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.UpdateDeviceRequest;
  return proto.api.UpdateDeviceRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.UpdateDeviceRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.UpdateDeviceRequest}
 */
proto.api.UpdateDeviceRequest.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.Device;
      reader.readMessage(value,proto.api.Device.deserializeBinaryFromReader);
      msg.setDevice(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.UpdateDeviceRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.UpdateDeviceRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.UpdateDeviceRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.UpdateDeviceRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevice();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.Device.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.UpdateDeviceRequest} The clone.
 */
proto.api.UpdateDeviceRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.UpdateDeviceRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional Device device = 1;
 * @return {proto.api.Device}
 */
proto.api.UpdateDeviceRequest.prototype.getDevice = function() {
  return /** @type{proto.api.Device} */ (
    jspb.Message.getWrapperField(this, proto.api.Device, 1));
};


/** @param {proto.api.Device|undefined} value  */
proto.api.UpdateDeviceRequest.prototype.setDevice = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.UpdateDeviceRequest.prototype.clearDevice = function() {
  this.setDevice(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.UpdateDeviceRequest.prototype.hasDevice = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * 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.DeleteDeviceRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeleteDeviceRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeleteDeviceRequest.displayName = 'proto.api.DeleteDeviceRequest';
}


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.api.DeleteDeviceRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeleteDeviceRequest.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.api.DeleteDeviceRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeleteDeviceRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.DeleteDeviceRequest}
 */
proto.api.DeleteDeviceRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeleteDeviceRequest;
  return proto.api.DeleteDeviceRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeleteDeviceRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeleteDeviceRequest}
 */
proto.api.DeleteDeviceRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeleteDeviceRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeleteDeviceRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeleteDeviceRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeleteDeviceRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeleteDeviceRequest} The clone.
 */
proto.api.DeleteDeviceRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeleteDeviceRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.DeleteDeviceRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.DeleteDeviceRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, 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.api.ListDevicesRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.ListDevicesRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.ListDevicesRequest.displayName = 'proto.api.ListDevicesRequest';
}


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.api.ListDevicesRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.ListDevicesRequest.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.api.ListDevicesRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.ListDevicesRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    limit: msg.getLimit(),
    offset: msg.getOffset(),
    search: msg.getSearch(),
    applicationId: msg.getApplicationId(),
    multicastGroupId: msg.getMulticastGroupId()
  };

  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.ListDevicesRequest}
 */
proto.api.ListDevicesRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.ListDevicesRequest;
  return proto.api.ListDevicesRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.ListDevicesRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.ListDevicesRequest}
 */
proto.api.ListDevicesRequest.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setLimit(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setOffset(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setSearch(value);
      break;
    case 4:
      var value = /** @type {string} */ (reader.readString());
      msg.setApplicationId(value);
      break;
    case 5:
      var value = /** @type {string} */ (reader.readString());
      msg.setMulticastGroupId(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.ListDevicesRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.ListDevicesRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.ListDevicesRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.ListDevicesRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getLimit();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = this.getOffset();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = this.getSearch();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
  f = this.getApplicationId();
  if (f.length > 0) {
    writer.writeString(
      4,
      f
    );
  }
  f = this.getMulticastGroupId();
  if (f.length > 0) {
    writer.writeString(
      5,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.ListDevicesRequest} The clone.
 */
proto.api.ListDevicesRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.ListDevicesRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional uint32 limit = 1;
 * @return {number}
 */
proto.api.ListDevicesRequest.prototype.getLimit = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
};


/** @param {number} value  */
proto.api.ListDevicesRequest.prototype.setLimit = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional uint32 offset = 2;
 * @return {number}
 */
proto.api.ListDevicesRequest.prototype.getOffset = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
};


/** @param {number} value  */
proto.api.ListDevicesRequest.prototype.setOffset = function(value) {
  jspb.Message.setField(this, 2, value);
};


/**
 * optional string search = 3;
 * @return {string}
 */
proto.api.ListDevicesRequest.prototype.getSearch = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 3, ""));
};


/** @param {string} value  */
proto.api.ListDevicesRequest.prototype.setSearch = function(value) {
  jspb.Message.setField(this, 3, value);
};


/**
 * optional string application_id = 4;
 * @return {string}
 */
proto.api.ListDevicesRequest.prototype.getApplicationId = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 4, ""));
};


/** @param {string} value  */
proto.api.ListDevicesRequest.prototype.setApplicationId = function(value) {
  jspb.Message.setField(this, 4, value);
};


/**
 * optional string multicast_group_id = 5;
 * @return {string}
 */
proto.api.ListDevicesRequest.prototype.getMulticastGroupId = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 5, ""));
};


/** @param {string} value  */
proto.api.ListDevicesRequest.prototype.setMulticastGroupId = function(value) {
  jspb.Message.setField(this, 5, 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.api.ListDevicesResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.api.ListDevicesResponse.repeatedFields_, null);
};
goog.inherits(proto.api.ListDevicesResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.ListDevicesResponse.displayName = 'proto.api.ListDevicesResponse';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.api.ListDevicesResponse.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.api.ListDevicesResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.api.ListDevicesResponse.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.api.ListDevicesResponse} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.ListDevicesResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    totalCount: msg.getTotalCount(),
    resultList: jspb.Message.toObjectList(msg.getResultList(),
    proto.api.DeviceListItem.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.ListDevicesResponse}
 */
proto.api.ListDevicesResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.ListDevicesResponse;
  return proto.api.ListDevicesResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.ListDevicesResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.ListDevicesResponse}
 */
proto.api.ListDevicesResponse.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setTotalCount(value);
      break;
    case 2:
      var value = new proto.api.DeviceListItem;
      reader.readMessage(value,proto.api.DeviceListItem.deserializeBinaryFromReader);
      msg.getResultList().push(value);
      msg.setResultList(msg.getResultList());
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.ListDevicesResponse} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.ListDevicesResponse.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.ListDevicesResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.ListDevicesResponse.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getTotalCount();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = this.getResultList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.api.DeviceListItem.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.ListDevicesResponse} The clone.
 */
proto.api.ListDevicesResponse.prototype.cloneMessage = function() {
  return /** @type {!proto.api.ListDevicesResponse} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional uint32 total_count = 1;
 * @return {number}
 */
proto.api.ListDevicesResponse.prototype.getTotalCount = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
};


/** @param {number} value  */
proto.api.ListDevicesResponse.prototype.setTotalCount = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * repeated DeviceListItem result = 2;
 * If you change this array by adding, removing or replacing elements, or if you
 * replace the array itself, then you must call the setter to update it.
 * @return {!Array.<!proto.api.DeviceListItem>}
 */
proto.api.ListDevicesResponse.prototype.getResultList = function() {
  return /** @type{!Array.<!proto.api.DeviceListItem>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.api.DeviceListItem, 2));
};


/** @param {Array.<!proto.api.DeviceListItem>} value  */
proto.api.ListDevicesResponse.prototype.setResultList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 2, value);
};


proto.api.ListDevicesResponse.prototype.clearResultList = function() {
  this.setResultList([]);
};



/**
 * 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.CreateDeviceKeysRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.CreateDeviceKeysRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.CreateDeviceKeysRequest.displayName = 'proto.api.CreateDeviceKeysRequest';
}


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.api.CreateDeviceKeysRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.CreateDeviceKeysRequest.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.api.CreateDeviceKeysRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.CreateDeviceKeysRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    deviceKeys: (f = msg.getDeviceKeys()) && proto.api.DeviceKeys.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.CreateDeviceKeysRequest}
 */
proto.api.CreateDeviceKeysRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.CreateDeviceKeysRequest;
  return proto.api.CreateDeviceKeysRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.CreateDeviceKeysRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.CreateDeviceKeysRequest}
 */
proto.api.CreateDeviceKeysRequest.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.DeviceKeys;
      reader.readMessage(value,proto.api.DeviceKeys.deserializeBinaryFromReader);
      msg.setDeviceKeys(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.CreateDeviceKeysRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.CreateDeviceKeysRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.CreateDeviceKeysRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.CreateDeviceKeysRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDeviceKeys();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.DeviceKeys.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.CreateDeviceKeysRequest} The clone.
 */
proto.api.CreateDeviceKeysRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.CreateDeviceKeysRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional DeviceKeys device_keys = 1;
 * @return {proto.api.DeviceKeys}
 */
proto.api.CreateDeviceKeysRequest.prototype.getDeviceKeys = function() {
  return /** @type{proto.api.DeviceKeys} */ (
    jspb.Message.getWrapperField(this, proto.api.DeviceKeys, 1));
};


/** @param {proto.api.DeviceKeys|undefined} value  */
proto.api.CreateDeviceKeysRequest.prototype.setDeviceKeys = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.CreateDeviceKeysRequest.prototype.clearDeviceKeys = function() {
  this.setDeviceKeys(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.CreateDeviceKeysRequest.prototype.hasDeviceKeys = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * 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.GetDeviceKeysRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetDeviceKeysRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceKeysRequest.displayName = 'proto.api.GetDeviceKeysRequest';
}


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.api.GetDeviceKeysRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceKeysRequest.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.api.GetDeviceKeysRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceKeysRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.GetDeviceKeysRequest}
 */
proto.api.GetDeviceKeysRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceKeysRequest;
  return proto.api.GetDeviceKeysRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceKeysRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceKeysRequest}
 */
proto.api.GetDeviceKeysRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceKeysRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceKeysRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceKeysRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceKeysRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceKeysRequest} The clone.
 */
proto.api.GetDeviceKeysRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceKeysRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.GetDeviceKeysRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.GetDeviceKeysRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, 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.api.GetDeviceKeysResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetDeviceKeysResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceKeysResponse.displayName = 'proto.api.GetDeviceKeysResponse';
}


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.api.GetDeviceKeysResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceKeysResponse.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.api.GetDeviceKeysResponse} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceKeysResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    deviceKeys: (f = msg.getDeviceKeys()) && proto.api.DeviceKeys.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.GetDeviceKeysResponse}
 */
proto.api.GetDeviceKeysResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceKeysResponse;
  return proto.api.GetDeviceKeysResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceKeysResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceKeysResponse}
 */
proto.api.GetDeviceKeysResponse.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.DeviceKeys;
      reader.readMessage(value,proto.api.DeviceKeys.deserializeBinaryFromReader);
      msg.setDeviceKeys(value);
      break;
    case 2:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setCreatedAt(value);
      break;
    case 3:
      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;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceKeysResponse} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceKeysResponse.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceKeysResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceKeysResponse.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDeviceKeys();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.DeviceKeys.serializeBinaryToWriter
    );
  }
  f = this.getCreatedAt();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getUpdatedAt();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceKeysResponse} The clone.
 */
proto.api.GetDeviceKeysResponse.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceKeysResponse} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional DeviceKeys device_keys = 1;
 * @return {proto.api.DeviceKeys}
 */
proto.api.GetDeviceKeysResponse.prototype.getDeviceKeys = function() {
  return /** @type{proto.api.DeviceKeys} */ (
    jspb.Message.getWrapperField(this, proto.api.DeviceKeys, 1));
};


/** @param {proto.api.DeviceKeys|undefined} value  */
proto.api.GetDeviceKeysResponse.prototype.setDeviceKeys = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.GetDeviceKeysResponse.prototype.clearDeviceKeys = function() {
  this.setDeviceKeys(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceKeysResponse.prototype.hasDeviceKeys = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional google.protobuf.Timestamp created_at = 2;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.GetDeviceKeysResponse.prototype.getCreatedAt = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 2));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.GetDeviceKeysResponse.prototype.setCreatedAt = function(value) {
  jspb.Message.setWrapperField(this, 2, value);
};


proto.api.GetDeviceKeysResponse.prototype.clearCreatedAt = function() {
  this.setCreatedAt(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceKeysResponse.prototype.hasCreatedAt = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional google.protobuf.Timestamp updated_at = 3;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.GetDeviceKeysResponse.prototype.getUpdatedAt = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 3));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.GetDeviceKeysResponse.prototype.setUpdatedAt = function(value) {
  jspb.Message.setWrapperField(this, 3, value);
};


proto.api.GetDeviceKeysResponse.prototype.clearUpdatedAt = function() {
  this.setUpdatedAt(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceKeysResponse.prototype.hasUpdatedAt = function() {
  return jspb.Message.getField(this, 3) != null;
};



/**
 * 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.UpdateDeviceKeysRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.UpdateDeviceKeysRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.UpdateDeviceKeysRequest.displayName = 'proto.api.UpdateDeviceKeysRequest';
}


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.api.UpdateDeviceKeysRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.UpdateDeviceKeysRequest.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.api.UpdateDeviceKeysRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.UpdateDeviceKeysRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    deviceKeys: (f = msg.getDeviceKeys()) && proto.api.DeviceKeys.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.UpdateDeviceKeysRequest}
 */
proto.api.UpdateDeviceKeysRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.UpdateDeviceKeysRequest;
  return proto.api.UpdateDeviceKeysRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.UpdateDeviceKeysRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.UpdateDeviceKeysRequest}
 */
proto.api.UpdateDeviceKeysRequest.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.DeviceKeys;
      reader.readMessage(value,proto.api.DeviceKeys.deserializeBinaryFromReader);
      msg.setDeviceKeys(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.UpdateDeviceKeysRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.UpdateDeviceKeysRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.UpdateDeviceKeysRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.UpdateDeviceKeysRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDeviceKeys();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.DeviceKeys.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.UpdateDeviceKeysRequest} The clone.
 */
proto.api.UpdateDeviceKeysRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.UpdateDeviceKeysRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional DeviceKeys device_keys = 1;
 * @return {proto.api.DeviceKeys}
 */
proto.api.UpdateDeviceKeysRequest.prototype.getDeviceKeys = function() {
  return /** @type{proto.api.DeviceKeys} */ (
    jspb.Message.getWrapperField(this, proto.api.DeviceKeys, 1));
};


/** @param {proto.api.DeviceKeys|undefined} value  */
proto.api.UpdateDeviceKeysRequest.prototype.setDeviceKeys = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.UpdateDeviceKeysRequest.prototype.clearDeviceKeys = function() {
  this.setDeviceKeys(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.UpdateDeviceKeysRequest.prototype.hasDeviceKeys = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * 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.DeleteDeviceKeysRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeleteDeviceKeysRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeleteDeviceKeysRequest.displayName = 'proto.api.DeleteDeviceKeysRequest';
}


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.api.DeleteDeviceKeysRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeleteDeviceKeysRequest.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.api.DeleteDeviceKeysRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeleteDeviceKeysRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.DeleteDeviceKeysRequest}
 */
proto.api.DeleteDeviceKeysRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeleteDeviceKeysRequest;
  return proto.api.DeleteDeviceKeysRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeleteDeviceKeysRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeleteDeviceKeysRequest}
 */
proto.api.DeleteDeviceKeysRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeleteDeviceKeysRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeleteDeviceKeysRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeleteDeviceKeysRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeleteDeviceKeysRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeleteDeviceKeysRequest} The clone.
 */
proto.api.DeleteDeviceKeysRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeleteDeviceKeysRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.DeleteDeviceKeysRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.DeleteDeviceKeysRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, 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.api.DeviceActivation = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeviceActivation, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeviceActivation.displayName = 'proto.api.DeviceActivation';
}


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.api.DeviceActivation.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeviceActivation.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.api.DeviceActivation} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeviceActivation.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui(),
    devAddr: msg.getDevAddr(),
    appSKey: msg.getAppSKey(),
    nwkSEncKey: msg.getNwkSEncKey(),
    sNwkSIntKey: msg.getSNwkSIntKey(),
    fNwkSIntKey: msg.getFNwkSIntKey(),
    fCntUp: msg.getFCntUp(),
    nFCntDown: msg.getNFCntDown(),
    aFCntDown: msg.getAFCntDown()
  };

  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.DeviceActivation}
 */
proto.api.DeviceActivation.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeviceActivation;
  return proto.api.DeviceActivation.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeviceActivation} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeviceActivation}
 */
proto.api.DeviceActivation.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.setDevEui(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setDevAddr(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setAppSKey(value);
      break;
    case 4:
      var value = /** @type {string} */ (reader.readString());
      msg.setNwkSEncKey(value);
      break;
    case 8:
      var value = /** @type {string} */ (reader.readString());
      msg.setSNwkSIntKey(value);
      break;
    case 9:
      var value = /** @type {string} */ (reader.readString());
      msg.setFNwkSIntKey(value);
      break;
    case 5:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setFCntUp(value);
      break;
    case 6:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setNFCntDown(value);
      break;
    case 10:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setAFCntDown(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeviceActivation} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceActivation.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeviceActivation.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceActivation.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = this.getDevAddr();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = this.getAppSKey();
  if (f.length > 0) {
    writer.writeString(
      3,
      f
    );
  }
  f = this.getNwkSEncKey();
  if (f.length > 0) {
    writer.writeString(
      4,
      f
    );
  }
  f = this.getSNwkSIntKey();
  if (f.length > 0) {
    writer.writeString(
      8,
      f
    );
  }
  f = this.getFNwkSIntKey();
  if (f.length > 0) {
    writer.writeString(
      9,
      f
    );
  }
  f = this.getFCntUp();
  if (f !== 0) {
    writer.writeUint32(
      5,
      f
    );
  }
  f = this.getNFCntDown();
  if (f !== 0) {
    writer.writeUint32(
      6,
      f
    );
  }
  f = this.getAFCntDown();
  if (f !== 0) {
    writer.writeUint32(
      10,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeviceActivation} The clone.
 */
proto.api.DeviceActivation.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeviceActivation} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.DeviceActivation.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.DeviceActivation.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional string dev_addr = 2;
 * @return {string}
 */
proto.api.DeviceActivation.prototype.getDevAddr = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 2, ""));
};


/** @param {string} value  */
proto.api.DeviceActivation.prototype.setDevAddr = function(value) {
  jspb.Message.setField(this, 2, value);
};


/**
 * optional string app_s_key = 3;
 * @return {string}
 */
proto.api.DeviceActivation.prototype.getAppSKey = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 3, ""));
};


/** @param {string} value  */
proto.api.DeviceActivation.prototype.setAppSKey = function(value) {
  jspb.Message.setField(this, 3, value);
};


/**
 * optional string nwk_s_enc_key = 4;
 * @return {string}
 */
proto.api.DeviceActivation.prototype.getNwkSEncKey = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 4, ""));
};


/** @param {string} value  */
proto.api.DeviceActivation.prototype.setNwkSEncKey = function(value) {
  jspb.Message.setField(this, 4, value);
};


/**
 * optional string s_nwk_s_int_key = 8;
 * @return {string}
 */
proto.api.DeviceActivation.prototype.getSNwkSIntKey = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 8, ""));
};


/** @param {string} value  */
proto.api.DeviceActivation.prototype.setSNwkSIntKey = function(value) {
  jspb.Message.setField(this, 8, value);
};


/**
 * optional string f_nwk_s_int_key = 9;
 * @return {string}
 */
proto.api.DeviceActivation.prototype.getFNwkSIntKey = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 9, ""));
};


/** @param {string} value  */
proto.api.DeviceActivation.prototype.setFNwkSIntKey = function(value) {
  jspb.Message.setField(this, 9, value);
};


/**
 * optional uint32 f_cnt_up = 5;
 * @return {number}
 */
proto.api.DeviceActivation.prototype.getFCntUp = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 5, 0));
};


/** @param {number} value  */
proto.api.DeviceActivation.prototype.setFCntUp = function(value) {
  jspb.Message.setField(this, 5, value);
};


/**
 * optional uint32 n_f_cnt_down = 6;
 * @return {number}
 */
proto.api.DeviceActivation.prototype.getNFCntDown = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 6, 0));
};


/** @param {number} value  */
proto.api.DeviceActivation.prototype.setNFCntDown = function(value) {
  jspb.Message.setField(this, 6, value);
};


/**
 * optional uint32 a_f_cnt_down = 10;
 * @return {number}
 */
proto.api.DeviceActivation.prototype.getAFCntDown = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 10, 0));
};


/** @param {number} value  */
proto.api.DeviceActivation.prototype.setAFCntDown = function(value) {
  jspb.Message.setField(this, 10, 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.api.ActivateDeviceRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.ActivateDeviceRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.ActivateDeviceRequest.displayName = 'proto.api.ActivateDeviceRequest';
}


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.api.ActivateDeviceRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.ActivateDeviceRequest.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.api.ActivateDeviceRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.ActivateDeviceRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    deviceActivation: (f = msg.getDeviceActivation()) && proto.api.DeviceActivation.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.ActivateDeviceRequest}
 */
proto.api.ActivateDeviceRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.ActivateDeviceRequest;
  return proto.api.ActivateDeviceRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.ActivateDeviceRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.ActivateDeviceRequest}
 */
proto.api.ActivateDeviceRequest.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.DeviceActivation;
      reader.readMessage(value,proto.api.DeviceActivation.deserializeBinaryFromReader);
      msg.setDeviceActivation(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.ActivateDeviceRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.ActivateDeviceRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.ActivateDeviceRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.ActivateDeviceRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDeviceActivation();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.DeviceActivation.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.ActivateDeviceRequest} The clone.
 */
proto.api.ActivateDeviceRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.ActivateDeviceRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional DeviceActivation device_activation = 1;
 * @return {proto.api.DeviceActivation}
 */
proto.api.ActivateDeviceRequest.prototype.getDeviceActivation = function() {
  return /** @type{proto.api.DeviceActivation} */ (
    jspb.Message.getWrapperField(this, proto.api.DeviceActivation, 1));
};


/** @param {proto.api.DeviceActivation|undefined} value  */
proto.api.ActivateDeviceRequest.prototype.setDeviceActivation = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.ActivateDeviceRequest.prototype.clearDeviceActivation = function() {
  this.setDeviceActivation(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.ActivateDeviceRequest.prototype.hasDeviceActivation = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * 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.DeactivateDeviceRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeactivateDeviceRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeactivateDeviceRequest.displayName = 'proto.api.DeactivateDeviceRequest';
}


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.api.DeactivateDeviceRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeactivateDeviceRequest.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.api.DeactivateDeviceRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeactivateDeviceRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.DeactivateDeviceRequest}
 */
proto.api.DeactivateDeviceRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeactivateDeviceRequest;
  return proto.api.DeactivateDeviceRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeactivateDeviceRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeactivateDeviceRequest}
 */
proto.api.DeactivateDeviceRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeactivateDeviceRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeactivateDeviceRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeactivateDeviceRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeactivateDeviceRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeactivateDeviceRequest} The clone.
 */
proto.api.DeactivateDeviceRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeactivateDeviceRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.DeactivateDeviceRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.DeactivateDeviceRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, 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.api.GetDeviceActivationRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetDeviceActivationRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceActivationRequest.displayName = 'proto.api.GetDeviceActivationRequest';
}


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.api.GetDeviceActivationRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceActivationRequest.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.api.GetDeviceActivationRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceActivationRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.GetDeviceActivationRequest}
 */
proto.api.GetDeviceActivationRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceActivationRequest;
  return proto.api.GetDeviceActivationRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceActivationRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceActivationRequest}
 */
proto.api.GetDeviceActivationRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceActivationRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceActivationRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceActivationRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceActivationRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceActivationRequest} The clone.
 */
proto.api.GetDeviceActivationRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceActivationRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.GetDeviceActivationRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.GetDeviceActivationRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, 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.api.GetDeviceActivationResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetDeviceActivationResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceActivationResponse.displayName = 'proto.api.GetDeviceActivationResponse';
}


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.api.GetDeviceActivationResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceActivationResponse.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.api.GetDeviceActivationResponse} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceActivationResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    deviceActivation: (f = msg.getDeviceActivation()) && proto.api.DeviceActivation.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.GetDeviceActivationResponse}
 */
proto.api.GetDeviceActivationResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceActivationResponse;
  return proto.api.GetDeviceActivationResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceActivationResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceActivationResponse}
 */
proto.api.GetDeviceActivationResponse.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.DeviceActivation;
      reader.readMessage(value,proto.api.DeviceActivation.deserializeBinaryFromReader);
      msg.setDeviceActivation(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceActivationResponse} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceActivationResponse.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceActivationResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceActivationResponse.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDeviceActivation();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.DeviceActivation.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceActivationResponse} The clone.
 */
proto.api.GetDeviceActivationResponse.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceActivationResponse} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional DeviceActivation device_activation = 1;
 * @return {proto.api.DeviceActivation}
 */
proto.api.GetDeviceActivationResponse.prototype.getDeviceActivation = function() {
  return /** @type{proto.api.DeviceActivation} */ (
    jspb.Message.getWrapperField(this, proto.api.DeviceActivation, 1));
};


/** @param {proto.api.DeviceActivation|undefined} value  */
proto.api.GetDeviceActivationResponse.prototype.setDeviceActivation = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.GetDeviceActivationResponse.prototype.clearDeviceActivation = function() {
  this.setDeviceActivation(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceActivationResponse.prototype.hasDeviceActivation = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * 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.GetRandomDevAddrRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetRandomDevAddrRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetRandomDevAddrRequest.displayName = 'proto.api.GetRandomDevAddrRequest';
}


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.api.GetRandomDevAddrRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetRandomDevAddrRequest.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.api.GetRandomDevAddrRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetRandomDevAddrRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.GetRandomDevAddrRequest}
 */
proto.api.GetRandomDevAddrRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetRandomDevAddrRequest;
  return proto.api.GetRandomDevAddrRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetRandomDevAddrRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetRandomDevAddrRequest}
 */
proto.api.GetRandomDevAddrRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetRandomDevAddrRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetRandomDevAddrRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetRandomDevAddrRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetRandomDevAddrRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetRandomDevAddrRequest} The clone.
 */
proto.api.GetRandomDevAddrRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetRandomDevAddrRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.GetRandomDevAddrRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.GetRandomDevAddrRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, 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.api.GetRandomDevAddrResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetRandomDevAddrResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetRandomDevAddrResponse.displayName = 'proto.api.GetRandomDevAddrResponse';
}


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.api.GetRandomDevAddrResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetRandomDevAddrResponse.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.api.GetRandomDevAddrResponse} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetRandomDevAddrResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    devAddr: msg.getDevAddr()
  };

  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.GetRandomDevAddrResponse}
 */
proto.api.GetRandomDevAddrResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetRandomDevAddrResponse;
  return proto.api.GetRandomDevAddrResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetRandomDevAddrResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetRandomDevAddrResponse}
 */
proto.api.GetRandomDevAddrResponse.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.setDevAddr(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetRandomDevAddrResponse} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetRandomDevAddrResponse.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetRandomDevAddrResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetRandomDevAddrResponse.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevAddr();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetRandomDevAddrResponse} The clone.
 */
proto.api.GetRandomDevAddrResponse.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetRandomDevAddrResponse} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_addr = 1;
 * @return {string}
 */
proto.api.GetRandomDevAddrResponse.prototype.getDevAddr = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.GetRandomDevAddrResponse.prototype.setDevAddr = function(value) {
  jspb.Message.setField(this, 1, 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.api.GetDeviceStatsRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetDeviceStatsRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceStatsRequest.displayName = 'proto.api.GetDeviceStatsRequest';
}


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.api.GetDeviceStatsRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceStatsRequest.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.api.GetDeviceStatsRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceStatsRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui(),
    start: (f = msg.getStart()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
    end: (f = msg.getEnd()) && 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.GetDeviceStatsRequest}
 */
proto.api.GetDeviceStatsRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceStatsRequest;
  return proto.api.GetDeviceStatsRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceStatsRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceStatsRequest}
 */
proto.api.GetDeviceStatsRequest.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.setDevEui(value);
      break;
    case 2:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setStart(value);
      break;
    case 3:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setEnd(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceStatsRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceStatsRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceStatsRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceStatsRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = this.getStart();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getEnd();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceStatsRequest} The clone.
 */
proto.api.GetDeviceStatsRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceStatsRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.GetDeviceStatsRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.GetDeviceStatsRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional google.protobuf.Timestamp start = 2;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.GetDeviceStatsRequest.prototype.getStart = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 2));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.GetDeviceStatsRequest.prototype.setStart = function(value) {
  jspb.Message.setWrapperField(this, 2, value);
};


proto.api.GetDeviceStatsRequest.prototype.clearStart = function() {
  this.setStart(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceStatsRequest.prototype.hasStart = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional google.protobuf.Timestamp end = 3;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.GetDeviceStatsRequest.prototype.getEnd = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 3));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.GetDeviceStatsRequest.prototype.setEnd = function(value) {
  jspb.Message.setWrapperField(this, 3, value);
};


proto.api.GetDeviceStatsRequest.prototype.clearEnd = function() {
  this.setEnd(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.GetDeviceStatsRequest.prototype.hasEnd = function() {
  return jspb.Message.getField(this, 3) != null;
};



/**
 * 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.GetDeviceStatsResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.api.GetDeviceStatsResponse.repeatedFields_, null);
};
goog.inherits(proto.api.GetDeviceStatsResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceStatsResponse.displayName = 'proto.api.GetDeviceStatsResponse';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.api.GetDeviceStatsResponse.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.api.GetDeviceStatsResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceStatsResponse.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.api.GetDeviceStatsResponse} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceStatsResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    resultList: jspb.Message.toObjectList(msg.getResultList(),
    proto.api.DeviceStats.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.GetDeviceStatsResponse}
 */
proto.api.GetDeviceStatsResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceStatsResponse;
  return proto.api.GetDeviceStatsResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceStatsResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceStatsResponse}
 */
proto.api.GetDeviceStatsResponse.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.DeviceStats;
      reader.readMessage(value,proto.api.DeviceStats.deserializeBinaryFromReader);
      msg.getResultList().push(value);
      msg.setResultList(msg.getResultList());
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceStatsResponse} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceStatsResponse.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceStatsResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceStatsResponse.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getResultList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.api.DeviceStats.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceStatsResponse} The clone.
 */
proto.api.GetDeviceStatsResponse.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceStatsResponse} */ (jspb.Message.cloneMessage(this));
};


/**
 * repeated DeviceStats result = 1;
 * If you change this array by adding, removing or replacing elements, or if you
 * replace the array itself, then you must call the setter to update it.
 * @return {!Array.<!proto.api.DeviceStats>}
 */
proto.api.GetDeviceStatsResponse.prototype.getResultList = function() {
  return /** @type{!Array.<!proto.api.DeviceStats>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.api.DeviceStats, 1));
};


/** @param {Array.<!proto.api.DeviceStats>} value  */
proto.api.GetDeviceStatsResponse.prototype.setResultList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 1, value);
};


proto.api.GetDeviceStatsResponse.prototype.clearResultList = function() {
  this.setResultList([]);
};



/**
 * 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.DeviceStats = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeviceStats, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeviceStats.displayName = 'proto.api.DeviceStats';
}


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.api.DeviceStats.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeviceStats.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.api.DeviceStats} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeviceStats.toObject = function(includeInstance, msg) {
  var f, obj = {
    time: (f = msg.getTime()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
    rxPackets: msg.getRxPackets(),
    gwRssi: msg.getGwRssi(),
    gwSnr: msg.getGwSnr(),
    rxPacketsPerFrequencyMap: (f = msg.getRxPacketsPerFrequencyMap(true)) ? f.toArray() : [],
    rxPacketsPerDrMap: (f = msg.getRxPacketsPerDrMap(true)) ? f.toArray() : [],
    errorsMap: (f = msg.getErrorsMap(true)) ? f.toArray() : []
  };

  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.DeviceStats}
 */
proto.api.DeviceStats.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeviceStats;
  return proto.api.DeviceStats.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeviceStats} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeviceStats}
 */
proto.api.DeviceStats.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new google_protobuf_timestamp_pb.Timestamp;
      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
      msg.setTime(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setRxPackets(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readFloat());
      msg.setGwRssi(value);
      break;
    case 4:
      var value = /** @type {number} */ (reader.readFloat());
      msg.setGwSnr(value);
      break;
    case 5:
      var value = msg.getRxPacketsPerFrequencyMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint32, jspb.BinaryReader.prototype.readUint32);
         });
      break;
    case 6:
      var value = msg.getRxPacketsPerDrMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readUint32, jspb.BinaryReader.prototype.readUint32);
         });
      break;
    case 7:
      var value = msg.getErrorsMap();
      reader.readMessage(value, function(message, reader) {
        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readUint32);
         });
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeviceStats} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceStats.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeviceStats.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceStats.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getTime();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
    );
  }
  f = this.getRxPackets();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = this.getGwRssi();
  if (f !== 0.0) {
    writer.writeFloat(
      3,
      f
    );
  }
  f = this.getGwSnr();
  if (f !== 0.0) {
    writer.writeFloat(
      4,
      f
    );
  }
  f = this.getRxPacketsPerFrequencyMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(5, writer, jspb.BinaryWriter.prototype.writeUint32, jspb.BinaryWriter.prototype.writeUint32);
  }
  f = this.getRxPacketsPerDrMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(6, writer, jspb.BinaryWriter.prototype.writeUint32, jspb.BinaryWriter.prototype.writeUint32);
  }
  f = this.getErrorsMap(true);
  if (f && f.getLength() > 0) {
    f.serializeBinary(7, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeUint32);
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeviceStats} The clone.
 */
proto.api.DeviceStats.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeviceStats} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional google.protobuf.Timestamp time = 1;
 * @return {proto.google.protobuf.Timestamp}
 */
proto.api.DeviceStats.prototype.getTime = function() {
  return /** @type{proto.google.protobuf.Timestamp} */ (
    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1));
};


/** @param {proto.google.protobuf.Timestamp|undefined} value  */
proto.api.DeviceStats.prototype.setTime = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.DeviceStats.prototype.clearTime = function() {
  this.setTime(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.DeviceStats.prototype.hasTime = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional uint32 rx_packets = 2;
 * @return {number}
 */
proto.api.DeviceStats.prototype.getRxPackets = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
};


/** @param {number} value  */
proto.api.DeviceStats.prototype.setRxPackets = function(value) {
  jspb.Message.setField(this, 2, value);
};


/**
 * optional float gw_rssi = 3;
 * @return {number}
 */
proto.api.DeviceStats.prototype.getGwRssi = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 3, 0));
};


/** @param {number} value  */
proto.api.DeviceStats.prototype.setGwRssi = function(value) {
  jspb.Message.setField(this, 3, value);
};


/**
 * optional float gw_snr = 4;
 * @return {number}
 */
proto.api.DeviceStats.prototype.getGwSnr = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 4, 0));
};


/** @param {number} value  */
proto.api.DeviceStats.prototype.setGwSnr = function(value) {
  jspb.Message.setField(this, 4, value);
};


/**
 * map<uint32, uint32> rx_packets_per_frequency = 5;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<number,number>}
 */
proto.api.DeviceStats.prototype.getRxPacketsPerFrequencyMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<number,number>} */ (
      jspb.Message.getMapField(this, 5, opt_noLazyCreate,
      null));
};


/**
 * map<uint32, uint32> rx_packets_per_dr = 6;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<number,number>}
 */
proto.api.DeviceStats.prototype.getRxPacketsPerDrMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<number,number>} */ (
      jspb.Message.getMapField(this, 6, opt_noLazyCreate,
      null));
};


/**
 * map<string, uint32> errors = 7;
 * @param {boolean=} opt_noLazyCreate Do not create the map if
 * empty, instead returning `undefined`
 * @return {!jspb.Map<string,number>}
 */
proto.api.DeviceStats.prototype.getErrorsMap = function(opt_noLazyCreate) {
  return /** @type {!jspb.Map<string,number>} */ (
      jspb.Message.getMapField(this, 7, opt_noLazyCreate,
      null));
};



/**
 * 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.DeviceQueueItem = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.DeviceQueueItem, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.DeviceQueueItem.displayName = 'proto.api.DeviceQueueItem';
}


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.api.DeviceQueueItem.prototype.toObject = function(opt_includeInstance) {
  return proto.api.DeviceQueueItem.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.api.DeviceQueueItem} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.DeviceQueueItem.toObject = function(includeInstance, msg) {
  var f, obj = {
    id: msg.getId(),
    devEui: msg.getDevEui(),
    confirmed: msg.getConfirmed(),
    fPort: msg.getFPort(),
    data: msg.getData_asB64(),
    object: (f = msg.getObject()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),
    isPending: msg.getIsPending(),
    fCntDown: msg.getFCntDown()
  };

  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.DeviceQueueItem}
 */
proto.api.DeviceQueueItem.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.DeviceQueueItem;
  return proto.api.DeviceQueueItem.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.DeviceQueueItem} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.DeviceQueueItem}
 */
proto.api.DeviceQueueItem.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.setDevEui(value);
      break;
    case 3:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setConfirmed(value);
      break;
    case 4:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setFPort(value);
      break;
    case 5:
      var value = /** @type {!Uint8Array} */ (reader.readBytes());
      msg.setData(value);
      break;
    case 6:
      var value = new google_protobuf_struct_pb.Struct;
      reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);
      msg.setObject(value);
      break;
    case 7:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setIsPending(value);
      break;
    case 8:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setFCntDown(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.DeviceQueueItem} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceQueueItem.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.DeviceQueueItem.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.DeviceQueueItem.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      2,
      f
    );
  }
  f = this.getConfirmed();
  if (f) {
    writer.writeBool(
      3,
      f
    );
  }
  f = this.getFPort();
  if (f !== 0) {
    writer.writeUint32(
      4,
      f
    );
  }
  f = this.getData_asU8();
  if (f.length > 0) {
    writer.writeBytes(
      5,
      f
    );
  }
  f = this.getObject();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      google_protobuf_struct_pb.Struct.serializeBinaryToWriter
    );
  }
  f = this.getIsPending();
  if (f) {
    writer.writeBool(
      7,
      f
    );
  }
  f = this.getFCntDown();
  if (f !== 0) {
    writer.writeUint32(
      8,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.DeviceQueueItem} The clone.
 */
proto.api.DeviceQueueItem.prototype.cloneMessage = function() {
  return /** @type {!proto.api.DeviceQueueItem} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string id = 1;
 * @return {string}
 */
proto.api.DeviceQueueItem.prototype.getId = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.DeviceQueueItem.prototype.setId = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional string dev_eui = 2;
 * @return {string}
 */
proto.api.DeviceQueueItem.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 2, ""));
};


/** @param {string} value  */
proto.api.DeviceQueueItem.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 2, value);
};


/**
 * optional bool confirmed = 3;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.api.DeviceQueueItem.prototype.getConfirmed = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldProto3(this, 3, false));
};


/** @param {boolean} value  */
proto.api.DeviceQueueItem.prototype.setConfirmed = function(value) {
  jspb.Message.setField(this, 3, value);
};


/**
 * optional uint32 f_port = 4;
 * @return {number}
 */
proto.api.DeviceQueueItem.prototype.getFPort = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 4, 0));
};


/** @param {number} value  */
proto.api.DeviceQueueItem.prototype.setFPort = function(value) {
  jspb.Message.setField(this, 4, value);
};


/**
 * optional bytes data = 5;
 * @return {!(string|Uint8Array)}
 */
proto.api.DeviceQueueItem.prototype.getData = function() {
  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldProto3(this, 5, ""));
};


/**
 * optional bytes data = 5;
 * This is a type-conversion wrapper around `getData()`
 * @return {string}
 */
proto.api.DeviceQueueItem.prototype.getData_asB64 = function() {
  return /** @type {string} */ (jspb.Message.bytesAsB64(
      this.getData()));
};


/**
 * optional bytes data = 5;
 * Note that Uint8Array is not supported on all browsers.
 * @see http://caniuse.com/Uint8Array
 * This is a type-conversion wrapper around `getData()`
 * @return {!Uint8Array}
 */
proto.api.DeviceQueueItem.prototype.getData_asU8 = function() {
  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
      this.getData()));
};


/** @param {!(string|Uint8Array)} value  */
proto.api.DeviceQueueItem.prototype.setData = function(value) {
  jspb.Message.setField(this, 5, value);
};


/**
 * optional google.protobuf.Struct object = 6;
 * @return {proto.google.protobuf.Struct}
 */
proto.api.DeviceQueueItem.prototype.getObject = function() {
  return /** @type{proto.google.protobuf.Struct} */ (
    jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 6));
};


/** @param {proto.google.protobuf.Struct|undefined} value  */
proto.api.DeviceQueueItem.prototype.setObject = function(value) {
  jspb.Message.setWrapperField(this, 6, value);
};


proto.api.DeviceQueueItem.prototype.clearObject = function() {
  this.setObject(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.DeviceQueueItem.prototype.hasObject = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional bool is_pending = 7;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.api.DeviceQueueItem.prototype.getIsPending = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldProto3(this, 7, false));
};


/** @param {boolean} value  */
proto.api.DeviceQueueItem.prototype.setIsPending = function(value) {
  jspb.Message.setField(this, 7, value);
};


/**
 * optional uint32 f_cnt_down = 8;
 * @return {number}
 */
proto.api.DeviceQueueItem.prototype.getFCntDown = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 8, 0));
};


/** @param {number} value  */
proto.api.DeviceQueueItem.prototype.setFCntDown = function(value) {
  jspb.Message.setField(this, 8, 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.api.EnqueueDeviceQueueItemRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.EnqueueDeviceQueueItemRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.EnqueueDeviceQueueItemRequest.displayName = 'proto.api.EnqueueDeviceQueueItemRequest';
}


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.api.EnqueueDeviceQueueItemRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.EnqueueDeviceQueueItemRequest.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.api.EnqueueDeviceQueueItemRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.EnqueueDeviceQueueItemRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    item: (f = msg.getItem()) && proto.api.DeviceQueueItem.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.EnqueueDeviceQueueItemRequest}
 */
proto.api.EnqueueDeviceQueueItemRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.EnqueueDeviceQueueItemRequest;
  return proto.api.EnqueueDeviceQueueItemRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.EnqueueDeviceQueueItemRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.EnqueueDeviceQueueItemRequest}
 */
proto.api.EnqueueDeviceQueueItemRequest.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.api.DeviceQueueItem;
      reader.readMessage(value,proto.api.DeviceQueueItem.deserializeBinaryFromReader);
      msg.setItem(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.EnqueueDeviceQueueItemRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.EnqueueDeviceQueueItemRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.EnqueueDeviceQueueItemRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.EnqueueDeviceQueueItemRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getItem();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.api.DeviceQueueItem.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.EnqueueDeviceQueueItemRequest} The clone.
 */
proto.api.EnqueueDeviceQueueItemRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.EnqueueDeviceQueueItemRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional DeviceQueueItem item = 1;
 * @return {proto.api.DeviceQueueItem}
 */
proto.api.EnqueueDeviceQueueItemRequest.prototype.getItem = function() {
  return /** @type{proto.api.DeviceQueueItem} */ (
    jspb.Message.getWrapperField(this, proto.api.DeviceQueueItem, 1));
};


/** @param {proto.api.DeviceQueueItem|undefined} value  */
proto.api.EnqueueDeviceQueueItemRequest.prototype.setItem = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.api.EnqueueDeviceQueueItemRequest.prototype.clearItem = function() {
  this.setItem(undefined);
};


/**
 * Returns whether this field is set.
 * @return{!boolean}
 */
proto.api.EnqueueDeviceQueueItemRequest.prototype.hasItem = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * 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.EnqueueDeviceQueueItemResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.EnqueueDeviceQueueItemResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.EnqueueDeviceQueueItemResponse.displayName = 'proto.api.EnqueueDeviceQueueItemResponse';
}


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.api.EnqueueDeviceQueueItemResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.api.EnqueueDeviceQueueItemResponse.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.api.EnqueueDeviceQueueItemResponse} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.EnqueueDeviceQueueItemResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    id: msg.getId()
  };

  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.EnqueueDeviceQueueItemResponse}
 */
proto.api.EnqueueDeviceQueueItemResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.EnqueueDeviceQueueItemResponse;
  return proto.api.EnqueueDeviceQueueItemResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.EnqueueDeviceQueueItemResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.EnqueueDeviceQueueItemResponse}
 */
proto.api.EnqueueDeviceQueueItemResponse.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;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.EnqueueDeviceQueueItemResponse} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.EnqueueDeviceQueueItemResponse.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.EnqueueDeviceQueueItemResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.EnqueueDeviceQueueItemResponse.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getId();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.EnqueueDeviceQueueItemResponse} The clone.
 */
proto.api.EnqueueDeviceQueueItemResponse.prototype.cloneMessage = function() {
  return /** @type {!proto.api.EnqueueDeviceQueueItemResponse} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string id = 1;
 * @return {string}
 */
proto.api.EnqueueDeviceQueueItemResponse.prototype.getId = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.EnqueueDeviceQueueItemResponse.prototype.setId = function(value) {
  jspb.Message.setField(this, 1, 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.api.FlushDeviceQueueRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.FlushDeviceQueueRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.FlushDeviceQueueRequest.displayName = 'proto.api.FlushDeviceQueueRequest';
}


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.api.FlushDeviceQueueRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.FlushDeviceQueueRequest.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.api.FlushDeviceQueueRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.FlushDeviceQueueRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.FlushDeviceQueueRequest}
 */
proto.api.FlushDeviceQueueRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.FlushDeviceQueueRequest;
  return proto.api.FlushDeviceQueueRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.FlushDeviceQueueRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.FlushDeviceQueueRequest}
 */
proto.api.FlushDeviceQueueRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.FlushDeviceQueueRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.FlushDeviceQueueRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.FlushDeviceQueueRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.FlushDeviceQueueRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.FlushDeviceQueueRequest} The clone.
 */
proto.api.FlushDeviceQueueRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.FlushDeviceQueueRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.FlushDeviceQueueRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.FlushDeviceQueueRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, 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.api.GetDeviceQueueItemsRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.GetDeviceQueueItemsRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceQueueItemsRequest.displayName = 'proto.api.GetDeviceQueueItemsRequest';
}


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.api.GetDeviceQueueItemsRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceQueueItemsRequest.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.api.GetDeviceQueueItemsRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceQueueItemsRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui(),
    countOnly: msg.getCountOnly()
  };

  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.GetDeviceQueueItemsRequest}
 */
proto.api.GetDeviceQueueItemsRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceQueueItemsRequest;
  return proto.api.GetDeviceQueueItemsRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceQueueItemsRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceQueueItemsRequest}
 */
proto.api.GetDeviceQueueItemsRequest.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.setDevEui(value);
      break;
    case 2:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setCountOnly(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceQueueItemsRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceQueueItemsRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceQueueItemsRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceQueueItemsRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = this.getCountOnly();
  if (f) {
    writer.writeBool(
      2,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceQueueItemsRequest} The clone.
 */
proto.api.GetDeviceQueueItemsRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceQueueItemsRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.GetDeviceQueueItemsRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.GetDeviceQueueItemsRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * optional bool count_only = 2;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.api.GetDeviceQueueItemsRequest.prototype.getCountOnly = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldProto3(this, 2, false));
};


/** @param {boolean} value  */
proto.api.GetDeviceQueueItemsRequest.prototype.setCountOnly = function(value) {
  jspb.Message.setField(this, 2, 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.api.GetDeviceQueueItemsResponse = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.api.GetDeviceQueueItemsResponse.repeatedFields_, null);
};
goog.inherits(proto.api.GetDeviceQueueItemsResponse, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.GetDeviceQueueItemsResponse.displayName = 'proto.api.GetDeviceQueueItemsResponse';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.api.GetDeviceQueueItemsResponse.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.api.GetDeviceQueueItemsResponse.prototype.toObject = function(opt_includeInstance) {
  return proto.api.GetDeviceQueueItemsResponse.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.api.GetDeviceQueueItemsResponse} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.GetDeviceQueueItemsResponse.toObject = function(includeInstance, msg) {
  var f, obj = {
    totalCount: msg.getTotalCount(),
    resultList: jspb.Message.toObjectList(msg.getResultList(),
    proto.api.DeviceQueueItem.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.GetDeviceQueueItemsResponse}
 */
proto.api.GetDeviceQueueItemsResponse.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.GetDeviceQueueItemsResponse;
  return proto.api.GetDeviceQueueItemsResponse.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.GetDeviceQueueItemsResponse} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.GetDeviceQueueItemsResponse}
 */
proto.api.GetDeviceQueueItemsResponse.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setTotalCount(value);
      break;
    case 2:
      var value = new proto.api.DeviceQueueItem;
      reader.readMessage(value,proto.api.DeviceQueueItem.deserializeBinaryFromReader);
      msg.getResultList().push(value);
      msg.setResultList(msg.getResultList());
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.GetDeviceQueueItemsResponse} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceQueueItemsResponse.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.GetDeviceQueueItemsResponse.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.GetDeviceQueueItemsResponse.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getTotalCount();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = this.getResultList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.api.DeviceQueueItem.serializeBinaryToWriter
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.GetDeviceQueueItemsResponse} The clone.
 */
proto.api.GetDeviceQueueItemsResponse.prototype.cloneMessage = function() {
  return /** @type {!proto.api.GetDeviceQueueItemsResponse} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional uint32 total_count = 1;
 * @return {number}
 */
proto.api.GetDeviceQueueItemsResponse.prototype.getTotalCount = function() {
  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
};


/** @param {number} value  */
proto.api.GetDeviceQueueItemsResponse.prototype.setTotalCount = function(value) {
  jspb.Message.setField(this, 1, value);
};


/**
 * repeated DeviceQueueItem result = 2;
 * If you change this array by adding, removing or replacing elements, or if you
 * replace the array itself, then you must call the setter to update it.
 * @return {!Array.<!proto.api.DeviceQueueItem>}
 */
proto.api.GetDeviceQueueItemsResponse.prototype.getResultList = function() {
  return /** @type{!Array.<!proto.api.DeviceQueueItem>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.api.DeviceQueueItem, 2));
};


/** @param {Array.<!proto.api.DeviceQueueItem>} value  */
proto.api.GetDeviceQueueItemsResponse.prototype.setResultList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 2, value);
};


proto.api.GetDeviceQueueItemsResponse.prototype.clearResultList = function() {
  this.setResultList([]);
};



/**
 * 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.FlushDevNoncesRequest = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.api.FlushDevNoncesRequest, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.api.FlushDevNoncesRequest.displayName = 'proto.api.FlushDevNoncesRequest';
}


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.api.FlushDevNoncesRequest.prototype.toObject = function(opt_includeInstance) {
  return proto.api.FlushDevNoncesRequest.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.api.FlushDevNoncesRequest} msg The msg instance to transform.
 * @return {!Object}
 */
proto.api.FlushDevNoncesRequest.toObject = function(includeInstance, msg) {
  var f, obj = {
    devEui: msg.getDevEui()
  };

  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.FlushDevNoncesRequest}
 */
proto.api.FlushDevNoncesRequest.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.api.FlushDevNoncesRequest;
  return proto.api.FlushDevNoncesRequest.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.api.FlushDevNoncesRequest} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.api.FlushDevNoncesRequest}
 */
proto.api.FlushDevNoncesRequest.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.setDevEui(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Class method variant: serializes the given message to binary data
 * (in protobuf wire format), writing to the given BinaryWriter.
 * @param {!proto.api.FlushDevNoncesRequest} message
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.FlushDevNoncesRequest.serializeBinaryToWriter = function(message, writer) {
  message.serializeBinaryToWriter(writer);
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.api.FlushDevNoncesRequest.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  this.serializeBinaryToWriter(writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the message to binary data (in protobuf wire format),
 * writing to the given BinaryWriter.
 * @param {!jspb.BinaryWriter} writer
 */
proto.api.FlushDevNoncesRequest.prototype.serializeBinaryToWriter = function (writer) {
  var f = undefined;
  f = this.getDevEui();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
};


/**
 * Creates a deep clone of this proto. No data is shared with the original.
 * @return {!proto.api.FlushDevNoncesRequest} The clone.
 */
proto.api.FlushDevNoncesRequest.prototype.cloneMessage = function() {
  return /** @type {!proto.api.FlushDevNoncesRequest} */ (jspb.Message.cloneMessage(this));
};


/**
 * optional string dev_eui = 1;
 * @return {string}
 */
proto.api.FlushDevNoncesRequest.prototype.getDevEui = function() {
  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
};


/** @param {string} value  */
proto.api.FlushDevNoncesRequest.prototype.setDevEui = function(value) {
  jspb.Message.setField(this, 1, value);
};


goog.object.extend(exports, proto.api);
