protobuf/protobuf.js

/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
// @ts-nocheck
import $protobuf from "protobufjs/minimal.js";

// Common aliases
var $Reader = $protobuf.Reader,
  $Writer = $protobuf.Writer,
  $util = $protobuf.util;

// Exported root namespace
var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});

$root.ReqStartCalibration = (function () {
  /**
   * Properties of a ReqStartCalibration.
   * @exports IReqStartCalibration
   * @interface IReqStartCalibration
   */

  /**
   * Constructs a new ReqStartCalibration.
   * @exports ReqStartCalibration
   * @classdesc Represents a ReqStartCalibration.
   * @implements IReqStartCalibration
   * @constructor
   * @param {IReqStartCalibration=} [properties] Properties to set
   */
  function ReqStartCalibration(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStartCalibration instance using the specified properties.
   * @function create
   * @memberof ReqStartCalibration
   * @static
   * @param {IReqStartCalibration=} [properties] Properties to set
   * @returns {ReqStartCalibration} ReqStartCalibration instance
   */
  ReqStartCalibration.create = function create(properties) {
    return new ReqStartCalibration(properties);
  };

  /**
   * Encodes the specified ReqStartCalibration message. Does not implicitly {@link ReqStartCalibration.verify|verify} messages.
   * @function encode
   * @memberof ReqStartCalibration
   * @static
   * @param {IReqStartCalibration} message ReqStartCalibration message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartCalibration.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStartCalibration message, length delimited. Does not implicitly {@link ReqStartCalibration.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartCalibration
   * @static
   * @param {IReqStartCalibration} message ReqStartCalibration message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartCalibration.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartCalibration message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartCalibration
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartCalibration} ReqStartCalibration
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartCalibration.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartCalibration();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartCalibration message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartCalibration
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartCalibration} ReqStartCalibration
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartCalibration.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartCalibration message.
   * @function verify
   * @memberof ReqStartCalibration
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartCalibration.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStartCalibration message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartCalibration
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartCalibration} ReqStartCalibration
   */
  ReqStartCalibration.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartCalibration) return object;
    return new $root.ReqStartCalibration();
  };

  /**
   * Creates a plain object from a ReqStartCalibration message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartCalibration
   * @static
   * @param {ReqStartCalibration} message ReqStartCalibration
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartCalibration.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStartCalibration to JSON.
   * @function toJSON
   * @memberof ReqStartCalibration
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartCalibration.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartCalibration
   * @function getTypeUrl
   * @memberof ReqStartCalibration
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartCalibration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartCalibration";
  };

  return ReqStartCalibration;
})();

$root.ReqStopCalibration = (function () {
  /**
   * Properties of a ReqStopCalibration.
   * @exports IReqStopCalibration
   * @interface IReqStopCalibration
   */

  /**
   * Constructs a new ReqStopCalibration.
   * @exports ReqStopCalibration
   * @classdesc Represents a ReqStopCalibration.
   * @implements IReqStopCalibration
   * @constructor
   * @param {IReqStopCalibration=} [properties] Properties to set
   */
  function ReqStopCalibration(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopCalibration instance using the specified properties.
   * @function create
   * @memberof ReqStopCalibration
   * @static
   * @param {IReqStopCalibration=} [properties] Properties to set
   * @returns {ReqStopCalibration} ReqStopCalibration instance
   */
  ReqStopCalibration.create = function create(properties) {
    return new ReqStopCalibration(properties);
  };

  /**
   * Encodes the specified ReqStopCalibration message. Does not implicitly {@link ReqStopCalibration.verify|verify} messages.
   * @function encode
   * @memberof ReqStopCalibration
   * @static
   * @param {IReqStopCalibration} message ReqStopCalibration message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCalibration.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopCalibration message, length delimited. Does not implicitly {@link ReqStopCalibration.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopCalibration
   * @static
   * @param {IReqStopCalibration} message ReqStopCalibration message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCalibration.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopCalibration message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopCalibration
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopCalibration} ReqStopCalibration
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCalibration.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopCalibration();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopCalibration message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopCalibration
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopCalibration} ReqStopCalibration
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCalibration.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopCalibration message.
   * @function verify
   * @memberof ReqStopCalibration
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopCalibration.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopCalibration message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopCalibration
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopCalibration} ReqStopCalibration
   */
  ReqStopCalibration.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopCalibration) return object;
    return new $root.ReqStopCalibration();
  };

  /**
   * Creates a plain object from a ReqStopCalibration message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopCalibration
   * @static
   * @param {ReqStopCalibration} message ReqStopCalibration
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopCalibration.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopCalibration to JSON.
   * @function toJSON
   * @memberof ReqStopCalibration
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopCalibration.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopCalibration
   * @function getTypeUrl
   * @memberof ReqStopCalibration
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopCalibration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopCalibration";
  };

  return ReqStopCalibration;
})();

$root.ReqGotoDSO = (function () {
  /**
   * Properties of a ReqGotoDSO.
   * @exports IReqGotoDSO
   * @interface IReqGotoDSO
   * @property {number|null} [ra] ReqGotoDSO ra
   * @property {number|null} [dec] ReqGotoDSO dec
   * @property {string|null} [targetName] ReqGotoDSO targetName
   */

  /**
   * Constructs a new ReqGotoDSO.
   * @exports ReqGotoDSO
   * @classdesc Represents a ReqGotoDSO.
   * @implements IReqGotoDSO
   * @constructor
   * @param {IReqGotoDSO=} [properties] Properties to set
   */
  function ReqGotoDSO(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqGotoDSO ra.
   * @member {number} ra
   * @memberof ReqGotoDSO
   * @instance
   */
  ReqGotoDSO.prototype.ra = 0;

  /**
   * ReqGotoDSO dec.
   * @member {number} dec
   * @memberof ReqGotoDSO
   * @instance
   */
  ReqGotoDSO.prototype.dec = 0;

  /**
   * ReqGotoDSO targetName.
   * @member {string} targetName
   * @memberof ReqGotoDSO
   * @instance
   */
  ReqGotoDSO.prototype.targetName = "";

  /**
   * Creates a new ReqGotoDSO instance using the specified properties.
   * @function create
   * @memberof ReqGotoDSO
   * @static
   * @param {IReqGotoDSO=} [properties] Properties to set
   * @returns {ReqGotoDSO} ReqGotoDSO instance
   */
  ReqGotoDSO.create = function create(properties) {
    return new ReqGotoDSO(properties);
  };

  /**
   * Encodes the specified ReqGotoDSO message. Does not implicitly {@link ReqGotoDSO.verify|verify} messages.
   * @function encode
   * @memberof ReqGotoDSO
   * @static
   * @param {IReqGotoDSO} message ReqGotoDSO message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGotoDSO.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.ra != null && Object.hasOwnProperty.call(message, "ra"))
      writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.ra);
    if (message.dec != null && Object.hasOwnProperty.call(message, "dec"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.dec);
    if (
      message.targetName != null &&
      Object.hasOwnProperty.call(message, "targetName")
    )
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.targetName);
    return writer;
  };

  /**
   * Encodes the specified ReqGotoDSO message, length delimited. Does not implicitly {@link ReqGotoDSO.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGotoDSO
   * @static
   * @param {IReqGotoDSO} message ReqGotoDSO message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGotoDSO.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGotoDSO message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGotoDSO
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGotoDSO} ReqGotoDSO
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGotoDSO.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGotoDSO();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.ra = reader.double();
          break;
        }
        case 2: {
          message.dec = reader.double();
          break;
        }
        case 3: {
          message.targetName = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGotoDSO message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGotoDSO
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGotoDSO} ReqGotoDSO
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGotoDSO.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGotoDSO message.
   * @function verify
   * @memberof ReqGotoDSO
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGotoDSO.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.ra != null && message.hasOwnProperty("ra"))
      if (typeof message.ra !== "number") return "ra: number expected";
    if (message.dec != null && message.hasOwnProperty("dec"))
      if (typeof message.dec !== "number") return "dec: number expected";
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      if (!$util.isString(message.targetName))
        return "targetName: string expected";
    return null;
  };

  /**
   * Creates a ReqGotoDSO message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGotoDSO
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGotoDSO} ReqGotoDSO
   */
  ReqGotoDSO.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGotoDSO) return object;
    var message = new $root.ReqGotoDSO();
    if (object.ra != null) message.ra = Number(object.ra);
    if (object.dec != null) message.dec = Number(object.dec);
    if (object.targetName != null)
      message.targetName = String(object.targetName);
    return message;
  };

  /**
   * Creates a plain object from a ReqGotoDSO message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGotoDSO
   * @static
   * @param {ReqGotoDSO} message ReqGotoDSO
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGotoDSO.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.ra = 0;
      object.dec = 0;
      object.targetName = "";
    }
    if (message.ra != null && message.hasOwnProperty("ra"))
      object.ra =
        options.json && !isFinite(message.ra) ? String(message.ra) : message.ra;
    if (message.dec != null && message.hasOwnProperty("dec"))
      object.dec =
        options.json && !isFinite(message.dec)
          ? String(message.dec)
          : message.dec;
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      object.targetName = message.targetName;
    return object;
  };

  /**
   * Converts this ReqGotoDSO to JSON.
   * @function toJSON
   * @memberof ReqGotoDSO
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGotoDSO.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGotoDSO
   * @function getTypeUrl
   * @memberof ReqGotoDSO
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGotoDSO.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGotoDSO";
  };

  return ReqGotoDSO;
})();

$root.ReqGotoSolarSystem = (function () {
  /**
   * Properties of a ReqGotoSolarSystem.
   * @exports IReqGotoSolarSystem
   * @interface IReqGotoSolarSystem
   * @property {number|null} [index] ReqGotoSolarSystem index
   * @property {number|null} [lon] ReqGotoSolarSystem lon
   * @property {number|null} [lat] ReqGotoSolarSystem lat
   * @property {string|null} [targetName] ReqGotoSolarSystem targetName
   */

  /**
   * Constructs a new ReqGotoSolarSystem.
   * @exports ReqGotoSolarSystem
   * @classdesc Represents a ReqGotoSolarSystem.
   * @implements IReqGotoSolarSystem
   * @constructor
   * @param {IReqGotoSolarSystem=} [properties] Properties to set
   */
  function ReqGotoSolarSystem(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqGotoSolarSystem index.
   * @member {number} index
   * @memberof ReqGotoSolarSystem
   * @instance
   */
  ReqGotoSolarSystem.prototype.index = 0;

  /**
   * ReqGotoSolarSystem lon.
   * @member {number} lon
   * @memberof ReqGotoSolarSystem
   * @instance
   */
  ReqGotoSolarSystem.prototype.lon = 0;

  /**
   * ReqGotoSolarSystem lat.
   * @member {number} lat
   * @memberof ReqGotoSolarSystem
   * @instance
   */
  ReqGotoSolarSystem.prototype.lat = 0;

  /**
   * ReqGotoSolarSystem targetName.
   * @member {string} targetName
   * @memberof ReqGotoSolarSystem
   * @instance
   */
  ReqGotoSolarSystem.prototype.targetName = "";

  /**
   * Creates a new ReqGotoSolarSystem instance using the specified properties.
   * @function create
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {IReqGotoSolarSystem=} [properties] Properties to set
   * @returns {ReqGotoSolarSystem} ReqGotoSolarSystem instance
   */
  ReqGotoSolarSystem.create = function create(properties) {
    return new ReqGotoSolarSystem(properties);
  };

  /**
   * Encodes the specified ReqGotoSolarSystem message. Does not implicitly {@link ReqGotoSolarSystem.verify|verify} messages.
   * @function encode
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {IReqGotoSolarSystem} message ReqGotoSolarSystem message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGotoSolarSystem.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.index != null && Object.hasOwnProperty.call(message, "index"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.index);
    if (message.lon != null && Object.hasOwnProperty.call(message, "lon"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.lon);
    if (message.lat != null && Object.hasOwnProperty.call(message, "lat"))
      writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.lat);
    if (
      message.targetName != null &&
      Object.hasOwnProperty.call(message, "targetName")
    )
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.targetName);
    return writer;
  };

  /**
   * Encodes the specified ReqGotoSolarSystem message, length delimited. Does not implicitly {@link ReqGotoSolarSystem.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {IReqGotoSolarSystem} message ReqGotoSolarSystem message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGotoSolarSystem.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGotoSolarSystem message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGotoSolarSystem} ReqGotoSolarSystem
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGotoSolarSystem.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGotoSolarSystem();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.index = reader.int32();
          break;
        }
        case 2: {
          message.lon = reader.double();
          break;
        }
        case 3: {
          message.lat = reader.double();
          break;
        }
        case 4: {
          message.targetName = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGotoSolarSystem message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGotoSolarSystem} ReqGotoSolarSystem
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGotoSolarSystem.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGotoSolarSystem message.
   * @function verify
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGotoSolarSystem.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.index != null && message.hasOwnProperty("index"))
      if (!$util.isInteger(message.index)) return "index: integer expected";
    if (message.lon != null && message.hasOwnProperty("lon"))
      if (typeof message.lon !== "number") return "lon: number expected";
    if (message.lat != null && message.hasOwnProperty("lat"))
      if (typeof message.lat !== "number") return "lat: number expected";
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      if (!$util.isString(message.targetName))
        return "targetName: string expected";
    return null;
  };

  /**
   * Creates a ReqGotoSolarSystem message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGotoSolarSystem} ReqGotoSolarSystem
   */
  ReqGotoSolarSystem.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGotoSolarSystem) return object;
    var message = new $root.ReqGotoSolarSystem();
    if (object.index != null) message.index = object.index | 0;
    if (object.lon != null) message.lon = Number(object.lon);
    if (object.lat != null) message.lat = Number(object.lat);
    if (object.targetName != null)
      message.targetName = String(object.targetName);
    return message;
  };

  /**
   * Creates a plain object from a ReqGotoSolarSystem message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {ReqGotoSolarSystem} message ReqGotoSolarSystem
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGotoSolarSystem.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.index = 0;
      object.lon = 0;
      object.lat = 0;
      object.targetName = "";
    }
    if (message.index != null && message.hasOwnProperty("index"))
      object.index = message.index;
    if (message.lon != null && message.hasOwnProperty("lon"))
      object.lon =
        options.json && !isFinite(message.lon)
          ? String(message.lon)
          : message.lon;
    if (message.lat != null && message.hasOwnProperty("lat"))
      object.lat =
        options.json && !isFinite(message.lat)
          ? String(message.lat)
          : message.lat;
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      object.targetName = message.targetName;
    return object;
  };

  /**
   * Converts this ReqGotoSolarSystem to JSON.
   * @function toJSON
   * @memberof ReqGotoSolarSystem
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGotoSolarSystem.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGotoSolarSystem
   * @function getTypeUrl
   * @memberof ReqGotoSolarSystem
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGotoSolarSystem.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGotoSolarSystem";
  };

  return ReqGotoSolarSystem;
})();

$root.ReqStopGoto = (function () {
  /**
   * Properties of a ReqStopGoto.
   * @exports IReqStopGoto
   * @interface IReqStopGoto
   */

  /**
   * Constructs a new ReqStopGoto.
   * @exports ReqStopGoto
   * @classdesc Represents a ReqStopGoto.
   * @implements IReqStopGoto
   * @constructor
   * @param {IReqStopGoto=} [properties] Properties to set
   */
  function ReqStopGoto(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopGoto instance using the specified properties.
   * @function create
   * @memberof ReqStopGoto
   * @static
   * @param {IReqStopGoto=} [properties] Properties to set
   * @returns {ReqStopGoto} ReqStopGoto instance
   */
  ReqStopGoto.create = function create(properties) {
    return new ReqStopGoto(properties);
  };

  /**
   * Encodes the specified ReqStopGoto message. Does not implicitly {@link ReqStopGoto.verify|verify} messages.
   * @function encode
   * @memberof ReqStopGoto
   * @static
   * @param {IReqStopGoto} message ReqStopGoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopGoto.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopGoto message, length delimited. Does not implicitly {@link ReqStopGoto.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopGoto
   * @static
   * @param {IReqStopGoto} message ReqStopGoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopGoto.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopGoto message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopGoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopGoto} ReqStopGoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopGoto.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopGoto();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopGoto message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopGoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopGoto} ReqStopGoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopGoto.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopGoto message.
   * @function verify
   * @memberof ReqStopGoto
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopGoto.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopGoto message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopGoto
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopGoto} ReqStopGoto
   */
  ReqStopGoto.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopGoto) return object;
    return new $root.ReqStopGoto();
  };

  /**
   * Creates a plain object from a ReqStopGoto message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopGoto
   * @static
   * @param {ReqStopGoto} message ReqStopGoto
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopGoto.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopGoto to JSON.
   * @function toJSON
   * @memberof ReqStopGoto
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopGoto.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopGoto
   * @function getTypeUrl
   * @memberof ReqStopGoto
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopGoto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopGoto";
  };

  return ReqStopGoto;
})();

$root.ReqCaptureRawLiveStacking = (function () {
  /**
   * Properties of a ReqCaptureRawLiveStacking.
   * @exports IReqCaptureRawLiveStacking
   * @interface IReqCaptureRawLiveStacking
   */

  /**
   * Constructs a new ReqCaptureRawLiveStacking.
   * @exports ReqCaptureRawLiveStacking
   * @classdesc Represents a ReqCaptureRawLiveStacking.
   * @implements IReqCaptureRawLiveStacking
   * @constructor
   * @param {IReqCaptureRawLiveStacking=} [properties] Properties to set
   */
  function ReqCaptureRawLiveStacking(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqCaptureRawLiveStacking instance using the specified properties.
   * @function create
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {IReqCaptureRawLiveStacking=} [properties] Properties to set
   * @returns {ReqCaptureRawLiveStacking} ReqCaptureRawLiveStacking instance
   */
  ReqCaptureRawLiveStacking.create = function create(properties) {
    return new ReqCaptureRawLiveStacking(properties);
  };

  /**
   * Encodes the specified ReqCaptureRawLiveStacking message. Does not implicitly {@link ReqCaptureRawLiveStacking.verify|verify} messages.
   * @function encode
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {IReqCaptureRawLiveStacking} message ReqCaptureRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureRawLiveStacking.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqCaptureRawLiveStacking message, length delimited. Does not implicitly {@link ReqCaptureRawLiveStacking.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {IReqCaptureRawLiveStacking} message ReqCaptureRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureRawLiveStacking.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCaptureRawLiveStacking message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCaptureRawLiveStacking} ReqCaptureRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureRawLiveStacking.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCaptureRawLiveStacking();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCaptureRawLiveStacking message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCaptureRawLiveStacking} ReqCaptureRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureRawLiveStacking.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCaptureRawLiveStacking message.
   * @function verify
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCaptureRawLiveStacking.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqCaptureRawLiveStacking message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCaptureRawLiveStacking} ReqCaptureRawLiveStacking
   */
  ReqCaptureRawLiveStacking.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCaptureRawLiveStacking) return object;
    return new $root.ReqCaptureRawLiveStacking();
  };

  /**
   * Creates a plain object from a ReqCaptureRawLiveStacking message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {ReqCaptureRawLiveStacking} message ReqCaptureRawLiveStacking
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCaptureRawLiveStacking.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqCaptureRawLiveStacking to JSON.
   * @function toJSON
   * @memberof ReqCaptureRawLiveStacking
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCaptureRawLiveStacking.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCaptureRawLiveStacking
   * @function getTypeUrl
   * @memberof ReqCaptureRawLiveStacking
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCaptureRawLiveStacking.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCaptureRawLiveStacking";
  };

  return ReqCaptureRawLiveStacking;
})();

$root.ReqStopCaptureRawLiveStacking = (function () {
  /**
   * Properties of a ReqStopCaptureRawLiveStacking.
   * @exports IReqStopCaptureRawLiveStacking
   * @interface IReqStopCaptureRawLiveStacking
   */

  /**
   * Constructs a new ReqStopCaptureRawLiveStacking.
   * @exports ReqStopCaptureRawLiveStacking
   * @classdesc Represents a ReqStopCaptureRawLiveStacking.
   * @implements IReqStopCaptureRawLiveStacking
   * @constructor
   * @param {IReqStopCaptureRawLiveStacking=} [properties] Properties to set
   */
  function ReqStopCaptureRawLiveStacking(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopCaptureRawLiveStacking instance using the specified properties.
   * @function create
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {IReqStopCaptureRawLiveStacking=} [properties] Properties to set
   * @returns {ReqStopCaptureRawLiveStacking} ReqStopCaptureRawLiveStacking instance
   */
  ReqStopCaptureRawLiveStacking.create = function create(properties) {
    return new ReqStopCaptureRawLiveStacking(properties);
  };

  /**
   * Encodes the specified ReqStopCaptureRawLiveStacking message. Does not implicitly {@link ReqStopCaptureRawLiveStacking.verify|verify} messages.
   * @function encode
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {IReqStopCaptureRawLiveStacking} message ReqStopCaptureRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureRawLiveStacking.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopCaptureRawLiveStacking message, length delimited. Does not implicitly {@link ReqStopCaptureRawLiveStacking.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {IReqStopCaptureRawLiveStacking} message ReqStopCaptureRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureRawLiveStacking.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopCaptureRawLiveStacking message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopCaptureRawLiveStacking} ReqStopCaptureRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureRawLiveStacking.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopCaptureRawLiveStacking();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopCaptureRawLiveStacking message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopCaptureRawLiveStacking} ReqStopCaptureRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureRawLiveStacking.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopCaptureRawLiveStacking message.
   * @function verify
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopCaptureRawLiveStacking.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopCaptureRawLiveStacking message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopCaptureRawLiveStacking} ReqStopCaptureRawLiveStacking
   */
  ReqStopCaptureRawLiveStacking.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopCaptureRawLiveStacking) return object;
    return new $root.ReqStopCaptureRawLiveStacking();
  };

  /**
   * Creates a plain object from a ReqStopCaptureRawLiveStacking message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {ReqStopCaptureRawLiveStacking} message ReqStopCaptureRawLiveStacking
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopCaptureRawLiveStacking.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopCaptureRawLiveStacking to JSON.
   * @function toJSON
   * @memberof ReqStopCaptureRawLiveStacking
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopCaptureRawLiveStacking.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopCaptureRawLiveStacking
   * @function getTypeUrl
   * @memberof ReqStopCaptureRawLiveStacking
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopCaptureRawLiveStacking.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopCaptureRawLiveStacking";
  };

  return ReqStopCaptureRawLiveStacking;
})();

$root.ReqCheckDarkFrame = (function () {
  /**
   * Properties of a ReqCheckDarkFrame.
   * @exports IReqCheckDarkFrame
   * @interface IReqCheckDarkFrame
   */

  /**
   * Constructs a new ReqCheckDarkFrame.
   * @exports ReqCheckDarkFrame
   * @classdesc Represents a ReqCheckDarkFrame.
   * @implements IReqCheckDarkFrame
   * @constructor
   * @param {IReqCheckDarkFrame=} [properties] Properties to set
   */
  function ReqCheckDarkFrame(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqCheckDarkFrame instance using the specified properties.
   * @function create
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {IReqCheckDarkFrame=} [properties] Properties to set
   * @returns {ReqCheckDarkFrame} ReqCheckDarkFrame instance
   */
  ReqCheckDarkFrame.create = function create(properties) {
    return new ReqCheckDarkFrame(properties);
  };

  /**
   * Encodes the specified ReqCheckDarkFrame message. Does not implicitly {@link ReqCheckDarkFrame.verify|verify} messages.
   * @function encode
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {IReqCheckDarkFrame} message ReqCheckDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCheckDarkFrame.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqCheckDarkFrame message, length delimited. Does not implicitly {@link ReqCheckDarkFrame.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {IReqCheckDarkFrame} message ReqCheckDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCheckDarkFrame.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCheckDarkFrame message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCheckDarkFrame} ReqCheckDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCheckDarkFrame.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCheckDarkFrame();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCheckDarkFrame message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCheckDarkFrame} ReqCheckDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCheckDarkFrame.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCheckDarkFrame message.
   * @function verify
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCheckDarkFrame.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqCheckDarkFrame message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCheckDarkFrame} ReqCheckDarkFrame
   */
  ReqCheckDarkFrame.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCheckDarkFrame) return object;
    return new $root.ReqCheckDarkFrame();
  };

  /**
   * Creates a plain object from a ReqCheckDarkFrame message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {ReqCheckDarkFrame} message ReqCheckDarkFrame
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCheckDarkFrame.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqCheckDarkFrame to JSON.
   * @function toJSON
   * @memberof ReqCheckDarkFrame
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCheckDarkFrame.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCheckDarkFrame
   * @function getTypeUrl
   * @memberof ReqCheckDarkFrame
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCheckDarkFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCheckDarkFrame";
  };

  return ReqCheckDarkFrame;
})();

$root.ResCheckDarkFrame = (function () {
  /**
   * Properties of a ResCheckDarkFrame.
   * @exports IResCheckDarkFrame
   * @interface IResCheckDarkFrame
   * @property {number|null} [progress] ResCheckDarkFrame progress
   * @property {number|null} [code] ResCheckDarkFrame code
   */

  /**
   * Constructs a new ResCheckDarkFrame.
   * @exports ResCheckDarkFrame
   * @classdesc Represents a ResCheckDarkFrame.
   * @implements IResCheckDarkFrame
   * @constructor
   * @param {IResCheckDarkFrame=} [properties] Properties to set
   */
  function ResCheckDarkFrame(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResCheckDarkFrame progress.
   * @member {number} progress
   * @memberof ResCheckDarkFrame
   * @instance
   */
  ResCheckDarkFrame.prototype.progress = 0;

  /**
   * ResCheckDarkFrame code.
   * @member {number} code
   * @memberof ResCheckDarkFrame
   * @instance
   */
  ResCheckDarkFrame.prototype.code = 0;

  /**
   * Creates a new ResCheckDarkFrame instance using the specified properties.
   * @function create
   * @memberof ResCheckDarkFrame
   * @static
   * @param {IResCheckDarkFrame=} [properties] Properties to set
   * @returns {ResCheckDarkFrame} ResCheckDarkFrame instance
   */
  ResCheckDarkFrame.create = function create(properties) {
    return new ResCheckDarkFrame(properties);
  };

  /**
   * Encodes the specified ResCheckDarkFrame message. Does not implicitly {@link ResCheckDarkFrame.verify|verify} messages.
   * @function encode
   * @memberof ResCheckDarkFrame
   * @static
   * @param {IResCheckDarkFrame} message ResCheckDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResCheckDarkFrame.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.progress != null &&
      Object.hasOwnProperty.call(message, "progress")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.progress);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResCheckDarkFrame message, length delimited. Does not implicitly {@link ResCheckDarkFrame.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResCheckDarkFrame
   * @static
   * @param {IResCheckDarkFrame} message ResCheckDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResCheckDarkFrame.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResCheckDarkFrame message from the specified reader or buffer.
   * @function decode
   * @memberof ResCheckDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResCheckDarkFrame} ResCheckDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResCheckDarkFrame.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResCheckDarkFrame();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.progress = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResCheckDarkFrame message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResCheckDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResCheckDarkFrame} ResCheckDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResCheckDarkFrame.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResCheckDarkFrame message.
   * @function verify
   * @memberof ResCheckDarkFrame
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResCheckDarkFrame.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.progress != null && message.hasOwnProperty("progress"))
      if (!$util.isInteger(message.progress))
        return "progress: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResCheckDarkFrame message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResCheckDarkFrame
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResCheckDarkFrame} ResCheckDarkFrame
   */
  ResCheckDarkFrame.fromObject = function fromObject(object) {
    if (object instanceof $root.ResCheckDarkFrame) return object;
    var message = new $root.ResCheckDarkFrame();
    if (object.progress != null) message.progress = object.progress | 0;
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResCheckDarkFrame message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResCheckDarkFrame
   * @static
   * @param {ResCheckDarkFrame} message ResCheckDarkFrame
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResCheckDarkFrame.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.progress = 0;
      object.code = 0;
    }
    if (message.progress != null && message.hasOwnProperty("progress"))
      object.progress = message.progress;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResCheckDarkFrame to JSON.
   * @function toJSON
   * @memberof ResCheckDarkFrame
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResCheckDarkFrame.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResCheckDarkFrame
   * @function getTypeUrl
   * @memberof ResCheckDarkFrame
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResCheckDarkFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResCheckDarkFrame";
  };

  return ResCheckDarkFrame;
})();

$root.ReqCaptureDarkFrame = (function () {
  /**
   * Properties of a ReqCaptureDarkFrame.
   * @exports IReqCaptureDarkFrame
   * @interface IReqCaptureDarkFrame
   * @property {number|null} [reshoot] ReqCaptureDarkFrame reshoot
   */

  /**
   * Constructs a new ReqCaptureDarkFrame.
   * @exports ReqCaptureDarkFrame
   * @classdesc Represents a ReqCaptureDarkFrame.
   * @implements IReqCaptureDarkFrame
   * @constructor
   * @param {IReqCaptureDarkFrame=} [properties] Properties to set
   */
  function ReqCaptureDarkFrame(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqCaptureDarkFrame reshoot.
   * @member {number} reshoot
   * @memberof ReqCaptureDarkFrame
   * @instance
   */
  ReqCaptureDarkFrame.prototype.reshoot = 0;

  /**
   * Creates a new ReqCaptureDarkFrame instance using the specified properties.
   * @function create
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {IReqCaptureDarkFrame=} [properties] Properties to set
   * @returns {ReqCaptureDarkFrame} ReqCaptureDarkFrame instance
   */
  ReqCaptureDarkFrame.create = function create(properties) {
    return new ReqCaptureDarkFrame(properties);
  };

  /**
   * Encodes the specified ReqCaptureDarkFrame message. Does not implicitly {@link ReqCaptureDarkFrame.verify|verify} messages.
   * @function encode
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {IReqCaptureDarkFrame} message ReqCaptureDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureDarkFrame.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.reshoot != null &&
      Object.hasOwnProperty.call(message, "reshoot")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.reshoot);
    return writer;
  };

  /**
   * Encodes the specified ReqCaptureDarkFrame message, length delimited. Does not implicitly {@link ReqCaptureDarkFrame.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {IReqCaptureDarkFrame} message ReqCaptureDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureDarkFrame.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCaptureDarkFrame message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCaptureDarkFrame} ReqCaptureDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureDarkFrame.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCaptureDarkFrame();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.reshoot = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCaptureDarkFrame message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCaptureDarkFrame} ReqCaptureDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureDarkFrame.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCaptureDarkFrame message.
   * @function verify
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCaptureDarkFrame.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.reshoot != null && message.hasOwnProperty("reshoot"))
      if (!$util.isInteger(message.reshoot)) return "reshoot: integer expected";
    return null;
  };

  /**
   * Creates a ReqCaptureDarkFrame message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCaptureDarkFrame} ReqCaptureDarkFrame
   */
  ReqCaptureDarkFrame.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCaptureDarkFrame) return object;
    var message = new $root.ReqCaptureDarkFrame();
    if (object.reshoot != null) message.reshoot = object.reshoot | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqCaptureDarkFrame message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {ReqCaptureDarkFrame} message ReqCaptureDarkFrame
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCaptureDarkFrame.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.reshoot = 0;
    if (message.reshoot != null && message.hasOwnProperty("reshoot"))
      object.reshoot = message.reshoot;
    return object;
  };

  /**
   * Converts this ReqCaptureDarkFrame to JSON.
   * @function toJSON
   * @memberof ReqCaptureDarkFrame
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCaptureDarkFrame.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCaptureDarkFrame
   * @function getTypeUrl
   * @memberof ReqCaptureDarkFrame
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCaptureDarkFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCaptureDarkFrame";
  };

  return ReqCaptureDarkFrame;
})();

$root.ReqStopCaptureDarkFrame = (function () {
  /**
   * Properties of a ReqStopCaptureDarkFrame.
   * @exports IReqStopCaptureDarkFrame
   * @interface IReqStopCaptureDarkFrame
   */

  /**
   * Constructs a new ReqStopCaptureDarkFrame.
   * @exports ReqStopCaptureDarkFrame
   * @classdesc Represents a ReqStopCaptureDarkFrame.
   * @implements IReqStopCaptureDarkFrame
   * @constructor
   * @param {IReqStopCaptureDarkFrame=} [properties] Properties to set
   */
  function ReqStopCaptureDarkFrame(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopCaptureDarkFrame instance using the specified properties.
   * @function create
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {IReqStopCaptureDarkFrame=} [properties] Properties to set
   * @returns {ReqStopCaptureDarkFrame} ReqStopCaptureDarkFrame instance
   */
  ReqStopCaptureDarkFrame.create = function create(properties) {
    return new ReqStopCaptureDarkFrame(properties);
  };

  /**
   * Encodes the specified ReqStopCaptureDarkFrame message. Does not implicitly {@link ReqStopCaptureDarkFrame.verify|verify} messages.
   * @function encode
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {IReqStopCaptureDarkFrame} message ReqStopCaptureDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureDarkFrame.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopCaptureDarkFrame message, length delimited. Does not implicitly {@link ReqStopCaptureDarkFrame.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {IReqStopCaptureDarkFrame} message ReqStopCaptureDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureDarkFrame.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopCaptureDarkFrame message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopCaptureDarkFrame} ReqStopCaptureDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureDarkFrame.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopCaptureDarkFrame();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopCaptureDarkFrame message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopCaptureDarkFrame} ReqStopCaptureDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureDarkFrame.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopCaptureDarkFrame message.
   * @function verify
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopCaptureDarkFrame.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopCaptureDarkFrame message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopCaptureDarkFrame} ReqStopCaptureDarkFrame
   */
  ReqStopCaptureDarkFrame.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopCaptureDarkFrame) return object;
    return new $root.ReqStopCaptureDarkFrame();
  };

  /**
   * Creates a plain object from a ReqStopCaptureDarkFrame message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {ReqStopCaptureDarkFrame} message ReqStopCaptureDarkFrame
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopCaptureDarkFrame.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopCaptureDarkFrame to JSON.
   * @function toJSON
   * @memberof ReqStopCaptureDarkFrame
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopCaptureDarkFrame.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopCaptureDarkFrame
   * @function getTypeUrl
   * @memberof ReqStopCaptureDarkFrame
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopCaptureDarkFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopCaptureDarkFrame";
  };

  return ReqStopCaptureDarkFrame;
})();

$root.ReqCaptureDarkFrameWithParam = (function () {
  /**
   * Properties of a ReqCaptureDarkFrameWithParam.
   * @exports IReqCaptureDarkFrameWithParam
   * @interface IReqCaptureDarkFrameWithParam
   * @property {number|null} [expIndex] ReqCaptureDarkFrameWithParam expIndex
   * @property {number|null} [gainIndex] ReqCaptureDarkFrameWithParam gainIndex
   * @property {number|null} [binIndex] ReqCaptureDarkFrameWithParam binIndex
   * @property {number|null} [capSize] ReqCaptureDarkFrameWithParam capSize
   */

  /**
   * Constructs a new ReqCaptureDarkFrameWithParam.
   * @exports ReqCaptureDarkFrameWithParam
   * @classdesc Represents a ReqCaptureDarkFrameWithParam.
   * @implements IReqCaptureDarkFrameWithParam
   * @constructor
   * @param {IReqCaptureDarkFrameWithParam=} [properties] Properties to set
   */
  function ReqCaptureDarkFrameWithParam(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqCaptureDarkFrameWithParam expIndex.
   * @member {number} expIndex
   * @memberof ReqCaptureDarkFrameWithParam
   * @instance
   */
  ReqCaptureDarkFrameWithParam.prototype.expIndex = 0;

  /**
   * ReqCaptureDarkFrameWithParam gainIndex.
   * @member {number} gainIndex
   * @memberof ReqCaptureDarkFrameWithParam
   * @instance
   */
  ReqCaptureDarkFrameWithParam.prototype.gainIndex = 0;

  /**
   * ReqCaptureDarkFrameWithParam binIndex.
   * @member {number} binIndex
   * @memberof ReqCaptureDarkFrameWithParam
   * @instance
   */
  ReqCaptureDarkFrameWithParam.prototype.binIndex = 0;

  /**
   * ReqCaptureDarkFrameWithParam capSize.
   * @member {number} capSize
   * @memberof ReqCaptureDarkFrameWithParam
   * @instance
   */
  ReqCaptureDarkFrameWithParam.prototype.capSize = 0;

  /**
   * Creates a new ReqCaptureDarkFrameWithParam instance using the specified properties.
   * @function create
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {IReqCaptureDarkFrameWithParam=} [properties] Properties to set
   * @returns {ReqCaptureDarkFrameWithParam} ReqCaptureDarkFrameWithParam instance
   */
  ReqCaptureDarkFrameWithParam.create = function create(properties) {
    return new ReqCaptureDarkFrameWithParam(properties);
  };

  /**
   * Encodes the specified ReqCaptureDarkFrameWithParam message. Does not implicitly {@link ReqCaptureDarkFrameWithParam.verify|verify} messages.
   * @function encode
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {IReqCaptureDarkFrameWithParam} message ReqCaptureDarkFrameWithParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureDarkFrameWithParam.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.expIndex != null &&
      Object.hasOwnProperty.call(message, "expIndex")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.expIndex);
    if (
      message.gainIndex != null &&
      Object.hasOwnProperty.call(message, "gainIndex")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.gainIndex);
    if (
      message.binIndex != null &&
      Object.hasOwnProperty.call(message, "binIndex")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.binIndex);
    if (
      message.capSize != null &&
      Object.hasOwnProperty.call(message, "capSize")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.capSize);
    return writer;
  };

  /**
   * Encodes the specified ReqCaptureDarkFrameWithParam message, length delimited. Does not implicitly {@link ReqCaptureDarkFrameWithParam.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {IReqCaptureDarkFrameWithParam} message ReqCaptureDarkFrameWithParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureDarkFrameWithParam.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCaptureDarkFrameWithParam message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCaptureDarkFrameWithParam} ReqCaptureDarkFrameWithParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureDarkFrameWithParam.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCaptureDarkFrameWithParam();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.expIndex = reader.int32();
          break;
        }
        case 2: {
          message.gainIndex = reader.int32();
          break;
        }
        case 3: {
          message.binIndex = reader.int32();
          break;
        }
        case 4: {
          message.capSize = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCaptureDarkFrameWithParam message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCaptureDarkFrameWithParam} ReqCaptureDarkFrameWithParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureDarkFrameWithParam.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCaptureDarkFrameWithParam message.
   * @function verify
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCaptureDarkFrameWithParam.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      if (!$util.isInteger(message.expIndex))
        return "expIndex: integer expected";
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      if (!$util.isInteger(message.gainIndex))
        return "gainIndex: integer expected";
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      if (!$util.isInteger(message.binIndex))
        return "binIndex: integer expected";
    if (message.capSize != null && message.hasOwnProperty("capSize"))
      if (!$util.isInteger(message.capSize)) return "capSize: integer expected";
    return null;
  };

  /**
   * Creates a ReqCaptureDarkFrameWithParam message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCaptureDarkFrameWithParam} ReqCaptureDarkFrameWithParam
   */
  ReqCaptureDarkFrameWithParam.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCaptureDarkFrameWithParam) return object;
    var message = new $root.ReqCaptureDarkFrameWithParam();
    if (object.expIndex != null) message.expIndex = object.expIndex | 0;
    if (object.gainIndex != null) message.gainIndex = object.gainIndex | 0;
    if (object.binIndex != null) message.binIndex = object.binIndex | 0;
    if (object.capSize != null) message.capSize = object.capSize | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqCaptureDarkFrameWithParam message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {ReqCaptureDarkFrameWithParam} message ReqCaptureDarkFrameWithParam
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCaptureDarkFrameWithParam.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.expIndex = 0;
      object.gainIndex = 0;
      object.binIndex = 0;
      object.capSize = 0;
    }
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      object.expIndex = message.expIndex;
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      object.gainIndex = message.gainIndex;
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      object.binIndex = message.binIndex;
    if (message.capSize != null && message.hasOwnProperty("capSize"))
      object.capSize = message.capSize;
    return object;
  };

  /**
   * Converts this ReqCaptureDarkFrameWithParam to JSON.
   * @function toJSON
   * @memberof ReqCaptureDarkFrameWithParam
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCaptureDarkFrameWithParam.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCaptureDarkFrameWithParam
   * @function getTypeUrl
   * @memberof ReqCaptureDarkFrameWithParam
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCaptureDarkFrameWithParam.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCaptureDarkFrameWithParam";
  };

  return ReqCaptureDarkFrameWithParam;
})();

$root.ReqStopCaptureDarkFrameWithParam = (function () {
  /**
   * Properties of a ReqStopCaptureDarkFrameWithParam.
   * @exports IReqStopCaptureDarkFrameWithParam
   * @interface IReqStopCaptureDarkFrameWithParam
   */

  /**
   * Constructs a new ReqStopCaptureDarkFrameWithParam.
   * @exports ReqStopCaptureDarkFrameWithParam
   * @classdesc Represents a ReqStopCaptureDarkFrameWithParam.
   * @implements IReqStopCaptureDarkFrameWithParam
   * @constructor
   * @param {IReqStopCaptureDarkFrameWithParam=} [properties] Properties to set
   */
  function ReqStopCaptureDarkFrameWithParam(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopCaptureDarkFrameWithParam instance using the specified properties.
   * @function create
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {IReqStopCaptureDarkFrameWithParam=} [properties] Properties to set
   * @returns {ReqStopCaptureDarkFrameWithParam} ReqStopCaptureDarkFrameWithParam instance
   */
  ReqStopCaptureDarkFrameWithParam.create = function create(properties) {
    return new ReqStopCaptureDarkFrameWithParam(properties);
  };

  /**
   * Encodes the specified ReqStopCaptureDarkFrameWithParam message. Does not implicitly {@link ReqStopCaptureDarkFrameWithParam.verify|verify} messages.
   * @function encode
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {IReqStopCaptureDarkFrameWithParam} message ReqStopCaptureDarkFrameWithParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureDarkFrameWithParam.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopCaptureDarkFrameWithParam message, length delimited. Does not implicitly {@link ReqStopCaptureDarkFrameWithParam.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {IReqStopCaptureDarkFrameWithParam} message ReqStopCaptureDarkFrameWithParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureDarkFrameWithParam.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopCaptureDarkFrameWithParam message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopCaptureDarkFrameWithParam} ReqStopCaptureDarkFrameWithParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureDarkFrameWithParam.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopCaptureDarkFrameWithParam();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopCaptureDarkFrameWithParam message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopCaptureDarkFrameWithParam} ReqStopCaptureDarkFrameWithParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureDarkFrameWithParam.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopCaptureDarkFrameWithParam message.
   * @function verify
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopCaptureDarkFrameWithParam.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopCaptureDarkFrameWithParam message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopCaptureDarkFrameWithParam} ReqStopCaptureDarkFrameWithParam
   */
  ReqStopCaptureDarkFrameWithParam.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopCaptureDarkFrameWithParam) return object;
    return new $root.ReqStopCaptureDarkFrameWithParam();
  };

  /**
   * Creates a plain object from a ReqStopCaptureDarkFrameWithParam message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {ReqStopCaptureDarkFrameWithParam} message ReqStopCaptureDarkFrameWithParam
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopCaptureDarkFrameWithParam.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopCaptureDarkFrameWithParam to JSON.
   * @function toJSON
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopCaptureDarkFrameWithParam.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopCaptureDarkFrameWithParam
   * @function getTypeUrl
   * @memberof ReqStopCaptureDarkFrameWithParam
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopCaptureDarkFrameWithParam.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopCaptureDarkFrameWithParam";
  };

  return ReqStopCaptureDarkFrameWithParam;
})();

$root.ReqGetDarkFrameList = (function () {
  /**
   * Properties of a ReqGetDarkFrameList.
   * @exports IReqGetDarkFrameList
   * @interface IReqGetDarkFrameList
   */

  /**
   * Constructs a new ReqGetDarkFrameList.
   * @exports ReqGetDarkFrameList
   * @classdesc Represents a ReqGetDarkFrameList.
   * @implements IReqGetDarkFrameList
   * @constructor
   * @param {IReqGetDarkFrameList=} [properties] Properties to set
   */
  function ReqGetDarkFrameList(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetDarkFrameList instance using the specified properties.
   * @function create
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {IReqGetDarkFrameList=} [properties] Properties to set
   * @returns {ReqGetDarkFrameList} ReqGetDarkFrameList instance
   */
  ReqGetDarkFrameList.create = function create(properties) {
    return new ReqGetDarkFrameList(properties);
  };

  /**
   * Encodes the specified ReqGetDarkFrameList message. Does not implicitly {@link ReqGetDarkFrameList.verify|verify} messages.
   * @function encode
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {IReqGetDarkFrameList} message ReqGetDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetDarkFrameList.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetDarkFrameList message, length delimited. Does not implicitly {@link ReqGetDarkFrameList.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {IReqGetDarkFrameList} message ReqGetDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetDarkFrameList.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetDarkFrameList message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetDarkFrameList} ReqGetDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetDarkFrameList.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetDarkFrameList();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetDarkFrameList message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetDarkFrameList} ReqGetDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetDarkFrameList.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetDarkFrameList message.
   * @function verify
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetDarkFrameList.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetDarkFrameList message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetDarkFrameList} ReqGetDarkFrameList
   */
  ReqGetDarkFrameList.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetDarkFrameList) return object;
    return new $root.ReqGetDarkFrameList();
  };

  /**
   * Creates a plain object from a ReqGetDarkFrameList message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {ReqGetDarkFrameList} message ReqGetDarkFrameList
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetDarkFrameList.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetDarkFrameList to JSON.
   * @function toJSON
   * @memberof ReqGetDarkFrameList
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetDarkFrameList.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetDarkFrameList
   * @function getTypeUrl
   * @memberof ReqGetDarkFrameList
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetDarkFrameList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetDarkFrameList";
  };

  return ReqGetDarkFrameList;
})();

$root.ResGetDarkFrameInfo = (function () {
  /**
   * Properties of a ResGetDarkFrameInfo.
   * @exports IResGetDarkFrameInfo
   * @interface IResGetDarkFrameInfo
   * @property {number|null} [expIndex] ResGetDarkFrameInfo expIndex
   * @property {number|null} [gainIndex] ResGetDarkFrameInfo gainIndex
   * @property {number|null} [binIndex] ResGetDarkFrameInfo binIndex
   * @property {string|null} [expName] ResGetDarkFrameInfo expName
   * @property {string|null} [gainName] ResGetDarkFrameInfo gainName
   * @property {string|null} [binName] ResGetDarkFrameInfo binName
   * @property {number|null} [temperature] ResGetDarkFrameInfo temperature
   */

  /**
   * Constructs a new ResGetDarkFrameInfo.
   * @exports ResGetDarkFrameInfo
   * @classdesc Represents a ResGetDarkFrameInfo.
   * @implements IResGetDarkFrameInfo
   * @constructor
   * @param {IResGetDarkFrameInfo=} [properties] Properties to set
   */
  function ResGetDarkFrameInfo(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetDarkFrameInfo expIndex.
   * @member {number} expIndex
   * @memberof ResGetDarkFrameInfo
   * @instance
   */
  ResGetDarkFrameInfo.prototype.expIndex = 0;

  /**
   * ResGetDarkFrameInfo gainIndex.
   * @member {number} gainIndex
   * @memberof ResGetDarkFrameInfo
   * @instance
   */
  ResGetDarkFrameInfo.prototype.gainIndex = 0;

  /**
   * ResGetDarkFrameInfo binIndex.
   * @member {number} binIndex
   * @memberof ResGetDarkFrameInfo
   * @instance
   */
  ResGetDarkFrameInfo.prototype.binIndex = 0;

  /**
   * ResGetDarkFrameInfo expName.
   * @member {string} expName
   * @memberof ResGetDarkFrameInfo
   * @instance
   */
  ResGetDarkFrameInfo.prototype.expName = "";

  /**
   * ResGetDarkFrameInfo gainName.
   * @member {string} gainName
   * @memberof ResGetDarkFrameInfo
   * @instance
   */
  ResGetDarkFrameInfo.prototype.gainName = "";

  /**
   * ResGetDarkFrameInfo binName.
   * @member {string} binName
   * @memberof ResGetDarkFrameInfo
   * @instance
   */
  ResGetDarkFrameInfo.prototype.binName = "";

  /**
   * ResGetDarkFrameInfo temperature.
   * @member {number} temperature
   * @memberof ResGetDarkFrameInfo
   * @instance
   */
  ResGetDarkFrameInfo.prototype.temperature = 0;

  /**
   * Creates a new ResGetDarkFrameInfo instance using the specified properties.
   * @function create
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {IResGetDarkFrameInfo=} [properties] Properties to set
   * @returns {ResGetDarkFrameInfo} ResGetDarkFrameInfo instance
   */
  ResGetDarkFrameInfo.create = function create(properties) {
    return new ResGetDarkFrameInfo(properties);
  };

  /**
   * Encodes the specified ResGetDarkFrameInfo message. Does not implicitly {@link ResGetDarkFrameInfo.verify|verify} messages.
   * @function encode
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {IResGetDarkFrameInfo} message ResGetDarkFrameInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetDarkFrameInfo.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.expIndex != null &&
      Object.hasOwnProperty.call(message, "expIndex")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.expIndex);
    if (
      message.gainIndex != null &&
      Object.hasOwnProperty.call(message, "gainIndex")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.gainIndex);
    if (
      message.binIndex != null &&
      Object.hasOwnProperty.call(message, "binIndex")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.binIndex);
    if (
      message.expName != null &&
      Object.hasOwnProperty.call(message, "expName")
    )
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.expName);
    if (
      message.gainName != null &&
      Object.hasOwnProperty.call(message, "gainName")
    )
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.gainName);
    if (
      message.binName != null &&
      Object.hasOwnProperty.call(message, "binName")
    )
      writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.binName);
    if (
      message.temperature != null &&
      Object.hasOwnProperty.call(message, "temperature")
    )
      writer.uint32(/* id 7, wireType 0 =*/ 56).int32(message.temperature);
    return writer;
  };

  /**
   * Encodes the specified ResGetDarkFrameInfo message, length delimited. Does not implicitly {@link ResGetDarkFrameInfo.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {IResGetDarkFrameInfo} message ResGetDarkFrameInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetDarkFrameInfo.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetDarkFrameInfo message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetDarkFrameInfo} ResGetDarkFrameInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetDarkFrameInfo.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetDarkFrameInfo();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.expIndex = reader.int32();
          break;
        }
        case 2: {
          message.gainIndex = reader.int32();
          break;
        }
        case 3: {
          message.binIndex = reader.int32();
          break;
        }
        case 4: {
          message.expName = reader.string();
          break;
        }
        case 5: {
          message.gainName = reader.string();
          break;
        }
        case 6: {
          message.binName = reader.string();
          break;
        }
        case 7: {
          message.temperature = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetDarkFrameInfo message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetDarkFrameInfo} ResGetDarkFrameInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetDarkFrameInfo.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetDarkFrameInfo message.
   * @function verify
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetDarkFrameInfo.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      if (!$util.isInteger(message.expIndex))
        return "expIndex: integer expected";
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      if (!$util.isInteger(message.gainIndex))
        return "gainIndex: integer expected";
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      if (!$util.isInteger(message.binIndex))
        return "binIndex: integer expected";
    if (message.expName != null && message.hasOwnProperty("expName"))
      if (!$util.isString(message.expName)) return "expName: string expected";
    if (message.gainName != null && message.hasOwnProperty("gainName"))
      if (!$util.isString(message.gainName)) return "gainName: string expected";
    if (message.binName != null && message.hasOwnProperty("binName"))
      if (!$util.isString(message.binName)) return "binName: string expected";
    if (message.temperature != null && message.hasOwnProperty("temperature"))
      if (!$util.isInteger(message.temperature))
        return "temperature: integer expected";
    return null;
  };

  /**
   * Creates a ResGetDarkFrameInfo message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetDarkFrameInfo} ResGetDarkFrameInfo
   */
  ResGetDarkFrameInfo.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetDarkFrameInfo) return object;
    var message = new $root.ResGetDarkFrameInfo();
    if (object.expIndex != null) message.expIndex = object.expIndex | 0;
    if (object.gainIndex != null) message.gainIndex = object.gainIndex | 0;
    if (object.binIndex != null) message.binIndex = object.binIndex | 0;
    if (object.expName != null) message.expName = String(object.expName);
    if (object.gainName != null) message.gainName = String(object.gainName);
    if (object.binName != null) message.binName = String(object.binName);
    if (object.temperature != null)
      message.temperature = object.temperature | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResGetDarkFrameInfo message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {ResGetDarkFrameInfo} message ResGetDarkFrameInfo
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetDarkFrameInfo.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.expIndex = 0;
      object.gainIndex = 0;
      object.binIndex = 0;
      object.expName = "";
      object.gainName = "";
      object.binName = "";
      object.temperature = 0;
    }
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      object.expIndex = message.expIndex;
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      object.gainIndex = message.gainIndex;
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      object.binIndex = message.binIndex;
    if (message.expName != null && message.hasOwnProperty("expName"))
      object.expName = message.expName;
    if (message.gainName != null && message.hasOwnProperty("gainName"))
      object.gainName = message.gainName;
    if (message.binName != null && message.hasOwnProperty("binName"))
      object.binName = message.binName;
    if (message.temperature != null && message.hasOwnProperty("temperature"))
      object.temperature = message.temperature;
    return object;
  };

  /**
   * Converts this ResGetDarkFrameInfo to JSON.
   * @function toJSON
   * @memberof ResGetDarkFrameInfo
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetDarkFrameInfo.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetDarkFrameInfo
   * @function getTypeUrl
   * @memberof ResGetDarkFrameInfo
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetDarkFrameInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetDarkFrameInfo";
  };

  return ResGetDarkFrameInfo;
})();

$root.ResGetDarkFrameInfoList = (function () {
  /**
   * Properties of a ResGetDarkFrameInfoList.
   * @exports IResGetDarkFrameInfoList
   * @interface IResGetDarkFrameInfoList
   * @property {number|null} [code] ResGetDarkFrameInfoList code
   * @property {Array.<IResGetDarkFrameInfo>|null} [results] ResGetDarkFrameInfoList results
   */

  /**
   * Constructs a new ResGetDarkFrameInfoList.
   * @exports ResGetDarkFrameInfoList
   * @classdesc Represents a ResGetDarkFrameInfoList.
   * @implements IResGetDarkFrameInfoList
   * @constructor
   * @param {IResGetDarkFrameInfoList=} [properties] Properties to set
   */
  function ResGetDarkFrameInfoList(properties) {
    this.results = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetDarkFrameInfoList code.
   * @member {number} code
   * @memberof ResGetDarkFrameInfoList
   * @instance
   */
  ResGetDarkFrameInfoList.prototype.code = 0;

  /**
   * ResGetDarkFrameInfoList results.
   * @member {Array.<IResGetDarkFrameInfo>} results
   * @memberof ResGetDarkFrameInfoList
   * @instance
   */
  ResGetDarkFrameInfoList.prototype.results = $util.emptyArray;

  /**
   * Creates a new ResGetDarkFrameInfoList instance using the specified properties.
   * @function create
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {IResGetDarkFrameInfoList=} [properties] Properties to set
   * @returns {ResGetDarkFrameInfoList} ResGetDarkFrameInfoList instance
   */
  ResGetDarkFrameInfoList.create = function create(properties) {
    return new ResGetDarkFrameInfoList(properties);
  };

  /**
   * Encodes the specified ResGetDarkFrameInfoList message. Does not implicitly {@link ResGetDarkFrameInfoList.verify|verify} messages.
   * @function encode
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {IResGetDarkFrameInfoList} message ResGetDarkFrameInfoList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetDarkFrameInfoList.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    if (message.results != null && message.results.length)
      for (var i = 0; i < message.results.length; ++i)
        $root.ResGetDarkFrameInfo.encode(
          message.results[i],
          writer.uint32(/* id 2, wireType 2 =*/ 18).fork()
        ).ldelim();
    return writer;
  };

  /**
   * Encodes the specified ResGetDarkFrameInfoList message, length delimited. Does not implicitly {@link ResGetDarkFrameInfoList.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {IResGetDarkFrameInfoList} message ResGetDarkFrameInfoList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetDarkFrameInfoList.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetDarkFrameInfoList message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetDarkFrameInfoList} ResGetDarkFrameInfoList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetDarkFrameInfoList.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetDarkFrameInfoList();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        case 2: {
          if (!(message.results && message.results.length))
            message.results = [];
          message.results.push(
            $root.ResGetDarkFrameInfo.decode(reader, reader.uint32())
          );
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetDarkFrameInfoList message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetDarkFrameInfoList} ResGetDarkFrameInfoList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetDarkFrameInfoList.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetDarkFrameInfoList message.
   * @function verify
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetDarkFrameInfoList.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.results != null && message.hasOwnProperty("results")) {
      if (!Array.isArray(message.results)) return "results: array expected";
      for (var i = 0; i < message.results.length; ++i) {
        var error = $root.ResGetDarkFrameInfo.verify(message.results[i]);
        if (error) return "results." + error;
      }
    }
    return null;
  };

  /**
   * Creates a ResGetDarkFrameInfoList message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetDarkFrameInfoList} ResGetDarkFrameInfoList
   */
  ResGetDarkFrameInfoList.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetDarkFrameInfoList) return object;
    var message = new $root.ResGetDarkFrameInfoList();
    if (object.code != null) message.code = object.code | 0;
    if (object.results) {
      if (!Array.isArray(object.results))
        throw TypeError(".ResGetDarkFrameInfoList.results: array expected");
      message.results = [];
      for (var i = 0; i < object.results.length; ++i) {
        if (typeof object.results[i] !== "object")
          throw TypeError(".ResGetDarkFrameInfoList.results: object expected");
        message.results[i] = $root.ResGetDarkFrameInfo.fromObject(
          object.results[i]
        );
      }
    }
    return message;
  };

  /**
   * Creates a plain object from a ResGetDarkFrameInfoList message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {ResGetDarkFrameInfoList} message ResGetDarkFrameInfoList
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetDarkFrameInfoList.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.results = [];
    if (options.defaults) object.code = 0;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.results && message.results.length) {
      object.results = [];
      for (var j = 0; j < message.results.length; ++j)
        object.results[j] = $root.ResGetDarkFrameInfo.toObject(
          message.results[j],
          options
        );
    }
    return object;
  };

  /**
   * Converts this ResGetDarkFrameInfoList to JSON.
   * @function toJSON
   * @memberof ResGetDarkFrameInfoList
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetDarkFrameInfoList.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetDarkFrameInfoList
   * @function getTypeUrl
   * @memberof ResGetDarkFrameInfoList
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetDarkFrameInfoList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetDarkFrameInfoList";
  };

  return ResGetDarkFrameInfoList;
})();

$root.ReqDelDarkFrame = (function () {
  /**
   * Properties of a ReqDelDarkFrame.
   * @exports IReqDelDarkFrame
   * @interface IReqDelDarkFrame
   * @property {number|null} [expIndex] ReqDelDarkFrame expIndex
   * @property {number|null} [gainIndex] ReqDelDarkFrame gainIndex
   * @property {number|null} [binIndex] ReqDelDarkFrame binIndex
   */

  /**
   * Constructs a new ReqDelDarkFrame.
   * @exports ReqDelDarkFrame
   * @classdesc Represents a ReqDelDarkFrame.
   * @implements IReqDelDarkFrame
   * @constructor
   * @param {IReqDelDarkFrame=} [properties] Properties to set
   */
  function ReqDelDarkFrame(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDelDarkFrame expIndex.
   * @member {number} expIndex
   * @memberof ReqDelDarkFrame
   * @instance
   */
  ReqDelDarkFrame.prototype.expIndex = 0;

  /**
   * ReqDelDarkFrame gainIndex.
   * @member {number} gainIndex
   * @memberof ReqDelDarkFrame
   * @instance
   */
  ReqDelDarkFrame.prototype.gainIndex = 0;

  /**
   * ReqDelDarkFrame binIndex.
   * @member {number} binIndex
   * @memberof ReqDelDarkFrame
   * @instance
   */
  ReqDelDarkFrame.prototype.binIndex = 0;

  /**
   * Creates a new ReqDelDarkFrame instance using the specified properties.
   * @function create
   * @memberof ReqDelDarkFrame
   * @static
   * @param {IReqDelDarkFrame=} [properties] Properties to set
   * @returns {ReqDelDarkFrame} ReqDelDarkFrame instance
   */
  ReqDelDarkFrame.create = function create(properties) {
    return new ReqDelDarkFrame(properties);
  };

  /**
   * Encodes the specified ReqDelDarkFrame message. Does not implicitly {@link ReqDelDarkFrame.verify|verify} messages.
   * @function encode
   * @memberof ReqDelDarkFrame
   * @static
   * @param {IReqDelDarkFrame} message ReqDelDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDelDarkFrame.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.expIndex != null &&
      Object.hasOwnProperty.call(message, "expIndex")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.expIndex);
    if (
      message.gainIndex != null &&
      Object.hasOwnProperty.call(message, "gainIndex")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.gainIndex);
    if (
      message.binIndex != null &&
      Object.hasOwnProperty.call(message, "binIndex")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.binIndex);
    return writer;
  };

  /**
   * Encodes the specified ReqDelDarkFrame message, length delimited. Does not implicitly {@link ReqDelDarkFrame.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDelDarkFrame
   * @static
   * @param {IReqDelDarkFrame} message ReqDelDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDelDarkFrame.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDelDarkFrame message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDelDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDelDarkFrame} ReqDelDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDelDarkFrame.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDelDarkFrame();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.expIndex = reader.int32();
          break;
        }
        case 2: {
          message.gainIndex = reader.int32();
          break;
        }
        case 3: {
          message.binIndex = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDelDarkFrame message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDelDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDelDarkFrame} ReqDelDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDelDarkFrame.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDelDarkFrame message.
   * @function verify
   * @memberof ReqDelDarkFrame
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDelDarkFrame.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      if (!$util.isInteger(message.expIndex))
        return "expIndex: integer expected";
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      if (!$util.isInteger(message.gainIndex))
        return "gainIndex: integer expected";
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      if (!$util.isInteger(message.binIndex))
        return "binIndex: integer expected";
    return null;
  };

  /**
   * Creates a ReqDelDarkFrame message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDelDarkFrame
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDelDarkFrame} ReqDelDarkFrame
   */
  ReqDelDarkFrame.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDelDarkFrame) return object;
    var message = new $root.ReqDelDarkFrame();
    if (object.expIndex != null) message.expIndex = object.expIndex | 0;
    if (object.gainIndex != null) message.gainIndex = object.gainIndex | 0;
    if (object.binIndex != null) message.binIndex = object.binIndex | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqDelDarkFrame message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDelDarkFrame
   * @static
   * @param {ReqDelDarkFrame} message ReqDelDarkFrame
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDelDarkFrame.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.expIndex = 0;
      object.gainIndex = 0;
      object.binIndex = 0;
    }
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      object.expIndex = message.expIndex;
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      object.gainIndex = message.gainIndex;
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      object.binIndex = message.binIndex;
    return object;
  };

  /**
   * Converts this ReqDelDarkFrame to JSON.
   * @function toJSON
   * @memberof ReqDelDarkFrame
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDelDarkFrame.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDelDarkFrame
   * @function getTypeUrl
   * @memberof ReqDelDarkFrame
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDelDarkFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDelDarkFrame";
  };

  return ReqDelDarkFrame;
})();

$root.ReqDelDarkFrameList = (function () {
  /**
   * Properties of a ReqDelDarkFrameList.
   * @exports IReqDelDarkFrameList
   * @interface IReqDelDarkFrameList
   * @property {Array.<IReqDelDarkFrame>|null} [darkList] ReqDelDarkFrameList darkList
   */

  /**
   * Constructs a new ReqDelDarkFrameList.
   * @exports ReqDelDarkFrameList
   * @classdesc Represents a ReqDelDarkFrameList.
   * @implements IReqDelDarkFrameList
   * @constructor
   * @param {IReqDelDarkFrameList=} [properties] Properties to set
   */
  function ReqDelDarkFrameList(properties) {
    this.darkList = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDelDarkFrameList darkList.
   * @member {Array.<IReqDelDarkFrame>} darkList
   * @memberof ReqDelDarkFrameList
   * @instance
   */
  ReqDelDarkFrameList.prototype.darkList = $util.emptyArray;

  /**
   * Creates a new ReqDelDarkFrameList instance using the specified properties.
   * @function create
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {IReqDelDarkFrameList=} [properties] Properties to set
   * @returns {ReqDelDarkFrameList} ReqDelDarkFrameList instance
   */
  ReqDelDarkFrameList.create = function create(properties) {
    return new ReqDelDarkFrameList(properties);
  };

  /**
   * Encodes the specified ReqDelDarkFrameList message. Does not implicitly {@link ReqDelDarkFrameList.verify|verify} messages.
   * @function encode
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {IReqDelDarkFrameList} message ReqDelDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDelDarkFrameList.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.darkList != null && message.darkList.length)
      for (var i = 0; i < message.darkList.length; ++i)
        $root.ReqDelDarkFrame.encode(
          message.darkList[i],
          writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
        ).ldelim();
    return writer;
  };

  /**
   * Encodes the specified ReqDelDarkFrameList message, length delimited. Does not implicitly {@link ReqDelDarkFrameList.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {IReqDelDarkFrameList} message ReqDelDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDelDarkFrameList.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDelDarkFrameList message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDelDarkFrameList} ReqDelDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDelDarkFrameList.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDelDarkFrameList();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          if (!(message.darkList && message.darkList.length))
            message.darkList = [];
          message.darkList.push(
            $root.ReqDelDarkFrame.decode(reader, reader.uint32())
          );
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDelDarkFrameList message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDelDarkFrameList} ReqDelDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDelDarkFrameList.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDelDarkFrameList message.
   * @function verify
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDelDarkFrameList.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.darkList != null && message.hasOwnProperty("darkList")) {
      if (!Array.isArray(message.darkList)) return "darkList: array expected";
      for (var i = 0; i < message.darkList.length; ++i) {
        var error = $root.ReqDelDarkFrame.verify(message.darkList[i]);
        if (error) return "darkList." + error;
      }
    }
    return null;
  };

  /**
   * Creates a ReqDelDarkFrameList message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDelDarkFrameList} ReqDelDarkFrameList
   */
  ReqDelDarkFrameList.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDelDarkFrameList) return object;
    var message = new $root.ReqDelDarkFrameList();
    if (object.darkList) {
      if (!Array.isArray(object.darkList))
        throw TypeError(".ReqDelDarkFrameList.darkList: array expected");
      message.darkList = [];
      for (var i = 0; i < object.darkList.length; ++i) {
        if (typeof object.darkList[i] !== "object")
          throw TypeError(".ReqDelDarkFrameList.darkList: object expected");
        message.darkList[i] = $root.ReqDelDarkFrame.fromObject(
          object.darkList[i]
        );
      }
    }
    return message;
  };

  /**
   * Creates a plain object from a ReqDelDarkFrameList message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {ReqDelDarkFrameList} message ReqDelDarkFrameList
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDelDarkFrameList.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.darkList = [];
    if (message.darkList && message.darkList.length) {
      object.darkList = [];
      for (var j = 0; j < message.darkList.length; ++j)
        object.darkList[j] = $root.ReqDelDarkFrame.toObject(
          message.darkList[j],
          options
        );
    }
    return object;
  };

  /**
   * Converts this ReqDelDarkFrameList to JSON.
   * @function toJSON
   * @memberof ReqDelDarkFrameList
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDelDarkFrameList.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDelDarkFrameList
   * @function getTypeUrl
   * @memberof ReqDelDarkFrameList
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDelDarkFrameList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDelDarkFrameList";
  };

  return ReqDelDarkFrameList;
})();

$root.ResDelDarkFrameList = (function () {
  /**
   * Properties of a ResDelDarkFrameList.
   * @exports IResDelDarkFrameList
   * @interface IResDelDarkFrameList
   * @property {number|null} [code] ResDelDarkFrameList code
   */

  /**
   * Constructs a new ResDelDarkFrameList.
   * @exports ResDelDarkFrameList
   * @classdesc Represents a ResDelDarkFrameList.
   * @implements IResDelDarkFrameList
   * @constructor
   * @param {IResDelDarkFrameList=} [properties] Properties to set
   */
  function ResDelDarkFrameList(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResDelDarkFrameList code.
   * @member {number} code
   * @memberof ResDelDarkFrameList
   * @instance
   */
  ResDelDarkFrameList.prototype.code = 0;

  /**
   * Creates a new ResDelDarkFrameList instance using the specified properties.
   * @function create
   * @memberof ResDelDarkFrameList
   * @static
   * @param {IResDelDarkFrameList=} [properties] Properties to set
   * @returns {ResDelDarkFrameList} ResDelDarkFrameList instance
   */
  ResDelDarkFrameList.create = function create(properties) {
    return new ResDelDarkFrameList(properties);
  };

  /**
   * Encodes the specified ResDelDarkFrameList message. Does not implicitly {@link ResDelDarkFrameList.verify|verify} messages.
   * @function encode
   * @memberof ResDelDarkFrameList
   * @static
   * @param {IResDelDarkFrameList} message ResDelDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDelDarkFrameList.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResDelDarkFrameList message, length delimited. Does not implicitly {@link ResDelDarkFrameList.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResDelDarkFrameList
   * @static
   * @param {IResDelDarkFrameList} message ResDelDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDelDarkFrameList.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResDelDarkFrameList message from the specified reader or buffer.
   * @function decode
   * @memberof ResDelDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResDelDarkFrameList} ResDelDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDelDarkFrameList.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResDelDarkFrameList();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResDelDarkFrameList message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResDelDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResDelDarkFrameList} ResDelDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDelDarkFrameList.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResDelDarkFrameList message.
   * @function verify
   * @memberof ResDelDarkFrameList
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResDelDarkFrameList.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResDelDarkFrameList message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResDelDarkFrameList
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResDelDarkFrameList} ResDelDarkFrameList
   */
  ResDelDarkFrameList.fromObject = function fromObject(object) {
    if (object instanceof $root.ResDelDarkFrameList) return object;
    var message = new $root.ResDelDarkFrameList();
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResDelDarkFrameList message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResDelDarkFrameList
   * @static
   * @param {ResDelDarkFrameList} message ResDelDarkFrameList
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResDelDarkFrameList.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.code = 0;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResDelDarkFrameList to JSON.
   * @function toJSON
   * @memberof ResDelDarkFrameList
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResDelDarkFrameList.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResDelDarkFrameList
   * @function getTypeUrl
   * @memberof ResDelDarkFrameList
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResDelDarkFrameList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResDelDarkFrameList";
  };

  return ResDelDarkFrameList;
})();

$root.ReqGoLive = (function () {
  /**
   * Properties of a ReqGoLive.
   * @exports IReqGoLive
   * @interface IReqGoLive
   */

  /**
   * Constructs a new ReqGoLive.
   * @exports ReqGoLive
   * @classdesc Represents a ReqGoLive.
   * @implements IReqGoLive
   * @constructor
   * @param {IReqGoLive=} [properties] Properties to set
   */
  function ReqGoLive(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGoLive instance using the specified properties.
   * @function create
   * @memberof ReqGoLive
   * @static
   * @param {IReqGoLive=} [properties] Properties to set
   * @returns {ReqGoLive} ReqGoLive instance
   */
  ReqGoLive.create = function create(properties) {
    return new ReqGoLive(properties);
  };

  /**
   * Encodes the specified ReqGoLive message. Does not implicitly {@link ReqGoLive.verify|verify} messages.
   * @function encode
   * @memberof ReqGoLive
   * @static
   * @param {IReqGoLive} message ReqGoLive message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGoLive.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGoLive message, length delimited. Does not implicitly {@link ReqGoLive.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGoLive
   * @static
   * @param {IReqGoLive} message ReqGoLive message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGoLive.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGoLive message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGoLive
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGoLive} ReqGoLive
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGoLive.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGoLive();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGoLive message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGoLive
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGoLive} ReqGoLive
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGoLive.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGoLive message.
   * @function verify
   * @memberof ReqGoLive
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGoLive.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGoLive message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGoLive
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGoLive} ReqGoLive
   */
  ReqGoLive.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGoLive) return object;
    return new $root.ReqGoLive();
  };

  /**
   * Creates a plain object from a ReqGoLive message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGoLive
   * @static
   * @param {ReqGoLive} message ReqGoLive
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGoLive.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGoLive to JSON.
   * @function toJSON
   * @memberof ReqGoLive
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGoLive.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGoLive
   * @function getTypeUrl
   * @memberof ReqGoLive
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGoLive.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGoLive";
  };

  return ReqGoLive;
})();

$root.ReqTrackSpecialTarget = (function () {
  /**
   * Properties of a ReqTrackSpecialTarget.
   * @exports IReqTrackSpecialTarget
   * @interface IReqTrackSpecialTarget
   * @property {number|null} [index] ReqTrackSpecialTarget index
   * @property {number|null} [lon] ReqTrackSpecialTarget lon
   * @property {number|null} [lat] ReqTrackSpecialTarget lat
   */

  /**
   * Constructs a new ReqTrackSpecialTarget.
   * @exports ReqTrackSpecialTarget
   * @classdesc Represents a ReqTrackSpecialTarget.
   * @implements IReqTrackSpecialTarget
   * @constructor
   * @param {IReqTrackSpecialTarget=} [properties] Properties to set
   */
  function ReqTrackSpecialTarget(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqTrackSpecialTarget index.
   * @member {number} index
   * @memberof ReqTrackSpecialTarget
   * @instance
   */
  ReqTrackSpecialTarget.prototype.index = 0;

  /**
   * ReqTrackSpecialTarget lon.
   * @member {number} lon
   * @memberof ReqTrackSpecialTarget
   * @instance
   */
  ReqTrackSpecialTarget.prototype.lon = 0;

  /**
   * ReqTrackSpecialTarget lat.
   * @member {number} lat
   * @memberof ReqTrackSpecialTarget
   * @instance
   */
  ReqTrackSpecialTarget.prototype.lat = 0;

  /**
   * Creates a new ReqTrackSpecialTarget instance using the specified properties.
   * @function create
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {IReqTrackSpecialTarget=} [properties] Properties to set
   * @returns {ReqTrackSpecialTarget} ReqTrackSpecialTarget instance
   */
  ReqTrackSpecialTarget.create = function create(properties) {
    return new ReqTrackSpecialTarget(properties);
  };

  /**
   * Encodes the specified ReqTrackSpecialTarget message. Does not implicitly {@link ReqTrackSpecialTarget.verify|verify} messages.
   * @function encode
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {IReqTrackSpecialTarget} message ReqTrackSpecialTarget message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqTrackSpecialTarget.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.index != null && Object.hasOwnProperty.call(message, "index"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.index);
    if (message.lon != null && Object.hasOwnProperty.call(message, "lon"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.lon);
    if (message.lat != null && Object.hasOwnProperty.call(message, "lat"))
      writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.lat);
    return writer;
  };

  /**
   * Encodes the specified ReqTrackSpecialTarget message, length delimited. Does not implicitly {@link ReqTrackSpecialTarget.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {IReqTrackSpecialTarget} message ReqTrackSpecialTarget message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqTrackSpecialTarget.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqTrackSpecialTarget message from the specified reader or buffer.
   * @function decode
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqTrackSpecialTarget} ReqTrackSpecialTarget
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqTrackSpecialTarget.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqTrackSpecialTarget();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.index = reader.int32();
          break;
        }
        case 2: {
          message.lon = reader.double();
          break;
        }
        case 3: {
          message.lat = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqTrackSpecialTarget message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqTrackSpecialTarget} ReqTrackSpecialTarget
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqTrackSpecialTarget.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqTrackSpecialTarget message.
   * @function verify
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqTrackSpecialTarget.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.index != null && message.hasOwnProperty("index"))
      if (!$util.isInteger(message.index)) return "index: integer expected";
    if (message.lon != null && message.hasOwnProperty("lon"))
      if (typeof message.lon !== "number") return "lon: number expected";
    if (message.lat != null && message.hasOwnProperty("lat"))
      if (typeof message.lat !== "number") return "lat: number expected";
    return null;
  };

  /**
   * Creates a ReqTrackSpecialTarget message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqTrackSpecialTarget} ReqTrackSpecialTarget
   */
  ReqTrackSpecialTarget.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqTrackSpecialTarget) return object;
    var message = new $root.ReqTrackSpecialTarget();
    if (object.index != null) message.index = object.index | 0;
    if (object.lon != null) message.lon = Number(object.lon);
    if (object.lat != null) message.lat = Number(object.lat);
    return message;
  };

  /**
   * Creates a plain object from a ReqTrackSpecialTarget message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {ReqTrackSpecialTarget} message ReqTrackSpecialTarget
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqTrackSpecialTarget.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.index = 0;
      object.lon = 0;
      object.lat = 0;
    }
    if (message.index != null && message.hasOwnProperty("index"))
      object.index = message.index;
    if (message.lon != null && message.hasOwnProperty("lon"))
      object.lon =
        options.json && !isFinite(message.lon)
          ? String(message.lon)
          : message.lon;
    if (message.lat != null && message.hasOwnProperty("lat"))
      object.lat =
        options.json && !isFinite(message.lat)
          ? String(message.lat)
          : message.lat;
    return object;
  };

  /**
   * Converts this ReqTrackSpecialTarget to JSON.
   * @function toJSON
   * @memberof ReqTrackSpecialTarget
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqTrackSpecialTarget.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqTrackSpecialTarget
   * @function getTypeUrl
   * @memberof ReqTrackSpecialTarget
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqTrackSpecialTarget.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqTrackSpecialTarget";
  };

  return ReqTrackSpecialTarget;
})();

$root.ReqStopTrackSpecialTarget = (function () {
  /**
   * Properties of a ReqStopTrackSpecialTarget.
   * @exports IReqStopTrackSpecialTarget
   * @interface IReqStopTrackSpecialTarget
   */

  /**
   * Constructs a new ReqStopTrackSpecialTarget.
   * @exports ReqStopTrackSpecialTarget
   * @classdesc Represents a ReqStopTrackSpecialTarget.
   * @implements IReqStopTrackSpecialTarget
   * @constructor
   * @param {IReqStopTrackSpecialTarget=} [properties] Properties to set
   */
  function ReqStopTrackSpecialTarget(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopTrackSpecialTarget instance using the specified properties.
   * @function create
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {IReqStopTrackSpecialTarget=} [properties] Properties to set
   * @returns {ReqStopTrackSpecialTarget} ReqStopTrackSpecialTarget instance
   */
  ReqStopTrackSpecialTarget.create = function create(properties) {
    return new ReqStopTrackSpecialTarget(properties);
  };

  /**
   * Encodes the specified ReqStopTrackSpecialTarget message. Does not implicitly {@link ReqStopTrackSpecialTarget.verify|verify} messages.
   * @function encode
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {IReqStopTrackSpecialTarget} message ReqStopTrackSpecialTarget message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopTrackSpecialTarget.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopTrackSpecialTarget message, length delimited. Does not implicitly {@link ReqStopTrackSpecialTarget.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {IReqStopTrackSpecialTarget} message ReqStopTrackSpecialTarget message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopTrackSpecialTarget.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopTrackSpecialTarget message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopTrackSpecialTarget} ReqStopTrackSpecialTarget
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopTrackSpecialTarget.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopTrackSpecialTarget();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopTrackSpecialTarget message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopTrackSpecialTarget} ReqStopTrackSpecialTarget
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopTrackSpecialTarget.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopTrackSpecialTarget message.
   * @function verify
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopTrackSpecialTarget.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopTrackSpecialTarget message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopTrackSpecialTarget} ReqStopTrackSpecialTarget
   */
  ReqStopTrackSpecialTarget.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopTrackSpecialTarget) return object;
    return new $root.ReqStopTrackSpecialTarget();
  };

  /**
   * Creates a plain object from a ReqStopTrackSpecialTarget message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {ReqStopTrackSpecialTarget} message ReqStopTrackSpecialTarget
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopTrackSpecialTarget.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopTrackSpecialTarget to JSON.
   * @function toJSON
   * @memberof ReqStopTrackSpecialTarget
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopTrackSpecialTarget.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopTrackSpecialTarget
   * @function getTypeUrl
   * @memberof ReqStopTrackSpecialTarget
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopTrackSpecialTarget.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopTrackSpecialTarget";
  };

  return ReqStopTrackSpecialTarget;
})();

$root.ReqOneClickGotoDSO = (function () {
  /**
   * Properties of a ReqOneClickGotoDSO.
   * @exports IReqOneClickGotoDSO
   * @interface IReqOneClickGotoDSO
   * @property {number|null} [ra] ReqOneClickGotoDSO ra
   * @property {number|null} [dec] ReqOneClickGotoDSO dec
   * @property {string|null} [targetName] ReqOneClickGotoDSO targetName
   */

  /**
   * Constructs a new ReqOneClickGotoDSO.
   * @exports ReqOneClickGotoDSO
   * @classdesc Represents a ReqOneClickGotoDSO.
   * @implements IReqOneClickGotoDSO
   * @constructor
   * @param {IReqOneClickGotoDSO=} [properties] Properties to set
   */
  function ReqOneClickGotoDSO(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqOneClickGotoDSO ra.
   * @member {number} ra
   * @memberof ReqOneClickGotoDSO
   * @instance
   */
  ReqOneClickGotoDSO.prototype.ra = 0;

  /**
   * ReqOneClickGotoDSO dec.
   * @member {number} dec
   * @memberof ReqOneClickGotoDSO
   * @instance
   */
  ReqOneClickGotoDSO.prototype.dec = 0;

  /**
   * ReqOneClickGotoDSO targetName.
   * @member {string} targetName
   * @memberof ReqOneClickGotoDSO
   * @instance
   */
  ReqOneClickGotoDSO.prototype.targetName = "";

  /**
   * Creates a new ReqOneClickGotoDSO instance using the specified properties.
   * @function create
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {IReqOneClickGotoDSO=} [properties] Properties to set
   * @returns {ReqOneClickGotoDSO} ReqOneClickGotoDSO instance
   */
  ReqOneClickGotoDSO.create = function create(properties) {
    return new ReqOneClickGotoDSO(properties);
  };

  /**
   * Encodes the specified ReqOneClickGotoDSO message. Does not implicitly {@link ReqOneClickGotoDSO.verify|verify} messages.
   * @function encode
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {IReqOneClickGotoDSO} message ReqOneClickGotoDSO message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOneClickGotoDSO.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.ra != null && Object.hasOwnProperty.call(message, "ra"))
      writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.ra);
    if (message.dec != null && Object.hasOwnProperty.call(message, "dec"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.dec);
    if (
      message.targetName != null &&
      Object.hasOwnProperty.call(message, "targetName")
    )
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.targetName);
    return writer;
  };

  /**
   * Encodes the specified ReqOneClickGotoDSO message, length delimited. Does not implicitly {@link ReqOneClickGotoDSO.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {IReqOneClickGotoDSO} message ReqOneClickGotoDSO message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOneClickGotoDSO.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqOneClickGotoDSO message from the specified reader or buffer.
   * @function decode
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqOneClickGotoDSO} ReqOneClickGotoDSO
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOneClickGotoDSO.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqOneClickGotoDSO();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.ra = reader.double();
          break;
        }
        case 2: {
          message.dec = reader.double();
          break;
        }
        case 3: {
          message.targetName = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqOneClickGotoDSO message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqOneClickGotoDSO} ReqOneClickGotoDSO
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOneClickGotoDSO.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqOneClickGotoDSO message.
   * @function verify
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqOneClickGotoDSO.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.ra != null && message.hasOwnProperty("ra"))
      if (typeof message.ra !== "number") return "ra: number expected";
    if (message.dec != null && message.hasOwnProperty("dec"))
      if (typeof message.dec !== "number") return "dec: number expected";
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      if (!$util.isString(message.targetName))
        return "targetName: string expected";
    return null;
  };

  /**
   * Creates a ReqOneClickGotoDSO message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqOneClickGotoDSO} ReqOneClickGotoDSO
   */
  ReqOneClickGotoDSO.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqOneClickGotoDSO) return object;
    var message = new $root.ReqOneClickGotoDSO();
    if (object.ra != null) message.ra = Number(object.ra);
    if (object.dec != null) message.dec = Number(object.dec);
    if (object.targetName != null)
      message.targetName = String(object.targetName);
    return message;
  };

  /**
   * Creates a plain object from a ReqOneClickGotoDSO message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {ReqOneClickGotoDSO} message ReqOneClickGotoDSO
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqOneClickGotoDSO.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.ra = 0;
      object.dec = 0;
      object.targetName = "";
    }
    if (message.ra != null && message.hasOwnProperty("ra"))
      object.ra =
        options.json && !isFinite(message.ra) ? String(message.ra) : message.ra;
    if (message.dec != null && message.hasOwnProperty("dec"))
      object.dec =
        options.json && !isFinite(message.dec)
          ? String(message.dec)
          : message.dec;
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      object.targetName = message.targetName;
    return object;
  };

  /**
   * Converts this ReqOneClickGotoDSO to JSON.
   * @function toJSON
   * @memberof ReqOneClickGotoDSO
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqOneClickGotoDSO.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqOneClickGotoDSO
   * @function getTypeUrl
   * @memberof ReqOneClickGotoDSO
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqOneClickGotoDSO.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqOneClickGotoDSO";
  };

  return ReqOneClickGotoDSO;
})();

$root.ReqOneClickGotoSolarSystem = (function () {
  /**
   * Properties of a ReqOneClickGotoSolarSystem.
   * @exports IReqOneClickGotoSolarSystem
   * @interface IReqOneClickGotoSolarSystem
   * @property {number|null} [index] ReqOneClickGotoSolarSystem index
   * @property {number|null} [lon] ReqOneClickGotoSolarSystem lon
   * @property {number|null} [lat] ReqOneClickGotoSolarSystem lat
   * @property {string|null} [targetName] ReqOneClickGotoSolarSystem targetName
   */

  /**
   * Constructs a new ReqOneClickGotoSolarSystem.
   * @exports ReqOneClickGotoSolarSystem
   * @classdesc Represents a ReqOneClickGotoSolarSystem.
   * @implements IReqOneClickGotoSolarSystem
   * @constructor
   * @param {IReqOneClickGotoSolarSystem=} [properties] Properties to set
   */
  function ReqOneClickGotoSolarSystem(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqOneClickGotoSolarSystem index.
   * @member {number} index
   * @memberof ReqOneClickGotoSolarSystem
   * @instance
   */
  ReqOneClickGotoSolarSystem.prototype.index = 0;

  /**
   * ReqOneClickGotoSolarSystem lon.
   * @member {number} lon
   * @memberof ReqOneClickGotoSolarSystem
   * @instance
   */
  ReqOneClickGotoSolarSystem.prototype.lon = 0;

  /**
   * ReqOneClickGotoSolarSystem lat.
   * @member {number} lat
   * @memberof ReqOneClickGotoSolarSystem
   * @instance
   */
  ReqOneClickGotoSolarSystem.prototype.lat = 0;

  /**
   * ReqOneClickGotoSolarSystem targetName.
   * @member {string} targetName
   * @memberof ReqOneClickGotoSolarSystem
   * @instance
   */
  ReqOneClickGotoSolarSystem.prototype.targetName = "";

  /**
   * Creates a new ReqOneClickGotoSolarSystem instance using the specified properties.
   * @function create
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {IReqOneClickGotoSolarSystem=} [properties] Properties to set
   * @returns {ReqOneClickGotoSolarSystem} ReqOneClickGotoSolarSystem instance
   */
  ReqOneClickGotoSolarSystem.create = function create(properties) {
    return new ReqOneClickGotoSolarSystem(properties);
  };

  /**
   * Encodes the specified ReqOneClickGotoSolarSystem message. Does not implicitly {@link ReqOneClickGotoSolarSystem.verify|verify} messages.
   * @function encode
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {IReqOneClickGotoSolarSystem} message ReqOneClickGotoSolarSystem message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOneClickGotoSolarSystem.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.index != null && Object.hasOwnProperty.call(message, "index"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.index);
    if (message.lon != null && Object.hasOwnProperty.call(message, "lon"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.lon);
    if (message.lat != null && Object.hasOwnProperty.call(message, "lat"))
      writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.lat);
    if (
      message.targetName != null &&
      Object.hasOwnProperty.call(message, "targetName")
    )
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.targetName);
    return writer;
  };

  /**
   * Encodes the specified ReqOneClickGotoSolarSystem message, length delimited. Does not implicitly {@link ReqOneClickGotoSolarSystem.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {IReqOneClickGotoSolarSystem} message ReqOneClickGotoSolarSystem message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOneClickGotoSolarSystem.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqOneClickGotoSolarSystem message from the specified reader or buffer.
   * @function decode
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqOneClickGotoSolarSystem} ReqOneClickGotoSolarSystem
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOneClickGotoSolarSystem.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqOneClickGotoSolarSystem();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.index = reader.int32();
          break;
        }
        case 2: {
          message.lon = reader.double();
          break;
        }
        case 3: {
          message.lat = reader.double();
          break;
        }
        case 4: {
          message.targetName = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqOneClickGotoSolarSystem message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqOneClickGotoSolarSystem} ReqOneClickGotoSolarSystem
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOneClickGotoSolarSystem.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqOneClickGotoSolarSystem message.
   * @function verify
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqOneClickGotoSolarSystem.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.index != null && message.hasOwnProperty("index"))
      if (!$util.isInteger(message.index)) return "index: integer expected";
    if (message.lon != null && message.hasOwnProperty("lon"))
      if (typeof message.lon !== "number") return "lon: number expected";
    if (message.lat != null && message.hasOwnProperty("lat"))
      if (typeof message.lat !== "number") return "lat: number expected";
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      if (!$util.isString(message.targetName))
        return "targetName: string expected";
    return null;
  };

  /**
   * Creates a ReqOneClickGotoSolarSystem message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqOneClickGotoSolarSystem} ReqOneClickGotoSolarSystem
   */
  ReqOneClickGotoSolarSystem.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqOneClickGotoSolarSystem) return object;
    var message = new $root.ReqOneClickGotoSolarSystem();
    if (object.index != null) message.index = object.index | 0;
    if (object.lon != null) message.lon = Number(object.lon);
    if (object.lat != null) message.lat = Number(object.lat);
    if (object.targetName != null)
      message.targetName = String(object.targetName);
    return message;
  };

  /**
   * Creates a plain object from a ReqOneClickGotoSolarSystem message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {ReqOneClickGotoSolarSystem} message ReqOneClickGotoSolarSystem
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqOneClickGotoSolarSystem.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.index = 0;
      object.lon = 0;
      object.lat = 0;
      object.targetName = "";
    }
    if (message.index != null && message.hasOwnProperty("index"))
      object.index = message.index;
    if (message.lon != null && message.hasOwnProperty("lon"))
      object.lon =
        options.json && !isFinite(message.lon)
          ? String(message.lon)
          : message.lon;
    if (message.lat != null && message.hasOwnProperty("lat"))
      object.lat =
        options.json && !isFinite(message.lat)
          ? String(message.lat)
          : message.lat;
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      object.targetName = message.targetName;
    return object;
  };

  /**
   * Converts this ReqOneClickGotoSolarSystem to JSON.
   * @function toJSON
   * @memberof ReqOneClickGotoSolarSystem
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqOneClickGotoSolarSystem.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqOneClickGotoSolarSystem
   * @function getTypeUrl
   * @memberof ReqOneClickGotoSolarSystem
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqOneClickGotoSolarSystem.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqOneClickGotoSolarSystem";
  };

  return ReqOneClickGotoSolarSystem;
})();

$root.ResOneClickGoto = (function () {
  /**
   * Properties of a ResOneClickGoto.
   * @exports IResOneClickGoto
   * @interface IResOneClickGoto
   * @property {number|null} [step] ResOneClickGoto step
   * @property {number|null} [code] ResOneClickGoto code
   * @property {boolean|null} [allEnd] ResOneClickGoto allEnd
   */

  /**
   * Constructs a new ResOneClickGoto.
   * @exports ResOneClickGoto
   * @classdesc Represents a ResOneClickGoto.
   * @implements IResOneClickGoto
   * @constructor
   * @param {IResOneClickGoto=} [properties] Properties to set
   */
  function ResOneClickGoto(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResOneClickGoto step.
   * @member {number} step
   * @memberof ResOneClickGoto
   * @instance
   */
  ResOneClickGoto.prototype.step = 0;

  /**
   * ResOneClickGoto code.
   * @member {number} code
   * @memberof ResOneClickGoto
   * @instance
   */
  ResOneClickGoto.prototype.code = 0;

  /**
   * ResOneClickGoto allEnd.
   * @member {boolean} allEnd
   * @memberof ResOneClickGoto
   * @instance
   */
  ResOneClickGoto.prototype.allEnd = false;

  /**
   * Creates a new ResOneClickGoto instance using the specified properties.
   * @function create
   * @memberof ResOneClickGoto
   * @static
   * @param {IResOneClickGoto=} [properties] Properties to set
   * @returns {ResOneClickGoto} ResOneClickGoto instance
   */
  ResOneClickGoto.create = function create(properties) {
    return new ResOneClickGoto(properties);
  };

  /**
   * Encodes the specified ResOneClickGoto message. Does not implicitly {@link ResOneClickGoto.verify|verify} messages.
   * @function encode
   * @memberof ResOneClickGoto
   * @static
   * @param {IResOneClickGoto} message ResOneClickGoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResOneClickGoto.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.step != null && Object.hasOwnProperty.call(message, "step"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.step);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    if (message.allEnd != null && Object.hasOwnProperty.call(message, "allEnd"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).bool(message.allEnd);
    return writer;
  };

  /**
   * Encodes the specified ResOneClickGoto message, length delimited. Does not implicitly {@link ResOneClickGoto.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResOneClickGoto
   * @static
   * @param {IResOneClickGoto} message ResOneClickGoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResOneClickGoto.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResOneClickGoto message from the specified reader or buffer.
   * @function decode
   * @memberof ResOneClickGoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResOneClickGoto} ResOneClickGoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResOneClickGoto.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResOneClickGoto();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.step = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        case 3: {
          message.allEnd = reader.bool();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResOneClickGoto message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResOneClickGoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResOneClickGoto} ResOneClickGoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResOneClickGoto.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResOneClickGoto message.
   * @function verify
   * @memberof ResOneClickGoto
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResOneClickGoto.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.step != null && message.hasOwnProperty("step"))
      if (!$util.isInteger(message.step)) return "step: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.allEnd != null && message.hasOwnProperty("allEnd"))
      if (typeof message.allEnd !== "boolean")
        return "allEnd: boolean expected";
    return null;
  };

  /**
   * Creates a ResOneClickGoto message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResOneClickGoto
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResOneClickGoto} ResOneClickGoto
   */
  ResOneClickGoto.fromObject = function fromObject(object) {
    if (object instanceof $root.ResOneClickGoto) return object;
    var message = new $root.ResOneClickGoto();
    if (object.step != null) message.step = object.step | 0;
    if (object.code != null) message.code = object.code | 0;
    if (object.allEnd != null) message.allEnd = Boolean(object.allEnd);
    return message;
  };

  /**
   * Creates a plain object from a ResOneClickGoto message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResOneClickGoto
   * @static
   * @param {ResOneClickGoto} message ResOneClickGoto
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResOneClickGoto.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.step = 0;
      object.code = 0;
      object.allEnd = false;
    }
    if (message.step != null && message.hasOwnProperty("step"))
      object.step = message.step;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.allEnd != null && message.hasOwnProperty("allEnd"))
      object.allEnd = message.allEnd;
    return object;
  };

  /**
   * Converts this ResOneClickGoto to JSON.
   * @function toJSON
   * @memberof ResOneClickGoto
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResOneClickGoto.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResOneClickGoto
   * @function getTypeUrl
   * @memberof ResOneClickGoto
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResOneClickGoto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResOneClickGoto";
  };

  return ResOneClickGoto;
})();

$root.ReqStopOneClickGoto = (function () {
  /**
   * Properties of a ReqStopOneClickGoto.
   * @exports IReqStopOneClickGoto
   * @interface IReqStopOneClickGoto
   */

  /**
   * Constructs a new ReqStopOneClickGoto.
   * @exports ReqStopOneClickGoto
   * @classdesc Represents a ReqStopOneClickGoto.
   * @implements IReqStopOneClickGoto
   * @constructor
   * @param {IReqStopOneClickGoto=} [properties] Properties to set
   */
  function ReqStopOneClickGoto(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopOneClickGoto instance using the specified properties.
   * @function create
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {IReqStopOneClickGoto=} [properties] Properties to set
   * @returns {ReqStopOneClickGoto} ReqStopOneClickGoto instance
   */
  ReqStopOneClickGoto.create = function create(properties) {
    return new ReqStopOneClickGoto(properties);
  };

  /**
   * Encodes the specified ReqStopOneClickGoto message. Does not implicitly {@link ReqStopOneClickGoto.verify|verify} messages.
   * @function encode
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {IReqStopOneClickGoto} message ReqStopOneClickGoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopOneClickGoto.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopOneClickGoto message, length delimited. Does not implicitly {@link ReqStopOneClickGoto.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {IReqStopOneClickGoto} message ReqStopOneClickGoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopOneClickGoto.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopOneClickGoto message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopOneClickGoto} ReqStopOneClickGoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopOneClickGoto.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopOneClickGoto();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopOneClickGoto message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopOneClickGoto} ReqStopOneClickGoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopOneClickGoto.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopOneClickGoto message.
   * @function verify
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopOneClickGoto.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopOneClickGoto message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopOneClickGoto} ReqStopOneClickGoto
   */
  ReqStopOneClickGoto.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopOneClickGoto) return object;
    return new $root.ReqStopOneClickGoto();
  };

  /**
   * Creates a plain object from a ReqStopOneClickGoto message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {ReqStopOneClickGoto} message ReqStopOneClickGoto
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopOneClickGoto.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopOneClickGoto to JSON.
   * @function toJSON
   * @memberof ReqStopOneClickGoto
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopOneClickGoto.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopOneClickGoto
   * @function getTypeUrl
   * @memberof ReqStopOneClickGoto
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopOneClickGoto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopOneClickGoto";
  };

  return ReqStopOneClickGoto;
})();

$root.ReqCaptureWideRawLiveStacking = (function () {
  /**
   * Properties of a ReqCaptureWideRawLiveStacking.
   * @exports IReqCaptureWideRawLiveStacking
   * @interface IReqCaptureWideRawLiveStacking
   */

  /**
   * Constructs a new ReqCaptureWideRawLiveStacking.
   * @exports ReqCaptureWideRawLiveStacking
   * @classdesc Represents a ReqCaptureWideRawLiveStacking.
   * @implements IReqCaptureWideRawLiveStacking
   * @constructor
   * @param {IReqCaptureWideRawLiveStacking=} [properties] Properties to set
   */
  function ReqCaptureWideRawLiveStacking(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqCaptureWideRawLiveStacking instance using the specified properties.
   * @function create
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {IReqCaptureWideRawLiveStacking=} [properties] Properties to set
   * @returns {ReqCaptureWideRawLiveStacking} ReqCaptureWideRawLiveStacking instance
   */
  ReqCaptureWideRawLiveStacking.create = function create(properties) {
    return new ReqCaptureWideRawLiveStacking(properties);
  };

  /**
   * Encodes the specified ReqCaptureWideRawLiveStacking message. Does not implicitly {@link ReqCaptureWideRawLiveStacking.verify|verify} messages.
   * @function encode
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {IReqCaptureWideRawLiveStacking} message ReqCaptureWideRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureWideRawLiveStacking.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqCaptureWideRawLiveStacking message, length delimited. Does not implicitly {@link ReqCaptureWideRawLiveStacking.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {IReqCaptureWideRawLiveStacking} message ReqCaptureWideRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureWideRawLiveStacking.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCaptureWideRawLiveStacking message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCaptureWideRawLiveStacking} ReqCaptureWideRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureWideRawLiveStacking.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCaptureWideRawLiveStacking();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCaptureWideRawLiveStacking message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCaptureWideRawLiveStacking} ReqCaptureWideRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureWideRawLiveStacking.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCaptureWideRawLiveStacking message.
   * @function verify
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCaptureWideRawLiveStacking.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqCaptureWideRawLiveStacking message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCaptureWideRawLiveStacking} ReqCaptureWideRawLiveStacking
   */
  ReqCaptureWideRawLiveStacking.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCaptureWideRawLiveStacking) return object;
    return new $root.ReqCaptureWideRawLiveStacking();
  };

  /**
   * Creates a plain object from a ReqCaptureWideRawLiveStacking message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {ReqCaptureWideRawLiveStacking} message ReqCaptureWideRawLiveStacking
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCaptureWideRawLiveStacking.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqCaptureWideRawLiveStacking to JSON.
   * @function toJSON
   * @memberof ReqCaptureWideRawLiveStacking
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCaptureWideRawLiveStacking.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCaptureWideRawLiveStacking
   * @function getTypeUrl
   * @memberof ReqCaptureWideRawLiveStacking
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCaptureWideRawLiveStacking.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCaptureWideRawLiveStacking";
  };

  return ReqCaptureWideRawLiveStacking;
})();

$root.ReqStopCaptureWideRawLiveStacking = (function () {
  /**
   * Properties of a ReqStopCaptureWideRawLiveStacking.
   * @exports IReqStopCaptureWideRawLiveStacking
   * @interface IReqStopCaptureWideRawLiveStacking
   */

  /**
   * Constructs a new ReqStopCaptureWideRawLiveStacking.
   * @exports ReqStopCaptureWideRawLiveStacking
   * @classdesc Represents a ReqStopCaptureWideRawLiveStacking.
   * @implements IReqStopCaptureWideRawLiveStacking
   * @constructor
   * @param {IReqStopCaptureWideRawLiveStacking=} [properties] Properties to set
   */
  function ReqStopCaptureWideRawLiveStacking(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopCaptureWideRawLiveStacking instance using the specified properties.
   * @function create
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {IReqStopCaptureWideRawLiveStacking=} [properties] Properties to set
   * @returns {ReqStopCaptureWideRawLiveStacking} ReqStopCaptureWideRawLiveStacking instance
   */
  ReqStopCaptureWideRawLiveStacking.create = function create(properties) {
    return new ReqStopCaptureWideRawLiveStacking(properties);
  };

  /**
   * Encodes the specified ReqStopCaptureWideRawLiveStacking message. Does not implicitly {@link ReqStopCaptureWideRawLiveStacking.verify|verify} messages.
   * @function encode
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {IReqStopCaptureWideRawLiveStacking} message ReqStopCaptureWideRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureWideRawLiveStacking.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopCaptureWideRawLiveStacking message, length delimited. Does not implicitly {@link ReqStopCaptureWideRawLiveStacking.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {IReqStopCaptureWideRawLiveStacking} message ReqStopCaptureWideRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureWideRawLiveStacking.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopCaptureWideRawLiveStacking message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopCaptureWideRawLiveStacking} ReqStopCaptureWideRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureWideRawLiveStacking.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopCaptureWideRawLiveStacking();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopCaptureWideRawLiveStacking message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopCaptureWideRawLiveStacking} ReqStopCaptureWideRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureWideRawLiveStacking.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopCaptureWideRawLiveStacking message.
   * @function verify
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopCaptureWideRawLiveStacking.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopCaptureWideRawLiveStacking message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopCaptureWideRawLiveStacking} ReqStopCaptureWideRawLiveStacking
   */
  ReqStopCaptureWideRawLiveStacking.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopCaptureWideRawLiveStacking)
      return object;
    return new $root.ReqStopCaptureWideRawLiveStacking();
  };

  /**
   * Creates a plain object from a ReqStopCaptureWideRawLiveStacking message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {ReqStopCaptureWideRawLiveStacking} message ReqStopCaptureWideRawLiveStacking
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopCaptureWideRawLiveStacking.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopCaptureWideRawLiveStacking to JSON.
   * @function toJSON
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopCaptureWideRawLiveStacking.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopCaptureWideRawLiveStacking
   * @function getTypeUrl
   * @memberof ReqStopCaptureWideRawLiveStacking
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopCaptureWideRawLiveStacking.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopCaptureWideRawLiveStacking";
  };

  return ReqStopCaptureWideRawLiveStacking;
})();

$root.ReqStartEqSolving = (function () {
  /**
   * Properties of a ReqStartEqSolving.
   * @exports IReqStartEqSolving
   * @interface IReqStartEqSolving
   * @property {number|null} [lon] ReqStartEqSolving lon
   * @property {number|null} [lat] ReqStartEqSolving lat
   */

  /**
   * Constructs a new ReqStartEqSolving.
   * @exports ReqStartEqSolving
   * @classdesc Represents a ReqStartEqSolving.
   * @implements IReqStartEqSolving
   * @constructor
   * @param {IReqStartEqSolving=} [properties] Properties to set
   */
  function ReqStartEqSolving(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqStartEqSolving lon.
   * @member {number} lon
   * @memberof ReqStartEqSolving
   * @instance
   */
  ReqStartEqSolving.prototype.lon = 0;

  /**
   * ReqStartEqSolving lat.
   * @member {number} lat
   * @memberof ReqStartEqSolving
   * @instance
   */
  ReqStartEqSolving.prototype.lat = 0;

  /**
   * Creates a new ReqStartEqSolving instance using the specified properties.
   * @function create
   * @memberof ReqStartEqSolving
   * @static
   * @param {IReqStartEqSolving=} [properties] Properties to set
   * @returns {ReqStartEqSolving} ReqStartEqSolving instance
   */
  ReqStartEqSolving.create = function create(properties) {
    return new ReqStartEqSolving(properties);
  };

  /**
   * Encodes the specified ReqStartEqSolving message. Does not implicitly {@link ReqStartEqSolving.verify|verify} messages.
   * @function encode
   * @memberof ReqStartEqSolving
   * @static
   * @param {IReqStartEqSolving} message ReqStartEqSolving message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartEqSolving.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.lon != null && Object.hasOwnProperty.call(message, "lon"))
      writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.lon);
    if (message.lat != null && Object.hasOwnProperty.call(message, "lat"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.lat);
    return writer;
  };

  /**
   * Encodes the specified ReqStartEqSolving message, length delimited. Does not implicitly {@link ReqStartEqSolving.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartEqSolving
   * @static
   * @param {IReqStartEqSolving} message ReqStartEqSolving message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartEqSolving.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartEqSolving message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartEqSolving
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartEqSolving} ReqStartEqSolving
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartEqSolving.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartEqSolving();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.lon = reader.double();
          break;
        }
        case 2: {
          message.lat = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartEqSolving message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartEqSolving
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartEqSolving} ReqStartEqSolving
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartEqSolving.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartEqSolving message.
   * @function verify
   * @memberof ReqStartEqSolving
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartEqSolving.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.lon != null && message.hasOwnProperty("lon"))
      if (typeof message.lon !== "number") return "lon: number expected";
    if (message.lat != null && message.hasOwnProperty("lat"))
      if (typeof message.lat !== "number") return "lat: number expected";
    return null;
  };

  /**
   * Creates a ReqStartEqSolving message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartEqSolving
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartEqSolving} ReqStartEqSolving
   */
  ReqStartEqSolving.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartEqSolving) return object;
    var message = new $root.ReqStartEqSolving();
    if (object.lon != null) message.lon = Number(object.lon);
    if (object.lat != null) message.lat = Number(object.lat);
    return message;
  };

  /**
   * Creates a plain object from a ReqStartEqSolving message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartEqSolving
   * @static
   * @param {ReqStartEqSolving} message ReqStartEqSolving
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartEqSolving.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.lon = 0;
      object.lat = 0;
    }
    if (message.lon != null && message.hasOwnProperty("lon"))
      object.lon =
        options.json && !isFinite(message.lon)
          ? String(message.lon)
          : message.lon;
    if (message.lat != null && message.hasOwnProperty("lat"))
      object.lat =
        options.json && !isFinite(message.lat)
          ? String(message.lat)
          : message.lat;
    return object;
  };

  /**
   * Converts this ReqStartEqSolving to JSON.
   * @function toJSON
   * @memberof ReqStartEqSolving
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartEqSolving.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartEqSolving
   * @function getTypeUrl
   * @memberof ReqStartEqSolving
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartEqSolving.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartEqSolving";
  };

  return ReqStartEqSolving;
})();

$root.ResStartEqSolving = (function () {
  /**
   * Properties of a ResStartEqSolving.
   * @exports IResStartEqSolving
   * @interface IResStartEqSolving
   * @property {number|null} [aziErr] ResStartEqSolving aziErr
   * @property {number|null} [altErr] ResStartEqSolving altErr
   * @property {number|null} [code] ResStartEqSolving code
   */

  /**
   * Constructs a new ResStartEqSolving.
   * @exports ResStartEqSolving
   * @classdesc Represents a ResStartEqSolving.
   * @implements IResStartEqSolving
   * @constructor
   * @param {IResStartEqSolving=} [properties] Properties to set
   */
  function ResStartEqSolving(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResStartEqSolving aziErr.
   * @member {number} aziErr
   * @memberof ResStartEqSolving
   * @instance
   */
  ResStartEqSolving.prototype.aziErr = 0;

  /**
   * ResStartEqSolving altErr.
   * @member {number} altErr
   * @memberof ResStartEqSolving
   * @instance
   */
  ResStartEqSolving.prototype.altErr = 0;

  /**
   * ResStartEqSolving code.
   * @member {number} code
   * @memberof ResStartEqSolving
   * @instance
   */
  ResStartEqSolving.prototype.code = 0;

  /**
   * Creates a new ResStartEqSolving instance using the specified properties.
   * @function create
   * @memberof ResStartEqSolving
   * @static
   * @param {IResStartEqSolving=} [properties] Properties to set
   * @returns {ResStartEqSolving} ResStartEqSolving instance
   */
  ResStartEqSolving.create = function create(properties) {
    return new ResStartEqSolving(properties);
  };

  /**
   * Encodes the specified ResStartEqSolving message. Does not implicitly {@link ResStartEqSolving.verify|verify} messages.
   * @function encode
   * @memberof ResStartEqSolving
   * @static
   * @param {IResStartEqSolving} message ResStartEqSolving message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResStartEqSolving.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.aziErr != null && Object.hasOwnProperty.call(message, "aziErr"))
      writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.aziErr);
    if (message.altErr != null && Object.hasOwnProperty.call(message, "altErr"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.altErr);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResStartEqSolving message, length delimited. Does not implicitly {@link ResStartEqSolving.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResStartEqSolving
   * @static
   * @param {IResStartEqSolving} message ResStartEqSolving message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResStartEqSolving.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResStartEqSolving message from the specified reader or buffer.
   * @function decode
   * @memberof ResStartEqSolving
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResStartEqSolving} ResStartEqSolving
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResStartEqSolving.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResStartEqSolving();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.aziErr = reader.double();
          break;
        }
        case 2: {
          message.altErr = reader.double();
          break;
        }
        case 3: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResStartEqSolving message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResStartEqSolving
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResStartEqSolving} ResStartEqSolving
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResStartEqSolving.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResStartEqSolving message.
   * @function verify
   * @memberof ResStartEqSolving
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResStartEqSolving.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.aziErr != null && message.hasOwnProperty("aziErr"))
      if (typeof message.aziErr !== "number") return "aziErr: number expected";
    if (message.altErr != null && message.hasOwnProperty("altErr"))
      if (typeof message.altErr !== "number") return "altErr: number expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResStartEqSolving message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResStartEqSolving
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResStartEqSolving} ResStartEqSolving
   */
  ResStartEqSolving.fromObject = function fromObject(object) {
    if (object instanceof $root.ResStartEqSolving) return object;
    var message = new $root.ResStartEqSolving();
    if (object.aziErr != null) message.aziErr = Number(object.aziErr);
    if (object.altErr != null) message.altErr = Number(object.altErr);
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResStartEqSolving message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResStartEqSolving
   * @static
   * @param {ResStartEqSolving} message ResStartEqSolving
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResStartEqSolving.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.aziErr = 0;
      object.altErr = 0;
      object.code = 0;
    }
    if (message.aziErr != null && message.hasOwnProperty("aziErr"))
      object.aziErr =
        options.json && !isFinite(message.aziErr)
          ? String(message.aziErr)
          : message.aziErr;
    if (message.altErr != null && message.hasOwnProperty("altErr"))
      object.altErr =
        options.json && !isFinite(message.altErr)
          ? String(message.altErr)
          : message.altErr;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResStartEqSolving to JSON.
   * @function toJSON
   * @memberof ResStartEqSolving
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResStartEqSolving.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResStartEqSolving
   * @function getTypeUrl
   * @memberof ResStartEqSolving
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResStartEqSolving.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResStartEqSolving";
  };

  return ResStartEqSolving;
})();

$root.ReqStopEqSolving = (function () {
  /**
   * Properties of a ReqStopEqSolving.
   * @exports IReqStopEqSolving
   * @interface IReqStopEqSolving
   */

  /**
   * Constructs a new ReqStopEqSolving.
   * @exports ReqStopEqSolving
   * @classdesc Represents a ReqStopEqSolving.
   * @implements IReqStopEqSolving
   * @constructor
   * @param {IReqStopEqSolving=} [properties] Properties to set
   */
  function ReqStopEqSolving(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopEqSolving instance using the specified properties.
   * @function create
   * @memberof ReqStopEqSolving
   * @static
   * @param {IReqStopEqSolving=} [properties] Properties to set
   * @returns {ReqStopEqSolving} ReqStopEqSolving instance
   */
  ReqStopEqSolving.create = function create(properties) {
    return new ReqStopEqSolving(properties);
  };

  /**
   * Encodes the specified ReqStopEqSolving message. Does not implicitly {@link ReqStopEqSolving.verify|verify} messages.
   * @function encode
   * @memberof ReqStopEqSolving
   * @static
   * @param {IReqStopEqSolving} message ReqStopEqSolving message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopEqSolving.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopEqSolving message, length delimited. Does not implicitly {@link ReqStopEqSolving.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopEqSolving
   * @static
   * @param {IReqStopEqSolving} message ReqStopEqSolving message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopEqSolving.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopEqSolving message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopEqSolving
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopEqSolving} ReqStopEqSolving
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopEqSolving.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopEqSolving();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopEqSolving message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopEqSolving
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopEqSolving} ReqStopEqSolving
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopEqSolving.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopEqSolving message.
   * @function verify
   * @memberof ReqStopEqSolving
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopEqSolving.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopEqSolving message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopEqSolving
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopEqSolving} ReqStopEqSolving
   */
  ReqStopEqSolving.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopEqSolving) return object;
    return new $root.ReqStopEqSolving();
  };

  /**
   * Creates a plain object from a ReqStopEqSolving message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopEqSolving
   * @static
   * @param {ReqStopEqSolving} message ReqStopEqSolving
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopEqSolving.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopEqSolving to JSON.
   * @function toJSON
   * @memberof ReqStopEqSolving
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopEqSolving.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopEqSolving
   * @function getTypeUrl
   * @memberof ReqStopEqSolving
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopEqSolving.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopEqSolving";
  };

  return ReqStopEqSolving;
})();

$root.ReqCaptureWideDarkFrameWithParam = (function () {
  /**
   * Properties of a ReqCaptureWideDarkFrameWithParam.
   * @exports IReqCaptureWideDarkFrameWithParam
   * @interface IReqCaptureWideDarkFrameWithParam
   * @property {number|null} [expIndex] ReqCaptureWideDarkFrameWithParam expIndex
   * @property {number|null} [gainIndex] ReqCaptureWideDarkFrameWithParam gainIndex
   * @property {number|null} [binIndex] ReqCaptureWideDarkFrameWithParam binIndex
   * @property {number|null} [capSize] ReqCaptureWideDarkFrameWithParam capSize
   */

  /**
   * Constructs a new ReqCaptureWideDarkFrameWithParam.
   * @exports ReqCaptureWideDarkFrameWithParam
   * @classdesc Represents a ReqCaptureWideDarkFrameWithParam.
   * @implements IReqCaptureWideDarkFrameWithParam
   * @constructor
   * @param {IReqCaptureWideDarkFrameWithParam=} [properties] Properties to set
   */
  function ReqCaptureWideDarkFrameWithParam(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqCaptureWideDarkFrameWithParam expIndex.
   * @member {number} expIndex
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @instance
   */
  ReqCaptureWideDarkFrameWithParam.prototype.expIndex = 0;

  /**
   * ReqCaptureWideDarkFrameWithParam gainIndex.
   * @member {number} gainIndex
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @instance
   */
  ReqCaptureWideDarkFrameWithParam.prototype.gainIndex = 0;

  /**
   * ReqCaptureWideDarkFrameWithParam binIndex.
   * @member {number} binIndex
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @instance
   */
  ReqCaptureWideDarkFrameWithParam.prototype.binIndex = 0;

  /**
   * ReqCaptureWideDarkFrameWithParam capSize.
   * @member {number} capSize
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @instance
   */
  ReqCaptureWideDarkFrameWithParam.prototype.capSize = 0;

  /**
   * Creates a new ReqCaptureWideDarkFrameWithParam instance using the specified properties.
   * @function create
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {IReqCaptureWideDarkFrameWithParam=} [properties] Properties to set
   * @returns {ReqCaptureWideDarkFrameWithParam} ReqCaptureWideDarkFrameWithParam instance
   */
  ReqCaptureWideDarkFrameWithParam.create = function create(properties) {
    return new ReqCaptureWideDarkFrameWithParam(properties);
  };

  /**
   * Encodes the specified ReqCaptureWideDarkFrameWithParam message. Does not implicitly {@link ReqCaptureWideDarkFrameWithParam.verify|verify} messages.
   * @function encode
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {IReqCaptureWideDarkFrameWithParam} message ReqCaptureWideDarkFrameWithParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureWideDarkFrameWithParam.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.expIndex != null &&
      Object.hasOwnProperty.call(message, "expIndex")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.expIndex);
    if (
      message.gainIndex != null &&
      Object.hasOwnProperty.call(message, "gainIndex")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.gainIndex);
    if (
      message.binIndex != null &&
      Object.hasOwnProperty.call(message, "binIndex")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.binIndex);
    if (
      message.capSize != null &&
      Object.hasOwnProperty.call(message, "capSize")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.capSize);
    return writer;
  };

  /**
   * Encodes the specified ReqCaptureWideDarkFrameWithParam message, length delimited. Does not implicitly {@link ReqCaptureWideDarkFrameWithParam.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {IReqCaptureWideDarkFrameWithParam} message ReqCaptureWideDarkFrameWithParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCaptureWideDarkFrameWithParam.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCaptureWideDarkFrameWithParam message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCaptureWideDarkFrameWithParam} ReqCaptureWideDarkFrameWithParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureWideDarkFrameWithParam.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCaptureWideDarkFrameWithParam();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.expIndex = reader.int32();
          break;
        }
        case 2: {
          message.gainIndex = reader.int32();
          break;
        }
        case 3: {
          message.binIndex = reader.int32();
          break;
        }
        case 4: {
          message.capSize = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCaptureWideDarkFrameWithParam message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCaptureWideDarkFrameWithParam} ReqCaptureWideDarkFrameWithParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCaptureWideDarkFrameWithParam.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCaptureWideDarkFrameWithParam message.
   * @function verify
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCaptureWideDarkFrameWithParam.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      if (!$util.isInteger(message.expIndex))
        return "expIndex: integer expected";
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      if (!$util.isInteger(message.gainIndex))
        return "gainIndex: integer expected";
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      if (!$util.isInteger(message.binIndex))
        return "binIndex: integer expected";
    if (message.capSize != null && message.hasOwnProperty("capSize"))
      if (!$util.isInteger(message.capSize)) return "capSize: integer expected";
    return null;
  };

  /**
   * Creates a ReqCaptureWideDarkFrameWithParam message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCaptureWideDarkFrameWithParam} ReqCaptureWideDarkFrameWithParam
   */
  ReqCaptureWideDarkFrameWithParam.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCaptureWideDarkFrameWithParam) return object;
    var message = new $root.ReqCaptureWideDarkFrameWithParam();
    if (object.expIndex != null) message.expIndex = object.expIndex | 0;
    if (object.gainIndex != null) message.gainIndex = object.gainIndex | 0;
    if (object.binIndex != null) message.binIndex = object.binIndex | 0;
    if (object.capSize != null) message.capSize = object.capSize | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqCaptureWideDarkFrameWithParam message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {ReqCaptureWideDarkFrameWithParam} message ReqCaptureWideDarkFrameWithParam
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCaptureWideDarkFrameWithParam.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.expIndex = 0;
      object.gainIndex = 0;
      object.binIndex = 0;
      object.capSize = 0;
    }
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      object.expIndex = message.expIndex;
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      object.gainIndex = message.gainIndex;
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      object.binIndex = message.binIndex;
    if (message.capSize != null && message.hasOwnProperty("capSize"))
      object.capSize = message.capSize;
    return object;
  };

  /**
   * Converts this ReqCaptureWideDarkFrameWithParam to JSON.
   * @function toJSON
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCaptureWideDarkFrameWithParam.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCaptureWideDarkFrameWithParam
   * @function getTypeUrl
   * @memberof ReqCaptureWideDarkFrameWithParam
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCaptureWideDarkFrameWithParam.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCaptureWideDarkFrameWithParam";
  };

  return ReqCaptureWideDarkFrameWithParam;
})();

$root.ReqStopCaptureWideDarkFrameWithParam = (function () {
  /**
   * Properties of a ReqStopCaptureWideDarkFrameWithParam.
   * @exports IReqStopCaptureWideDarkFrameWithParam
   * @interface IReqStopCaptureWideDarkFrameWithParam
   */

  /**
   * Constructs a new ReqStopCaptureWideDarkFrameWithParam.
   * @exports ReqStopCaptureWideDarkFrameWithParam
   * @classdesc Represents a ReqStopCaptureWideDarkFrameWithParam.
   * @implements IReqStopCaptureWideDarkFrameWithParam
   * @constructor
   * @param {IReqStopCaptureWideDarkFrameWithParam=} [properties] Properties to set
   */
  function ReqStopCaptureWideDarkFrameWithParam(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopCaptureWideDarkFrameWithParam instance using the specified properties.
   * @function create
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {IReqStopCaptureWideDarkFrameWithParam=} [properties] Properties to set
   * @returns {ReqStopCaptureWideDarkFrameWithParam} ReqStopCaptureWideDarkFrameWithParam instance
   */
  ReqStopCaptureWideDarkFrameWithParam.create = function create(properties) {
    return new ReqStopCaptureWideDarkFrameWithParam(properties);
  };

  /**
   * Encodes the specified ReqStopCaptureWideDarkFrameWithParam message. Does not implicitly {@link ReqStopCaptureWideDarkFrameWithParam.verify|verify} messages.
   * @function encode
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {IReqStopCaptureWideDarkFrameWithParam} message ReqStopCaptureWideDarkFrameWithParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureWideDarkFrameWithParam.encode = function encode(
    message,
    writer
  ) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopCaptureWideDarkFrameWithParam message, length delimited. Does not implicitly {@link ReqStopCaptureWideDarkFrameWithParam.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {IReqStopCaptureWideDarkFrameWithParam} message ReqStopCaptureWideDarkFrameWithParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopCaptureWideDarkFrameWithParam.encodeDelimited =
    function encodeDelimited(message, writer) {
      return this.encode(message, writer).ldelim();
    };

  /**
   * Decodes a ReqStopCaptureWideDarkFrameWithParam message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopCaptureWideDarkFrameWithParam} ReqStopCaptureWideDarkFrameWithParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureWideDarkFrameWithParam.decode = function decode(
    reader,
    length
  ) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopCaptureWideDarkFrameWithParam();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopCaptureWideDarkFrameWithParam message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopCaptureWideDarkFrameWithParam} ReqStopCaptureWideDarkFrameWithParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopCaptureWideDarkFrameWithParam.decodeDelimited =
    function decodeDelimited(reader) {
      if (!(reader instanceof $Reader)) reader = new $Reader(reader);
      return this.decode(reader, reader.uint32());
    };

  /**
   * Verifies a ReqStopCaptureWideDarkFrameWithParam message.
   * @function verify
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopCaptureWideDarkFrameWithParam.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopCaptureWideDarkFrameWithParam message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopCaptureWideDarkFrameWithParam} ReqStopCaptureWideDarkFrameWithParam
   */
  ReqStopCaptureWideDarkFrameWithParam.fromObject = function fromObject(
    object
  ) {
    if (object instanceof $root.ReqStopCaptureWideDarkFrameWithParam)
      return object;
    return new $root.ReqStopCaptureWideDarkFrameWithParam();
  };

  /**
   * Creates a plain object from a ReqStopCaptureWideDarkFrameWithParam message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {ReqStopCaptureWideDarkFrameWithParam} message ReqStopCaptureWideDarkFrameWithParam
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopCaptureWideDarkFrameWithParam.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopCaptureWideDarkFrameWithParam to JSON.
   * @function toJSON
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopCaptureWideDarkFrameWithParam.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopCaptureWideDarkFrameWithParam
   * @function getTypeUrl
   * @memberof ReqStopCaptureWideDarkFrameWithParam
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopCaptureWideDarkFrameWithParam.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopCaptureWideDarkFrameWithParam";
  };

  return ReqStopCaptureWideDarkFrameWithParam;
})();

$root.ReqGetWideDarkFrameList = (function () {
  /**
   * Properties of a ReqGetWideDarkFrameList.
   * @exports IReqGetWideDarkFrameList
   * @interface IReqGetWideDarkFrameList
   */

  /**
   * Constructs a new ReqGetWideDarkFrameList.
   * @exports ReqGetWideDarkFrameList
   * @classdesc Represents a ReqGetWideDarkFrameList.
   * @implements IReqGetWideDarkFrameList
   * @constructor
   * @param {IReqGetWideDarkFrameList=} [properties] Properties to set
   */
  function ReqGetWideDarkFrameList(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetWideDarkFrameList instance using the specified properties.
   * @function create
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {IReqGetWideDarkFrameList=} [properties] Properties to set
   * @returns {ReqGetWideDarkFrameList} ReqGetWideDarkFrameList instance
   */
  ReqGetWideDarkFrameList.create = function create(properties) {
    return new ReqGetWideDarkFrameList(properties);
  };

  /**
   * Encodes the specified ReqGetWideDarkFrameList message. Does not implicitly {@link ReqGetWideDarkFrameList.verify|verify} messages.
   * @function encode
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {IReqGetWideDarkFrameList} message ReqGetWideDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetWideDarkFrameList.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetWideDarkFrameList message, length delimited. Does not implicitly {@link ReqGetWideDarkFrameList.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {IReqGetWideDarkFrameList} message ReqGetWideDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetWideDarkFrameList.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetWideDarkFrameList message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetWideDarkFrameList} ReqGetWideDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetWideDarkFrameList.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetWideDarkFrameList();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetWideDarkFrameList message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetWideDarkFrameList} ReqGetWideDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetWideDarkFrameList.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetWideDarkFrameList message.
   * @function verify
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetWideDarkFrameList.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetWideDarkFrameList message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetWideDarkFrameList} ReqGetWideDarkFrameList
   */
  ReqGetWideDarkFrameList.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetWideDarkFrameList) return object;
    return new $root.ReqGetWideDarkFrameList();
  };

  /**
   * Creates a plain object from a ReqGetWideDarkFrameList message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {ReqGetWideDarkFrameList} message ReqGetWideDarkFrameList
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetWideDarkFrameList.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetWideDarkFrameList to JSON.
   * @function toJSON
   * @memberof ReqGetWideDarkFrameList
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetWideDarkFrameList.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetWideDarkFrameList
   * @function getTypeUrl
   * @memberof ReqGetWideDarkFrameList
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetWideDarkFrameList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetWideDarkFrameList";
  };

  return ReqGetWideDarkFrameList;
})();

$root.ResGetWideDarkFrameInfo = (function () {
  /**
   * Properties of a ResGetWideDarkFrameInfo.
   * @exports IResGetWideDarkFrameInfo
   * @interface IResGetWideDarkFrameInfo
   * @property {number|null} [expIndex] ResGetWideDarkFrameInfo expIndex
   * @property {number|null} [gainIndex] ResGetWideDarkFrameInfo gainIndex
   * @property {number|null} [binIndex] ResGetWideDarkFrameInfo binIndex
   * @property {string|null} [expName] ResGetWideDarkFrameInfo expName
   * @property {string|null} [gainName] ResGetWideDarkFrameInfo gainName
   * @property {string|null} [binName] ResGetWideDarkFrameInfo binName
   * @property {number|null} [temperature] ResGetWideDarkFrameInfo temperature
   */

  /**
   * Constructs a new ResGetWideDarkFrameInfo.
   * @exports ResGetWideDarkFrameInfo
   * @classdesc Represents a ResGetWideDarkFrameInfo.
   * @implements IResGetWideDarkFrameInfo
   * @constructor
   * @param {IResGetWideDarkFrameInfo=} [properties] Properties to set
   */
  function ResGetWideDarkFrameInfo(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetWideDarkFrameInfo expIndex.
   * @member {number} expIndex
   * @memberof ResGetWideDarkFrameInfo
   * @instance
   */
  ResGetWideDarkFrameInfo.prototype.expIndex = 0;

  /**
   * ResGetWideDarkFrameInfo gainIndex.
   * @member {number} gainIndex
   * @memberof ResGetWideDarkFrameInfo
   * @instance
   */
  ResGetWideDarkFrameInfo.prototype.gainIndex = 0;

  /**
   * ResGetWideDarkFrameInfo binIndex.
   * @member {number} binIndex
   * @memberof ResGetWideDarkFrameInfo
   * @instance
   */
  ResGetWideDarkFrameInfo.prototype.binIndex = 0;

  /**
   * ResGetWideDarkFrameInfo expName.
   * @member {string} expName
   * @memberof ResGetWideDarkFrameInfo
   * @instance
   */
  ResGetWideDarkFrameInfo.prototype.expName = "";

  /**
   * ResGetWideDarkFrameInfo gainName.
   * @member {string} gainName
   * @memberof ResGetWideDarkFrameInfo
   * @instance
   */
  ResGetWideDarkFrameInfo.prototype.gainName = "";

  /**
   * ResGetWideDarkFrameInfo binName.
   * @member {string} binName
   * @memberof ResGetWideDarkFrameInfo
   * @instance
   */
  ResGetWideDarkFrameInfo.prototype.binName = "";

  /**
   * ResGetWideDarkFrameInfo temperature.
   * @member {number} temperature
   * @memberof ResGetWideDarkFrameInfo
   * @instance
   */
  ResGetWideDarkFrameInfo.prototype.temperature = 0;

  /**
   * Creates a new ResGetWideDarkFrameInfo instance using the specified properties.
   * @function create
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {IResGetWideDarkFrameInfo=} [properties] Properties to set
   * @returns {ResGetWideDarkFrameInfo} ResGetWideDarkFrameInfo instance
   */
  ResGetWideDarkFrameInfo.create = function create(properties) {
    return new ResGetWideDarkFrameInfo(properties);
  };

  /**
   * Encodes the specified ResGetWideDarkFrameInfo message. Does not implicitly {@link ResGetWideDarkFrameInfo.verify|verify} messages.
   * @function encode
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {IResGetWideDarkFrameInfo} message ResGetWideDarkFrameInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetWideDarkFrameInfo.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.expIndex != null &&
      Object.hasOwnProperty.call(message, "expIndex")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.expIndex);
    if (
      message.gainIndex != null &&
      Object.hasOwnProperty.call(message, "gainIndex")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.gainIndex);
    if (
      message.binIndex != null &&
      Object.hasOwnProperty.call(message, "binIndex")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.binIndex);
    if (
      message.expName != null &&
      Object.hasOwnProperty.call(message, "expName")
    )
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.expName);
    if (
      message.gainName != null &&
      Object.hasOwnProperty.call(message, "gainName")
    )
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.gainName);
    if (
      message.binName != null &&
      Object.hasOwnProperty.call(message, "binName")
    )
      writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.binName);
    if (
      message.temperature != null &&
      Object.hasOwnProperty.call(message, "temperature")
    )
      writer.uint32(/* id 7, wireType 0 =*/ 56).int32(message.temperature);
    return writer;
  };

  /**
   * Encodes the specified ResGetWideDarkFrameInfo message, length delimited. Does not implicitly {@link ResGetWideDarkFrameInfo.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {IResGetWideDarkFrameInfo} message ResGetWideDarkFrameInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetWideDarkFrameInfo.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetWideDarkFrameInfo message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetWideDarkFrameInfo} ResGetWideDarkFrameInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetWideDarkFrameInfo.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetWideDarkFrameInfo();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.expIndex = reader.int32();
          break;
        }
        case 2: {
          message.gainIndex = reader.int32();
          break;
        }
        case 3: {
          message.binIndex = reader.int32();
          break;
        }
        case 4: {
          message.expName = reader.string();
          break;
        }
        case 5: {
          message.gainName = reader.string();
          break;
        }
        case 6: {
          message.binName = reader.string();
          break;
        }
        case 7: {
          message.temperature = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetWideDarkFrameInfo message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetWideDarkFrameInfo} ResGetWideDarkFrameInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetWideDarkFrameInfo.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetWideDarkFrameInfo message.
   * @function verify
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetWideDarkFrameInfo.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      if (!$util.isInteger(message.expIndex))
        return "expIndex: integer expected";
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      if (!$util.isInteger(message.gainIndex))
        return "gainIndex: integer expected";
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      if (!$util.isInteger(message.binIndex))
        return "binIndex: integer expected";
    if (message.expName != null && message.hasOwnProperty("expName"))
      if (!$util.isString(message.expName)) return "expName: string expected";
    if (message.gainName != null && message.hasOwnProperty("gainName"))
      if (!$util.isString(message.gainName)) return "gainName: string expected";
    if (message.binName != null && message.hasOwnProperty("binName"))
      if (!$util.isString(message.binName)) return "binName: string expected";
    if (message.temperature != null && message.hasOwnProperty("temperature"))
      if (!$util.isInteger(message.temperature))
        return "temperature: integer expected";
    return null;
  };

  /**
   * Creates a ResGetWideDarkFrameInfo message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetWideDarkFrameInfo} ResGetWideDarkFrameInfo
   */
  ResGetWideDarkFrameInfo.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetWideDarkFrameInfo) return object;
    var message = new $root.ResGetWideDarkFrameInfo();
    if (object.expIndex != null) message.expIndex = object.expIndex | 0;
    if (object.gainIndex != null) message.gainIndex = object.gainIndex | 0;
    if (object.binIndex != null) message.binIndex = object.binIndex | 0;
    if (object.expName != null) message.expName = String(object.expName);
    if (object.gainName != null) message.gainName = String(object.gainName);
    if (object.binName != null) message.binName = String(object.binName);
    if (object.temperature != null)
      message.temperature = object.temperature | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResGetWideDarkFrameInfo message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {ResGetWideDarkFrameInfo} message ResGetWideDarkFrameInfo
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetWideDarkFrameInfo.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.expIndex = 0;
      object.gainIndex = 0;
      object.binIndex = 0;
      object.expName = "";
      object.gainName = "";
      object.binName = "";
      object.temperature = 0;
    }
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      object.expIndex = message.expIndex;
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      object.gainIndex = message.gainIndex;
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      object.binIndex = message.binIndex;
    if (message.expName != null && message.hasOwnProperty("expName"))
      object.expName = message.expName;
    if (message.gainName != null && message.hasOwnProperty("gainName"))
      object.gainName = message.gainName;
    if (message.binName != null && message.hasOwnProperty("binName"))
      object.binName = message.binName;
    if (message.temperature != null && message.hasOwnProperty("temperature"))
      object.temperature = message.temperature;
    return object;
  };

  /**
   * Converts this ResGetWideDarkFrameInfo to JSON.
   * @function toJSON
   * @memberof ResGetWideDarkFrameInfo
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetWideDarkFrameInfo.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetWideDarkFrameInfo
   * @function getTypeUrl
   * @memberof ResGetWideDarkFrameInfo
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetWideDarkFrameInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetWideDarkFrameInfo";
  };

  return ResGetWideDarkFrameInfo;
})();

$root.ResGetWideDarkFrameInfoList = (function () {
  /**
   * Properties of a ResGetWideDarkFrameInfoList.
   * @exports IResGetWideDarkFrameInfoList
   * @interface IResGetWideDarkFrameInfoList
   * @property {number|null} [code] ResGetWideDarkFrameInfoList code
   * @property {Array.<IResGetDarkFrameInfo>|null} [results] ResGetWideDarkFrameInfoList results
   */

  /**
   * Constructs a new ResGetWideDarkFrameInfoList.
   * @exports ResGetWideDarkFrameInfoList
   * @classdesc Represents a ResGetWideDarkFrameInfoList.
   * @implements IResGetWideDarkFrameInfoList
   * @constructor
   * @param {IResGetWideDarkFrameInfoList=} [properties] Properties to set
   */
  function ResGetWideDarkFrameInfoList(properties) {
    this.results = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetWideDarkFrameInfoList code.
   * @member {number} code
   * @memberof ResGetWideDarkFrameInfoList
   * @instance
   */
  ResGetWideDarkFrameInfoList.prototype.code = 0;

  /**
   * ResGetWideDarkFrameInfoList results.
   * @member {Array.<IResGetDarkFrameInfo>} results
   * @memberof ResGetWideDarkFrameInfoList
   * @instance
   */
  ResGetWideDarkFrameInfoList.prototype.results = $util.emptyArray;

  /**
   * Creates a new ResGetWideDarkFrameInfoList instance using the specified properties.
   * @function create
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {IResGetWideDarkFrameInfoList=} [properties] Properties to set
   * @returns {ResGetWideDarkFrameInfoList} ResGetWideDarkFrameInfoList instance
   */
  ResGetWideDarkFrameInfoList.create = function create(properties) {
    return new ResGetWideDarkFrameInfoList(properties);
  };

  /**
   * Encodes the specified ResGetWideDarkFrameInfoList message. Does not implicitly {@link ResGetWideDarkFrameInfoList.verify|verify} messages.
   * @function encode
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {IResGetWideDarkFrameInfoList} message ResGetWideDarkFrameInfoList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetWideDarkFrameInfoList.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    if (message.results != null && message.results.length)
      for (var i = 0; i < message.results.length; ++i)
        $root.ResGetDarkFrameInfo.encode(
          message.results[i],
          writer.uint32(/* id 2, wireType 2 =*/ 18).fork()
        ).ldelim();
    return writer;
  };

  /**
   * Encodes the specified ResGetWideDarkFrameInfoList message, length delimited. Does not implicitly {@link ResGetWideDarkFrameInfoList.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {IResGetWideDarkFrameInfoList} message ResGetWideDarkFrameInfoList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetWideDarkFrameInfoList.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetWideDarkFrameInfoList message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetWideDarkFrameInfoList} ResGetWideDarkFrameInfoList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetWideDarkFrameInfoList.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetWideDarkFrameInfoList();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        case 2: {
          if (!(message.results && message.results.length))
            message.results = [];
          message.results.push(
            $root.ResGetDarkFrameInfo.decode(reader, reader.uint32())
          );
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetWideDarkFrameInfoList message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetWideDarkFrameInfoList} ResGetWideDarkFrameInfoList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetWideDarkFrameInfoList.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetWideDarkFrameInfoList message.
   * @function verify
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetWideDarkFrameInfoList.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.results != null && message.hasOwnProperty("results")) {
      if (!Array.isArray(message.results)) return "results: array expected";
      for (var i = 0; i < message.results.length; ++i) {
        var error = $root.ResGetDarkFrameInfo.verify(message.results[i]);
        if (error) return "results." + error;
      }
    }
    return null;
  };

  /**
   * Creates a ResGetWideDarkFrameInfoList message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetWideDarkFrameInfoList} ResGetWideDarkFrameInfoList
   */
  ResGetWideDarkFrameInfoList.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetWideDarkFrameInfoList) return object;
    var message = new $root.ResGetWideDarkFrameInfoList();
    if (object.code != null) message.code = object.code | 0;
    if (object.results) {
      if (!Array.isArray(object.results))
        throw TypeError(".ResGetWideDarkFrameInfoList.results: array expected");
      message.results = [];
      for (var i = 0; i < object.results.length; ++i) {
        if (typeof object.results[i] !== "object")
          throw TypeError(
            ".ResGetWideDarkFrameInfoList.results: object expected"
          );
        message.results[i] = $root.ResGetDarkFrameInfo.fromObject(
          object.results[i]
        );
      }
    }
    return message;
  };

  /**
   * Creates a plain object from a ResGetWideDarkFrameInfoList message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {ResGetWideDarkFrameInfoList} message ResGetWideDarkFrameInfoList
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetWideDarkFrameInfoList.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.results = [];
    if (options.defaults) object.code = 0;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.results && message.results.length) {
      object.results = [];
      for (var j = 0; j < message.results.length; ++j)
        object.results[j] = $root.ResGetDarkFrameInfo.toObject(
          message.results[j],
          options
        );
    }
    return object;
  };

  /**
   * Converts this ResGetWideDarkFrameInfoList to JSON.
   * @function toJSON
   * @memberof ResGetWideDarkFrameInfoList
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetWideDarkFrameInfoList.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetWideDarkFrameInfoList
   * @function getTypeUrl
   * @memberof ResGetWideDarkFrameInfoList
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetWideDarkFrameInfoList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetWideDarkFrameInfoList";
  };

  return ResGetWideDarkFrameInfoList;
})();

$root.ReqDelWideDarkFrame = (function () {
  /**
   * Properties of a ReqDelWideDarkFrame.
   * @exports IReqDelWideDarkFrame
   * @interface IReqDelWideDarkFrame
   * @property {number|null} [expIndex] ReqDelWideDarkFrame expIndex
   * @property {number|null} [gainIndex] ReqDelWideDarkFrame gainIndex
   * @property {number|null} [binIndex] ReqDelWideDarkFrame binIndex
   */

  /**
   * Constructs a new ReqDelWideDarkFrame.
   * @exports ReqDelWideDarkFrame
   * @classdesc Represents a ReqDelWideDarkFrame.
   * @implements IReqDelWideDarkFrame
   * @constructor
   * @param {IReqDelWideDarkFrame=} [properties] Properties to set
   */
  function ReqDelWideDarkFrame(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDelWideDarkFrame expIndex.
   * @member {number} expIndex
   * @memberof ReqDelWideDarkFrame
   * @instance
   */
  ReqDelWideDarkFrame.prototype.expIndex = 0;

  /**
   * ReqDelWideDarkFrame gainIndex.
   * @member {number} gainIndex
   * @memberof ReqDelWideDarkFrame
   * @instance
   */
  ReqDelWideDarkFrame.prototype.gainIndex = 0;

  /**
   * ReqDelWideDarkFrame binIndex.
   * @member {number} binIndex
   * @memberof ReqDelWideDarkFrame
   * @instance
   */
  ReqDelWideDarkFrame.prototype.binIndex = 0;

  /**
   * Creates a new ReqDelWideDarkFrame instance using the specified properties.
   * @function create
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {IReqDelWideDarkFrame=} [properties] Properties to set
   * @returns {ReqDelWideDarkFrame} ReqDelWideDarkFrame instance
   */
  ReqDelWideDarkFrame.create = function create(properties) {
    return new ReqDelWideDarkFrame(properties);
  };

  /**
   * Encodes the specified ReqDelWideDarkFrame message. Does not implicitly {@link ReqDelWideDarkFrame.verify|verify} messages.
   * @function encode
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {IReqDelWideDarkFrame} message ReqDelWideDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDelWideDarkFrame.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.expIndex != null &&
      Object.hasOwnProperty.call(message, "expIndex")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.expIndex);
    if (
      message.gainIndex != null &&
      Object.hasOwnProperty.call(message, "gainIndex")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.gainIndex);
    if (
      message.binIndex != null &&
      Object.hasOwnProperty.call(message, "binIndex")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.binIndex);
    return writer;
  };

  /**
   * Encodes the specified ReqDelWideDarkFrame message, length delimited. Does not implicitly {@link ReqDelWideDarkFrame.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {IReqDelWideDarkFrame} message ReqDelWideDarkFrame message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDelWideDarkFrame.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDelWideDarkFrame message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDelWideDarkFrame} ReqDelWideDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDelWideDarkFrame.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDelWideDarkFrame();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.expIndex = reader.int32();
          break;
        }
        case 2: {
          message.gainIndex = reader.int32();
          break;
        }
        case 3: {
          message.binIndex = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDelWideDarkFrame message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDelWideDarkFrame} ReqDelWideDarkFrame
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDelWideDarkFrame.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDelWideDarkFrame message.
   * @function verify
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDelWideDarkFrame.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      if (!$util.isInteger(message.expIndex))
        return "expIndex: integer expected";
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      if (!$util.isInteger(message.gainIndex))
        return "gainIndex: integer expected";
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      if (!$util.isInteger(message.binIndex))
        return "binIndex: integer expected";
    return null;
  };

  /**
   * Creates a ReqDelWideDarkFrame message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDelWideDarkFrame} ReqDelWideDarkFrame
   */
  ReqDelWideDarkFrame.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDelWideDarkFrame) return object;
    var message = new $root.ReqDelWideDarkFrame();
    if (object.expIndex != null) message.expIndex = object.expIndex | 0;
    if (object.gainIndex != null) message.gainIndex = object.gainIndex | 0;
    if (object.binIndex != null) message.binIndex = object.binIndex | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqDelWideDarkFrame message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {ReqDelWideDarkFrame} message ReqDelWideDarkFrame
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDelWideDarkFrame.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.expIndex = 0;
      object.gainIndex = 0;
      object.binIndex = 0;
    }
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      object.expIndex = message.expIndex;
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      object.gainIndex = message.gainIndex;
    if (message.binIndex != null && message.hasOwnProperty("binIndex"))
      object.binIndex = message.binIndex;
    return object;
  };

  /**
   * Converts this ReqDelWideDarkFrame to JSON.
   * @function toJSON
   * @memberof ReqDelWideDarkFrame
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDelWideDarkFrame.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDelWideDarkFrame
   * @function getTypeUrl
   * @memberof ReqDelWideDarkFrame
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDelWideDarkFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDelWideDarkFrame";
  };

  return ReqDelWideDarkFrame;
})();

$root.ReqDelWideDarkFrameList = (function () {
  /**
   * Properties of a ReqDelWideDarkFrameList.
   * @exports IReqDelWideDarkFrameList
   * @interface IReqDelWideDarkFrameList
   * @property {Array.<IReqDelDarkFrame>|null} [darkList] ReqDelWideDarkFrameList darkList
   */

  /**
   * Constructs a new ReqDelWideDarkFrameList.
   * @exports ReqDelWideDarkFrameList
   * @classdesc Represents a ReqDelWideDarkFrameList.
   * @implements IReqDelWideDarkFrameList
   * @constructor
   * @param {IReqDelWideDarkFrameList=} [properties] Properties to set
   */
  function ReqDelWideDarkFrameList(properties) {
    this.darkList = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDelWideDarkFrameList darkList.
   * @member {Array.<IReqDelDarkFrame>} darkList
   * @memberof ReqDelWideDarkFrameList
   * @instance
   */
  ReqDelWideDarkFrameList.prototype.darkList = $util.emptyArray;

  /**
   * Creates a new ReqDelWideDarkFrameList instance using the specified properties.
   * @function create
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {IReqDelWideDarkFrameList=} [properties] Properties to set
   * @returns {ReqDelWideDarkFrameList} ReqDelWideDarkFrameList instance
   */
  ReqDelWideDarkFrameList.create = function create(properties) {
    return new ReqDelWideDarkFrameList(properties);
  };

  /**
   * Encodes the specified ReqDelWideDarkFrameList message. Does not implicitly {@link ReqDelWideDarkFrameList.verify|verify} messages.
   * @function encode
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {IReqDelWideDarkFrameList} message ReqDelWideDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDelWideDarkFrameList.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.darkList != null && message.darkList.length)
      for (var i = 0; i < message.darkList.length; ++i)
        $root.ReqDelDarkFrame.encode(
          message.darkList[i],
          writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
        ).ldelim();
    return writer;
  };

  /**
   * Encodes the specified ReqDelWideDarkFrameList message, length delimited. Does not implicitly {@link ReqDelWideDarkFrameList.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {IReqDelWideDarkFrameList} message ReqDelWideDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDelWideDarkFrameList.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDelWideDarkFrameList message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDelWideDarkFrameList} ReqDelWideDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDelWideDarkFrameList.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDelWideDarkFrameList();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          if (!(message.darkList && message.darkList.length))
            message.darkList = [];
          message.darkList.push(
            $root.ReqDelDarkFrame.decode(reader, reader.uint32())
          );
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDelWideDarkFrameList message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDelWideDarkFrameList} ReqDelWideDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDelWideDarkFrameList.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDelWideDarkFrameList message.
   * @function verify
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDelWideDarkFrameList.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.darkList != null && message.hasOwnProperty("darkList")) {
      if (!Array.isArray(message.darkList)) return "darkList: array expected";
      for (var i = 0; i < message.darkList.length; ++i) {
        var error = $root.ReqDelDarkFrame.verify(message.darkList[i]);
        if (error) return "darkList." + error;
      }
    }
    return null;
  };

  /**
   * Creates a ReqDelWideDarkFrameList message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDelWideDarkFrameList} ReqDelWideDarkFrameList
   */
  ReqDelWideDarkFrameList.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDelWideDarkFrameList) return object;
    var message = new $root.ReqDelWideDarkFrameList();
    if (object.darkList) {
      if (!Array.isArray(object.darkList))
        throw TypeError(".ReqDelWideDarkFrameList.darkList: array expected");
      message.darkList = [];
      for (var i = 0; i < object.darkList.length; ++i) {
        if (typeof object.darkList[i] !== "object")
          throw TypeError(".ReqDelWideDarkFrameList.darkList: object expected");
        message.darkList[i] = $root.ReqDelDarkFrame.fromObject(
          object.darkList[i]
        );
      }
    }
    return message;
  };

  /**
   * Creates a plain object from a ReqDelWideDarkFrameList message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {ReqDelWideDarkFrameList} message ReqDelWideDarkFrameList
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDelWideDarkFrameList.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.darkList = [];
    if (message.darkList && message.darkList.length) {
      object.darkList = [];
      for (var j = 0; j < message.darkList.length; ++j)
        object.darkList[j] = $root.ReqDelDarkFrame.toObject(
          message.darkList[j],
          options
        );
    }
    return object;
  };

  /**
   * Converts this ReqDelWideDarkFrameList to JSON.
   * @function toJSON
   * @memberof ReqDelWideDarkFrameList
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDelWideDarkFrameList.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDelWideDarkFrameList
   * @function getTypeUrl
   * @memberof ReqDelWideDarkFrameList
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDelWideDarkFrameList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDelWideDarkFrameList";
  };

  return ReqDelWideDarkFrameList;
})();

$root.ResDelWideDarkFrameList = (function () {
  /**
   * Properties of a ResDelWideDarkFrameList.
   * @exports IResDelWideDarkFrameList
   * @interface IResDelWideDarkFrameList
   * @property {number|null} [code] ResDelWideDarkFrameList code
   */

  /**
   * Constructs a new ResDelWideDarkFrameList.
   * @exports ResDelWideDarkFrameList
   * @classdesc Represents a ResDelWideDarkFrameList.
   * @implements IResDelWideDarkFrameList
   * @constructor
   * @param {IResDelWideDarkFrameList=} [properties] Properties to set
   */
  function ResDelWideDarkFrameList(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResDelWideDarkFrameList code.
   * @member {number} code
   * @memberof ResDelWideDarkFrameList
   * @instance
   */
  ResDelWideDarkFrameList.prototype.code = 0;

  /**
   * Creates a new ResDelWideDarkFrameList instance using the specified properties.
   * @function create
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {IResDelWideDarkFrameList=} [properties] Properties to set
   * @returns {ResDelWideDarkFrameList} ResDelWideDarkFrameList instance
   */
  ResDelWideDarkFrameList.create = function create(properties) {
    return new ResDelWideDarkFrameList(properties);
  };

  /**
   * Encodes the specified ResDelWideDarkFrameList message. Does not implicitly {@link ResDelWideDarkFrameList.verify|verify} messages.
   * @function encode
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {IResDelWideDarkFrameList} message ResDelWideDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDelWideDarkFrameList.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResDelWideDarkFrameList message, length delimited. Does not implicitly {@link ResDelWideDarkFrameList.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {IResDelWideDarkFrameList} message ResDelWideDarkFrameList message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDelWideDarkFrameList.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResDelWideDarkFrameList message from the specified reader or buffer.
   * @function decode
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResDelWideDarkFrameList} ResDelWideDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDelWideDarkFrameList.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResDelWideDarkFrameList();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResDelWideDarkFrameList message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResDelWideDarkFrameList} ResDelWideDarkFrameList
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDelWideDarkFrameList.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResDelWideDarkFrameList message.
   * @function verify
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResDelWideDarkFrameList.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResDelWideDarkFrameList message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResDelWideDarkFrameList} ResDelWideDarkFrameList
   */
  ResDelWideDarkFrameList.fromObject = function fromObject(object) {
    if (object instanceof $root.ResDelWideDarkFrameList) return object;
    var message = new $root.ResDelWideDarkFrameList();
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResDelWideDarkFrameList message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {ResDelWideDarkFrameList} message ResDelWideDarkFrameList
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResDelWideDarkFrameList.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.code = 0;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResDelWideDarkFrameList to JSON.
   * @function toJSON
   * @memberof ResDelWideDarkFrameList
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResDelWideDarkFrameList.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResDelWideDarkFrameList
   * @function getTypeUrl
   * @memberof ResDelWideDarkFrameList
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResDelWideDarkFrameList.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResDelWideDarkFrameList";
  };

  return ResDelWideDarkFrameList;
})();

/**
 * WsMajorVersion enum.
 * @exports WsMajorVersion
 * @enum {number}
 * @property {number} WS_MAJOR_VERSION_UNKNOWN=0 WS_MAJOR_VERSION_UNKNOWN value
 * @property {number} WS_MAJOR_VERSION_NUMBER=1 WS_MAJOR_VERSION_NUMBER value
 */
$root.WsMajorVersion = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "WS_MAJOR_VERSION_UNKNOWN")] = 0;
  values[(valuesById[1] = "WS_MAJOR_VERSION_NUMBER")] = 1;
  return values;
})();

/**
 * WsMinorVersion enum.
 * @exports WsMinorVersion
 * @enum {number}
 * @property {number} WS_MINOR_VERSION_UNKNOWN=0 WS_MINOR_VERSION_UNKNOWN value
 * @property {number} WS_MINOR_VERSION_NUMBER=9 WS_MINOR_VERSION_NUMBER value
 */
$root.WsMinorVersion = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "WS_MINOR_VERSION_UNKNOWN")] = 0;
  values[(valuesById[9] = "WS_MINOR_VERSION_NUMBER")] = 9;
  return values;
})();

$root.WsPacket = (function () {
  /**
   * Properties of a WsPacket.
   * @exports IWsPacket
   * @interface IWsPacket
   * @property {number|null} [majorVersion] WsPacket majorVersion
   * @property {number|null} [minorVersion] WsPacket minorVersion
   * @property {number|null} [deviceId] WsPacket deviceId
   * @property {number|null} [moduleId] WsPacket moduleId
   * @property {number|null} [cmd] WsPacket cmd
   * @property {number|null} [type] WsPacket type
   * @property {Uint8Array|null} [data] WsPacket data
   * @property {string|null} [clientId] WsPacket clientId
   */

  /**
   * Constructs a new WsPacket.
   * @exports WsPacket
   * @classdesc Represents a WsPacket.
   * @implements IWsPacket
   * @constructor
   * @param {IWsPacket=} [properties] Properties to set
   */
  function WsPacket(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * WsPacket majorVersion.
   * @member {number} majorVersion
   * @memberof WsPacket
   * @instance
   */
  WsPacket.prototype.majorVersion = 0;

  /**
   * WsPacket minorVersion.
   * @member {number} minorVersion
   * @memberof WsPacket
   * @instance
   */
  WsPacket.prototype.minorVersion = 0;

  /**
   * WsPacket deviceId.
   * @member {number} deviceId
   * @memberof WsPacket
   * @instance
   */
  WsPacket.prototype.deviceId = 0;

  /**
   * WsPacket moduleId.
   * @member {number} moduleId
   * @memberof WsPacket
   * @instance
   */
  WsPacket.prototype.moduleId = 0;

  /**
   * WsPacket cmd.
   * @member {number} cmd
   * @memberof WsPacket
   * @instance
   */
  WsPacket.prototype.cmd = 0;

  /**
   * WsPacket type.
   * @member {number} type
   * @memberof WsPacket
   * @instance
   */
  WsPacket.prototype.type = 0;

  /**
   * WsPacket data.
   * @member {Uint8Array} data
   * @memberof WsPacket
   * @instance
   */
  WsPacket.prototype.data = $util.newBuffer([]);

  /**
   * WsPacket clientId.
   * @member {string} clientId
   * @memberof WsPacket
   * @instance
   */
  WsPacket.prototype.clientId = "";

  /**
   * Creates a new WsPacket instance using the specified properties.
   * @function create
   * @memberof WsPacket
   * @static
   * @param {IWsPacket=} [properties] Properties to set
   * @returns {WsPacket} WsPacket instance
   */
  WsPacket.create = function create(properties) {
    return new WsPacket(properties);
  };

  /**
   * Encodes the specified WsPacket message. Does not implicitly {@link WsPacket.verify|verify} messages.
   * @function encode
   * @memberof WsPacket
   * @static
   * @param {IWsPacket} message WsPacket message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  WsPacket.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.majorVersion != null &&
      Object.hasOwnProperty.call(message, "majorVersion")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.majorVersion);
    if (
      message.minorVersion != null &&
      Object.hasOwnProperty.call(message, "minorVersion")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).uint32(message.minorVersion);
    if (
      message.deviceId != null &&
      Object.hasOwnProperty.call(message, "deviceId")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).uint32(message.deviceId);
    if (
      message.moduleId != null &&
      Object.hasOwnProperty.call(message, "moduleId")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).uint32(message.moduleId);
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 5, wireType 0 =*/ 40).uint32(message.cmd);
    if (message.type != null && Object.hasOwnProperty.call(message, "type"))
      writer.uint32(/* id 6, wireType 0 =*/ 48).uint32(message.type);
    if (message.data != null && Object.hasOwnProperty.call(message, "data"))
      writer.uint32(/* id 7, wireType 2 =*/ 58).bytes(message.data);
    if (
      message.clientId != null &&
      Object.hasOwnProperty.call(message, "clientId")
    )
      writer.uint32(/* id 8, wireType 2 =*/ 66).string(message.clientId);
    return writer;
  };

  /**
   * Encodes the specified WsPacket message, length delimited. Does not implicitly {@link WsPacket.verify|verify} messages.
   * @function encodeDelimited
   * @memberof WsPacket
   * @static
   * @param {IWsPacket} message WsPacket message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  WsPacket.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a WsPacket message from the specified reader or buffer.
   * @function decode
   * @memberof WsPacket
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {WsPacket} WsPacket
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  WsPacket.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.WsPacket();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.majorVersion = reader.uint32();
          break;
        }
        case 2: {
          message.minorVersion = reader.uint32();
          break;
        }
        case 3: {
          message.deviceId = reader.uint32();
          break;
        }
        case 4: {
          message.moduleId = reader.uint32();
          break;
        }
        case 5: {
          message.cmd = reader.uint32();
          break;
        }
        case 6: {
          message.type = reader.uint32();
          break;
        }
        case 7: {
          message.data = reader.bytes();
          break;
        }
        case 8: {
          message.clientId = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a WsPacket message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof WsPacket
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {WsPacket} WsPacket
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  WsPacket.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a WsPacket message.
   * @function verify
   * @memberof WsPacket
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  WsPacket.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.majorVersion != null && message.hasOwnProperty("majorVersion"))
      if (!$util.isInteger(message.majorVersion))
        return "majorVersion: integer expected";
    if (message.minorVersion != null && message.hasOwnProperty("minorVersion"))
      if (!$util.isInteger(message.minorVersion))
        return "minorVersion: integer expected";
    if (message.deviceId != null && message.hasOwnProperty("deviceId"))
      if (!$util.isInteger(message.deviceId))
        return "deviceId: integer expected";
    if (message.moduleId != null && message.hasOwnProperty("moduleId"))
      if (!$util.isInteger(message.moduleId))
        return "moduleId: integer expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.type != null && message.hasOwnProperty("type"))
      if (!$util.isInteger(message.type)) return "type: integer expected";
    if (message.data != null && message.hasOwnProperty("data"))
      if (
        !(
          (message.data && typeof message.data.length === "number") ||
          $util.isString(message.data)
        )
      )
        return "data: buffer expected";
    if (message.clientId != null && message.hasOwnProperty("clientId"))
      if (!$util.isString(message.clientId)) return "clientId: string expected";
    return null;
  };

  /**
   * Creates a WsPacket message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof WsPacket
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {WsPacket} WsPacket
   */
  WsPacket.fromObject = function fromObject(object) {
    if (object instanceof $root.WsPacket) return object;
    var message = new $root.WsPacket();
    if (object.majorVersion != null)
      message.majorVersion = object.majorVersion >>> 0;
    if (object.minorVersion != null)
      message.minorVersion = object.minorVersion >>> 0;
    if (object.deviceId != null) message.deviceId = object.deviceId >>> 0;
    if (object.moduleId != null) message.moduleId = object.moduleId >>> 0;
    if (object.cmd != null) message.cmd = object.cmd >>> 0;
    if (object.type != null) message.type = object.type >>> 0;
    if (object.data != null)
      if (typeof object.data === "string")
        $util.base64.decode(
          object.data,
          (message.data = $util.newBuffer($util.base64.length(object.data))),
          0
        );
      else if (object.data.length >= 0) message.data = object.data;
    if (object.clientId != null) message.clientId = String(object.clientId);
    return message;
  };

  /**
   * Creates a plain object from a WsPacket message. Also converts values to other types if specified.
   * @function toObject
   * @memberof WsPacket
   * @static
   * @param {WsPacket} message WsPacket
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  WsPacket.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.majorVersion = 0;
      object.minorVersion = 0;
      object.deviceId = 0;
      object.moduleId = 0;
      object.cmd = 0;
      object.type = 0;
      if (options.bytes === String) object.data = "";
      else {
        object.data = [];
        if (options.bytes !== Array) object.data = $util.newBuffer(object.data);
      }
      object.clientId = "";
    }
    if (message.majorVersion != null && message.hasOwnProperty("majorVersion"))
      object.majorVersion = message.majorVersion;
    if (message.minorVersion != null && message.hasOwnProperty("minorVersion"))
      object.minorVersion = message.minorVersion;
    if (message.deviceId != null && message.hasOwnProperty("deviceId"))
      object.deviceId = message.deviceId;
    if (message.moduleId != null && message.hasOwnProperty("moduleId"))
      object.moduleId = message.moduleId;
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.type != null && message.hasOwnProperty("type"))
      object.type = message.type;
    if (message.data != null && message.hasOwnProperty("data"))
      object.data =
        options.bytes === String
          ? $util.base64.encode(message.data, 0, message.data.length)
          : options.bytes === Array
          ? Array.prototype.slice.call(message.data)
          : message.data;
    if (message.clientId != null && message.hasOwnProperty("clientId"))
      object.clientId = message.clientId;
    return object;
  };

  /**
   * Converts this WsPacket to JSON.
   * @function toJSON
   * @memberof WsPacket
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  WsPacket.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for WsPacket
   * @function getTypeUrl
   * @memberof WsPacket
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  WsPacket.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/WsPacket";
  };

  return WsPacket;
})();

$root.ComResponse = (function () {
  /**
   * Properties of a ComResponse.
   * @exports IComResponse
   * @interface IComResponse
   * @property {number|null} [code] ComResponse code
   */

  /**
   * Constructs a new ComResponse.
   * @exports ComResponse
   * @classdesc Represents a ComResponse.
   * @implements IComResponse
   * @constructor
   * @param {IComResponse=} [properties] Properties to set
   */
  function ComResponse(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ComResponse code.
   * @member {number} code
   * @memberof ComResponse
   * @instance
   */
  ComResponse.prototype.code = 0;

  /**
   * Creates a new ComResponse instance using the specified properties.
   * @function create
   * @memberof ComResponse
   * @static
   * @param {IComResponse=} [properties] Properties to set
   * @returns {ComResponse} ComResponse instance
   */
  ComResponse.create = function create(properties) {
    return new ComResponse(properties);
  };

  /**
   * Encodes the specified ComResponse message. Does not implicitly {@link ComResponse.verify|verify} messages.
   * @function encode
   * @memberof ComResponse
   * @static
   * @param {IComResponse} message ComResponse message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ComResponse.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ComResponse message, length delimited. Does not implicitly {@link ComResponse.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ComResponse
   * @static
   * @param {IComResponse} message ComResponse message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ComResponse.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ComResponse message from the specified reader or buffer.
   * @function decode
   * @memberof ComResponse
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ComResponse} ComResponse
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ComResponse.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ComResponse();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ComResponse message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ComResponse
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ComResponse} ComResponse
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ComResponse.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ComResponse message.
   * @function verify
   * @memberof ComResponse
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ComResponse.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ComResponse message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ComResponse
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ComResponse} ComResponse
   */
  ComResponse.fromObject = function fromObject(object) {
    if (object instanceof $root.ComResponse) return object;
    var message = new $root.ComResponse();
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ComResponse message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ComResponse
   * @static
   * @param {ComResponse} message ComResponse
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ComResponse.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.code = 0;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ComResponse to JSON.
   * @function toJSON
   * @memberof ComResponse
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ComResponse.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ComResponse
   * @function getTypeUrl
   * @memberof ComResponse
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ComResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ComResponse";
  };

  return ComResponse;
})();

$root.ComResWithInt = (function () {
  /**
   * Properties of a ComResWithInt.
   * @exports IComResWithInt
   * @interface IComResWithInt
   * @property {number|null} [value] ComResWithInt value
   * @property {number|null} [code] ComResWithInt code
   */

  /**
   * Constructs a new ComResWithInt.
   * @exports ComResWithInt
   * @classdesc Represents a ComResWithInt.
   * @implements IComResWithInt
   * @constructor
   * @param {IComResWithInt=} [properties] Properties to set
   */
  function ComResWithInt(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ComResWithInt value.
   * @member {number} value
   * @memberof ComResWithInt
   * @instance
   */
  ComResWithInt.prototype.value = 0;

  /**
   * ComResWithInt code.
   * @member {number} code
   * @memberof ComResWithInt
   * @instance
   */
  ComResWithInt.prototype.code = 0;

  /**
   * Creates a new ComResWithInt instance using the specified properties.
   * @function create
   * @memberof ComResWithInt
   * @static
   * @param {IComResWithInt=} [properties] Properties to set
   * @returns {ComResWithInt} ComResWithInt instance
   */
  ComResWithInt.create = function create(properties) {
    return new ComResWithInt(properties);
  };

  /**
   * Encodes the specified ComResWithInt message. Does not implicitly {@link ComResWithInt.verify|verify} messages.
   * @function encode
   * @memberof ComResWithInt
   * @static
   * @param {IComResWithInt} message ComResWithInt message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ComResWithInt.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.value);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ComResWithInt message, length delimited. Does not implicitly {@link ComResWithInt.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ComResWithInt
   * @static
   * @param {IComResWithInt} message ComResWithInt message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ComResWithInt.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ComResWithInt message from the specified reader or buffer.
   * @function decode
   * @memberof ComResWithInt
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ComResWithInt} ComResWithInt
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ComResWithInt.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ComResWithInt();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ComResWithInt message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ComResWithInt
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ComResWithInt} ComResWithInt
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ComResWithInt.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ComResWithInt message.
   * @function verify
   * @memberof ComResWithInt
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ComResWithInt.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isInteger(message.value)) return "value: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ComResWithInt message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ComResWithInt
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ComResWithInt} ComResWithInt
   */
  ComResWithInt.fromObject = function fromObject(object) {
    if (object instanceof $root.ComResWithInt) return object;
    var message = new $root.ComResWithInt();
    if (object.value != null) message.value = object.value | 0;
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ComResWithInt message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ComResWithInt
   * @static
   * @param {ComResWithInt} message ComResWithInt
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ComResWithInt.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.value = 0;
      object.code = 0;
    }
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ComResWithInt to JSON.
   * @function toJSON
   * @memberof ComResWithInt
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ComResWithInt.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ComResWithInt
   * @function getTypeUrl
   * @memberof ComResWithInt
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ComResWithInt.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ComResWithInt";
  };

  return ComResWithInt;
})();

$root.ComResWithDouble = (function () {
  /**
   * Properties of a ComResWithDouble.
   * @exports IComResWithDouble
   * @interface IComResWithDouble
   * @property {number|null} [value] ComResWithDouble value
   * @property {number|null} [code] ComResWithDouble code
   */

  /**
   * Constructs a new ComResWithDouble.
   * @exports ComResWithDouble
   * @classdesc Represents a ComResWithDouble.
   * @implements IComResWithDouble
   * @constructor
   * @param {IComResWithDouble=} [properties] Properties to set
   */
  function ComResWithDouble(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ComResWithDouble value.
   * @member {number} value
   * @memberof ComResWithDouble
   * @instance
   */
  ComResWithDouble.prototype.value = 0;

  /**
   * ComResWithDouble code.
   * @member {number} code
   * @memberof ComResWithDouble
   * @instance
   */
  ComResWithDouble.prototype.code = 0;

  /**
   * Creates a new ComResWithDouble instance using the specified properties.
   * @function create
   * @memberof ComResWithDouble
   * @static
   * @param {IComResWithDouble=} [properties] Properties to set
   * @returns {ComResWithDouble} ComResWithDouble instance
   */
  ComResWithDouble.create = function create(properties) {
    return new ComResWithDouble(properties);
  };

  /**
   * Encodes the specified ComResWithDouble message. Does not implicitly {@link ComResWithDouble.verify|verify} messages.
   * @function encode
   * @memberof ComResWithDouble
   * @static
   * @param {IComResWithDouble} message ComResWithDouble message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ComResWithDouble.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.value);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ComResWithDouble message, length delimited. Does not implicitly {@link ComResWithDouble.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ComResWithDouble
   * @static
   * @param {IComResWithDouble} message ComResWithDouble message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ComResWithDouble.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ComResWithDouble message from the specified reader or buffer.
   * @function decode
   * @memberof ComResWithDouble
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ComResWithDouble} ComResWithDouble
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ComResWithDouble.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ComResWithDouble();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.double();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ComResWithDouble message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ComResWithDouble
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ComResWithDouble} ComResWithDouble
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ComResWithDouble.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ComResWithDouble message.
   * @function verify
   * @memberof ComResWithDouble
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ComResWithDouble.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (typeof message.value !== "number") return "value: number expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ComResWithDouble message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ComResWithDouble
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ComResWithDouble} ComResWithDouble
   */
  ComResWithDouble.fromObject = function fromObject(object) {
    if (object instanceof $root.ComResWithDouble) return object;
    var message = new $root.ComResWithDouble();
    if (object.value != null) message.value = Number(object.value);
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ComResWithDouble message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ComResWithDouble
   * @static
   * @param {ComResWithDouble} message ComResWithDouble
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ComResWithDouble.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.value = 0;
      object.code = 0;
    }
    if (message.value != null && message.hasOwnProperty("value"))
      object.value =
        options.json && !isFinite(message.value)
          ? String(message.value)
          : message.value;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ComResWithDouble to JSON.
   * @function toJSON
   * @memberof ComResWithDouble
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ComResWithDouble.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ComResWithDouble
   * @function getTypeUrl
   * @memberof ComResWithDouble
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ComResWithDouble.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ComResWithDouble";
  };

  return ComResWithDouble;
})();

$root.ComResWithString = (function () {
  /**
   * Properties of a ComResWithString.
   * @exports IComResWithString
   * @interface IComResWithString
   * @property {string|null} [str] ComResWithString str
   * @property {number|null} [code] ComResWithString code
   */

  /**
   * Constructs a new ComResWithString.
   * @exports ComResWithString
   * @classdesc Represents a ComResWithString.
   * @implements IComResWithString
   * @constructor
   * @param {IComResWithString=} [properties] Properties to set
   */
  function ComResWithString(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ComResWithString str.
   * @member {string} str
   * @memberof ComResWithString
   * @instance
   */
  ComResWithString.prototype.str = "";

  /**
   * ComResWithString code.
   * @member {number} code
   * @memberof ComResWithString
   * @instance
   */
  ComResWithString.prototype.code = 0;

  /**
   * Creates a new ComResWithString instance using the specified properties.
   * @function create
   * @memberof ComResWithString
   * @static
   * @param {IComResWithString=} [properties] Properties to set
   * @returns {ComResWithString} ComResWithString instance
   */
  ComResWithString.create = function create(properties) {
    return new ComResWithString(properties);
  };

  /**
   * Encodes the specified ComResWithString message. Does not implicitly {@link ComResWithString.verify|verify} messages.
   * @function encode
   * @memberof ComResWithString
   * @static
   * @param {IComResWithString} message ComResWithString message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ComResWithString.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.str != null && Object.hasOwnProperty.call(message, "str"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.str);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ComResWithString message, length delimited. Does not implicitly {@link ComResWithString.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ComResWithString
   * @static
   * @param {IComResWithString} message ComResWithString message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ComResWithString.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ComResWithString message from the specified reader or buffer.
   * @function decode
   * @memberof ComResWithString
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ComResWithString} ComResWithString
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ComResWithString.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ComResWithString();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.str = reader.string();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ComResWithString message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ComResWithString
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ComResWithString} ComResWithString
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ComResWithString.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ComResWithString message.
   * @function verify
   * @memberof ComResWithString
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ComResWithString.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.str != null && message.hasOwnProperty("str"))
      if (!$util.isString(message.str)) return "str: string expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ComResWithString message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ComResWithString
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ComResWithString} ComResWithString
   */
  ComResWithString.fromObject = function fromObject(object) {
    if (object instanceof $root.ComResWithString) return object;
    var message = new $root.ComResWithString();
    if (object.str != null) message.str = String(object.str);
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ComResWithString message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ComResWithString
   * @static
   * @param {ComResWithString} message ComResWithString
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ComResWithString.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.str = "";
      object.code = 0;
    }
    if (message.str != null && message.hasOwnProperty("str"))
      object.str = message.str;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ComResWithString to JSON.
   * @function toJSON
   * @memberof ComResWithString
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ComResWithString.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ComResWithString
   * @function getTypeUrl
   * @memberof ComResWithString
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ComResWithString.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ComResWithString";
  };

  return ComResWithString;
})();

$root.CommonParam = (function () {
  /**
   * Properties of a CommonParam.
   * @exports ICommonParam
   * @interface ICommonParam
   * @property {boolean|null} [hasAuto] CommonParam hasAuto
   * @property {number|null} [autoMode] CommonParam autoMode
   * @property {number|null} [id] CommonParam id
   * @property {number|null} [modeIndex] CommonParam modeIndex
   * @property {number|null} [index] CommonParam index
   * @property {number|null} [continueValue] CommonParam continueValue
   */

  /**
   * Constructs a new CommonParam.
   * @exports CommonParam
   * @classdesc Represents a CommonParam.
   * @implements ICommonParam
   * @constructor
   * @param {ICommonParam=} [properties] Properties to set
   */
  function CommonParam(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * CommonParam hasAuto.
   * @member {boolean} hasAuto
   * @memberof CommonParam
   * @instance
   */
  CommonParam.prototype.hasAuto = false;

  /**
   * CommonParam autoMode.
   * @member {number} autoMode
   * @memberof CommonParam
   * @instance
   */
  CommonParam.prototype.autoMode = 0;

  /**
   * CommonParam id.
   * @member {number} id
   * @memberof CommonParam
   * @instance
   */
  CommonParam.prototype.id = 0;

  /**
   * CommonParam modeIndex.
   * @member {number} modeIndex
   * @memberof CommonParam
   * @instance
   */
  CommonParam.prototype.modeIndex = 0;

  /**
   * CommonParam index.
   * @member {number} index
   * @memberof CommonParam
   * @instance
   */
  CommonParam.prototype.index = 0;

  /**
   * CommonParam continueValue.
   * @member {number} continueValue
   * @memberof CommonParam
   * @instance
   */
  CommonParam.prototype.continueValue = 0;

  /**
   * Creates a new CommonParam instance using the specified properties.
   * @function create
   * @memberof CommonParam
   * @static
   * @param {ICommonParam=} [properties] Properties to set
   * @returns {CommonParam} CommonParam instance
   */
  CommonParam.create = function create(properties) {
    return new CommonParam(properties);
  };

  /**
   * Encodes the specified CommonParam message. Does not implicitly {@link CommonParam.verify|verify} messages.
   * @function encode
   * @memberof CommonParam
   * @static
   * @param {ICommonParam} message CommonParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  CommonParam.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.hasAuto != null &&
      Object.hasOwnProperty.call(message, "hasAuto")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).bool(message.hasAuto);
    if (
      message.autoMode != null &&
      Object.hasOwnProperty.call(message, "autoMode")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.autoMode);
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.id);
    if (
      message.modeIndex != null &&
      Object.hasOwnProperty.call(message, "modeIndex")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.modeIndex);
    if (message.index != null && Object.hasOwnProperty.call(message, "index"))
      writer.uint32(/* id 5, wireType 0 =*/ 40).int32(message.index);
    if (
      message.continueValue != null &&
      Object.hasOwnProperty.call(message, "continueValue")
    )
      writer.uint32(/* id 6, wireType 1 =*/ 49).double(message.continueValue);
    return writer;
  };

  /**
   * Encodes the specified CommonParam message, length delimited. Does not implicitly {@link CommonParam.verify|verify} messages.
   * @function encodeDelimited
   * @memberof CommonParam
   * @static
   * @param {ICommonParam} message CommonParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  CommonParam.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a CommonParam message from the specified reader or buffer.
   * @function decode
   * @memberof CommonParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {CommonParam} CommonParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  CommonParam.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.CommonParam();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.hasAuto = reader.bool();
          break;
        }
        case 2: {
          message.autoMode = reader.int32();
          break;
        }
        case 3: {
          message.id = reader.int32();
          break;
        }
        case 4: {
          message.modeIndex = reader.int32();
          break;
        }
        case 5: {
          message.index = reader.int32();
          break;
        }
        case 6: {
          message.continueValue = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a CommonParam message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof CommonParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {CommonParam} CommonParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  CommonParam.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a CommonParam message.
   * @function verify
   * @memberof CommonParam
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  CommonParam.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.hasAuto != null && message.hasOwnProperty("hasAuto"))
      if (typeof message.hasAuto !== "boolean")
        return "hasAuto: boolean expected";
    if (message.autoMode != null && message.hasOwnProperty("autoMode"))
      if (!$util.isInteger(message.autoMode))
        return "autoMode: integer expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.modeIndex != null && message.hasOwnProperty("modeIndex"))
      if (!$util.isInteger(message.modeIndex))
        return "modeIndex: integer expected";
    if (message.index != null && message.hasOwnProperty("index"))
      if (!$util.isInteger(message.index)) return "index: integer expected";
    if (
      message.continueValue != null &&
      message.hasOwnProperty("continueValue")
    )
      if (typeof message.continueValue !== "number")
        return "continueValue: number expected";
    return null;
  };

  /**
   * Creates a CommonParam message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof CommonParam
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {CommonParam} CommonParam
   */
  CommonParam.fromObject = function fromObject(object) {
    if (object instanceof $root.CommonParam) return object;
    var message = new $root.CommonParam();
    if (object.hasAuto != null) message.hasAuto = Boolean(object.hasAuto);
    if (object.autoMode != null) message.autoMode = object.autoMode | 0;
    if (object.id != null) message.id = object.id | 0;
    if (object.modeIndex != null) message.modeIndex = object.modeIndex | 0;
    if (object.index != null) message.index = object.index | 0;
    if (object.continueValue != null)
      message.continueValue = Number(object.continueValue);
    return message;
  };

  /**
   * Creates a plain object from a CommonParam message. Also converts values to other types if specified.
   * @function toObject
   * @memberof CommonParam
   * @static
   * @param {CommonParam} message CommonParam
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  CommonParam.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.hasAuto = false;
      object.autoMode = 0;
      object.id = 0;
      object.modeIndex = 0;
      object.index = 0;
      object.continueValue = 0;
    }
    if (message.hasAuto != null && message.hasOwnProperty("hasAuto"))
      object.hasAuto = message.hasAuto;
    if (message.autoMode != null && message.hasOwnProperty("autoMode"))
      object.autoMode = message.autoMode;
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.modeIndex != null && message.hasOwnProperty("modeIndex"))
      object.modeIndex = message.modeIndex;
    if (message.index != null && message.hasOwnProperty("index"))
      object.index = message.index;
    if (
      message.continueValue != null &&
      message.hasOwnProperty("continueValue")
    )
      object.continueValue =
        options.json && !isFinite(message.continueValue)
          ? String(message.continueValue)
          : message.continueValue;
    return object;
  };

  /**
   * Converts this CommonParam to JSON.
   * @function toJSON
   * @memberof CommonParam
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  CommonParam.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for CommonParam
   * @function getTypeUrl
   * @memberof CommonParam
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  CommonParam.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/CommonParam";
  };

  return CommonParam;
})();

/**
 * DwarfBleErrorCode enum.
 * @exports DwarfBleErrorCode
 * @enum {number}
 * @property {number} BLE_OK=0 BLE_OK value
 * @property {number} BLE_PASSWORD_ERROR=-1 BLE_PASSWORD_ERROR value
 * @property {number} BLE_MESSAGE_MALLOC_ERROR=-2 BLE_MESSAGE_MALLOC_ERROR value
 * @property {number} BLE_MESSAGE_PARSE_ERROR=-3 BLE_MESSAGE_PARSE_ERROR value
 * @property {number} BLE_MESSAGE_CRC_ERROR=-4 BLE_MESSAGE_CRC_ERROR value
 * @property {number} BLE_WIFI_CONFIGING=-5 BLE_WIFI_CONFIGING value
 * @property {number} BLE_WIFI_CONFIGED=-6 BLE_WIFI_CONFIGED value
 * @property {number} BLE_GET_WIFI_LIST_ERROR=-7 BLE_GET_WIFI_LIST_ERROR value
 * @property {number} BLE_WIFI_STA_PASSWORD_EMPTY=-8 BLE_WIFI_STA_PASSWORD_EMPTY value
 * @property {number} BLE_WIFI_STA_PASSWORD_ERROR=-9 BLE_WIFI_STA_PASSWORD_ERROR value
 * @property {number} BLE_WIFI_SET_SSID_PSD_ERROR=-10 BLE_WIFI_SET_SSID_PSD_ERROR value
 * @property {number} BLE_WIFI_RESET_WAITING=-11 BLE_WIFI_RESET_WAITING value
 * @property {number} BLE_WIFI_RESETED=-12 BLE_WIFI_RESETED value
 * @property {number} BLE_GET_SYSTEM_INFO_ERROR=-13 BLE_GET_SYSTEM_INFO_ERROR value
 * @property {number} BLE_RECEIVE_FRAME_HEAD_ERROR=-14 BLE_RECEIVE_FRAME_HEAD_ERROR value
 * @property {number} BLE_RECEIVE_FRAME_TAIL_ERROR=-15 BLE_RECEIVE_FRAME_TAIL_ERROR value
 * @property {number} BLE_CHECK_FILE_NOT_EXIST=-16 BLE_CHECK_FILE_NOT_EXIST value
 * @property {number} BLE_CHECK_FILE_MD5_ERROR=-17 BLE_CHECK_FILE_MD5_ERROR value
 * @property {number} BLE_WIFI_RESET_FAILED=-18 BLE_WIFI_RESET_FAILED value
 */
$root.DwarfBleErrorCode = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "BLE_OK")] = 0;
  values[(valuesById[-1] = "BLE_PASSWORD_ERROR")] = -1;
  values[(valuesById[-2] = "BLE_MESSAGE_MALLOC_ERROR")] = -2;
  values[(valuesById[-3] = "BLE_MESSAGE_PARSE_ERROR")] = -3;
  values[(valuesById[-4] = "BLE_MESSAGE_CRC_ERROR")] = -4;
  values[(valuesById[-5] = "BLE_WIFI_CONFIGING")] = -5;
  values[(valuesById[-6] = "BLE_WIFI_CONFIGED")] = -6;
  values[(valuesById[-7] = "BLE_GET_WIFI_LIST_ERROR")] = -7;
  values[(valuesById[-8] = "BLE_WIFI_STA_PASSWORD_EMPTY")] = -8;
  values[(valuesById[-9] = "BLE_WIFI_STA_PASSWORD_ERROR")] = -9;
  values[(valuesById[-10] = "BLE_WIFI_SET_SSID_PSD_ERROR")] = -10;
  values[(valuesById[-11] = "BLE_WIFI_RESET_WAITING")] = -11;
  values[(valuesById[-12] = "BLE_WIFI_RESETED")] = -12;
  values[(valuesById[-13] = "BLE_GET_SYSTEM_INFO_ERROR")] = -13;
  values[(valuesById[-14] = "BLE_RECEIVE_FRAME_HEAD_ERROR")] = -14;
  values[(valuesById[-15] = "BLE_RECEIVE_FRAME_TAIL_ERROR")] = -15;
  values[(valuesById[-16] = "BLE_CHECK_FILE_NOT_EXIST")] = -16;
  values[(valuesById[-17] = "BLE_CHECK_FILE_MD5_ERROR")] = -17;
  values[(valuesById[-18] = "BLE_WIFI_RESET_FAILED")] = -18;
  return values;
})();

$root.ReqGetconfig = (function () {
  /**
   * Properties of a ReqGetconfig.
   * @exports IReqGetconfig
   * @interface IReqGetconfig
   * @property {number|null} [cmd] ReqGetconfig cmd
   * @property {string|null} [blePsd] ReqGetconfig blePsd
   */

  /**
   * Constructs a new ReqGetconfig.
   * @exports ReqGetconfig
   * @classdesc Represents a ReqGetconfig.
   * @implements IReqGetconfig
   * @constructor
   * @param {IReqGetconfig=} [properties] Properties to set
   */
  function ReqGetconfig(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqGetconfig cmd.
   * @member {number} cmd
   * @memberof ReqGetconfig
   * @instance
   */
  ReqGetconfig.prototype.cmd = 0;

  /**
   * ReqGetconfig blePsd.
   * @member {string} blePsd
   * @memberof ReqGetconfig
   * @instance
   */
  ReqGetconfig.prototype.blePsd = "";

  /**
   * Creates a new ReqGetconfig instance using the specified properties.
   * @function create
   * @memberof ReqGetconfig
   * @static
   * @param {IReqGetconfig=} [properties] Properties to set
   * @returns {ReqGetconfig} ReqGetconfig instance
   */
  ReqGetconfig.create = function create(properties) {
    return new ReqGetconfig(properties);
  };

  /**
   * Encodes the specified ReqGetconfig message. Does not implicitly {@link ReqGetconfig.verify|verify} messages.
   * @function encode
   * @memberof ReqGetconfig
   * @static
   * @param {IReqGetconfig} message ReqGetconfig message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetconfig.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.blePsd != null && Object.hasOwnProperty.call(message, "blePsd"))
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.blePsd);
    return writer;
  };

  /**
   * Encodes the specified ReqGetconfig message, length delimited. Does not implicitly {@link ReqGetconfig.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetconfig
   * @static
   * @param {IReqGetconfig} message ReqGetconfig message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetconfig.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetconfig message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetconfig
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetconfig} ReqGetconfig
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetconfig.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetconfig();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.blePsd = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetconfig message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetconfig
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetconfig} ReqGetconfig
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetconfig.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetconfig message.
   * @function verify
   * @memberof ReqGetconfig
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetconfig.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.blePsd != null && message.hasOwnProperty("blePsd"))
      if (!$util.isString(message.blePsd)) return "blePsd: string expected";
    return null;
  };

  /**
   * Creates a ReqGetconfig message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetconfig
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetconfig} ReqGetconfig
   */
  ReqGetconfig.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetconfig) return object;
    var message = new $root.ReqGetconfig();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.blePsd != null) message.blePsd = String(object.blePsd);
    return message;
  };

  /**
   * Creates a plain object from a ReqGetconfig message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetconfig
   * @static
   * @param {ReqGetconfig} message ReqGetconfig
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetconfig.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.blePsd = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.blePsd != null && message.hasOwnProperty("blePsd"))
      object.blePsd = message.blePsd;
    return object;
  };

  /**
   * Converts this ReqGetconfig to JSON.
   * @function toJSON
   * @memberof ReqGetconfig
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetconfig.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetconfig
   * @function getTypeUrl
   * @memberof ReqGetconfig
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetconfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetconfig";
  };

  return ReqGetconfig;
})();

$root.ReqAp = (function () {
  /**
   * Properties of a ReqAp.
   * @exports IReqAp
   * @interface IReqAp
   * @property {number|null} [cmd] ReqAp cmd
   * @property {number|null} [wifiType] ReqAp wifiType
   * @property {number|null} [autoStart] ReqAp autoStart
   * @property {number|null} [countryList] ReqAp countryList
   * @property {string|null} [country] ReqAp country
   * @property {string|null} [blePsd] ReqAp blePsd
   */

  /**
   * Constructs a new ReqAp.
   * @exports ReqAp
   * @classdesc Represents a ReqAp.
   * @implements IReqAp
   * @constructor
   * @param {IReqAp=} [properties] Properties to set
   */
  function ReqAp(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqAp cmd.
   * @member {number} cmd
   * @memberof ReqAp
   * @instance
   */
  ReqAp.prototype.cmd = 0;

  /**
   * ReqAp wifiType.
   * @member {number} wifiType
   * @memberof ReqAp
   * @instance
   */
  ReqAp.prototype.wifiType = 0;

  /**
   * ReqAp autoStart.
   * @member {number} autoStart
   * @memberof ReqAp
   * @instance
   */
  ReqAp.prototype.autoStart = 0;

  /**
   * ReqAp countryList.
   * @member {number} countryList
   * @memberof ReqAp
   * @instance
   */
  ReqAp.prototype.countryList = 0;

  /**
   * ReqAp country.
   * @member {string} country
   * @memberof ReqAp
   * @instance
   */
  ReqAp.prototype.country = "";

  /**
   * ReqAp blePsd.
   * @member {string} blePsd
   * @memberof ReqAp
   * @instance
   */
  ReqAp.prototype.blePsd = "";

  /**
   * Creates a new ReqAp instance using the specified properties.
   * @function create
   * @memberof ReqAp
   * @static
   * @param {IReqAp=} [properties] Properties to set
   * @returns {ReqAp} ReqAp instance
   */
  ReqAp.create = function create(properties) {
    return new ReqAp(properties);
  };

  /**
   * Encodes the specified ReqAp message. Does not implicitly {@link ReqAp.verify|verify} messages.
   * @function encode
   * @memberof ReqAp
   * @static
   * @param {IReqAp} message ReqAp message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqAp.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (
      message.wifiType != null &&
      Object.hasOwnProperty.call(message, "wifiType")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.wifiType);
    if (
      message.autoStart != null &&
      Object.hasOwnProperty.call(message, "autoStart")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.autoStart);
    if (
      message.countryList != null &&
      Object.hasOwnProperty.call(message, "countryList")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.countryList);
    if (
      message.country != null &&
      Object.hasOwnProperty.call(message, "country")
    )
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.country);
    if (message.blePsd != null && Object.hasOwnProperty.call(message, "blePsd"))
      writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.blePsd);
    return writer;
  };

  /**
   * Encodes the specified ReqAp message, length delimited. Does not implicitly {@link ReqAp.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqAp
   * @static
   * @param {IReqAp} message ReqAp message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqAp.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqAp message from the specified reader or buffer.
   * @function decode
   * @memberof ReqAp
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqAp} ReqAp
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqAp.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqAp();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.wifiType = reader.int32();
          break;
        }
        case 3: {
          message.autoStart = reader.int32();
          break;
        }
        case 4: {
          message.countryList = reader.int32();
          break;
        }
        case 5: {
          message.country = reader.string();
          break;
        }
        case 6: {
          message.blePsd = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqAp message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqAp
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqAp} ReqAp
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqAp.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqAp message.
   * @function verify
   * @memberof ReqAp
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqAp.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.wifiType != null && message.hasOwnProperty("wifiType"))
      if (!$util.isInteger(message.wifiType))
        return "wifiType: integer expected";
    if (message.autoStart != null && message.hasOwnProperty("autoStart"))
      if (!$util.isInteger(message.autoStart))
        return "autoStart: integer expected";
    if (message.countryList != null && message.hasOwnProperty("countryList"))
      if (!$util.isInteger(message.countryList))
        return "countryList: integer expected";
    if (message.country != null && message.hasOwnProperty("country"))
      if (!$util.isString(message.country)) return "country: string expected";
    if (message.blePsd != null && message.hasOwnProperty("blePsd"))
      if (!$util.isString(message.blePsd)) return "blePsd: string expected";
    return null;
  };

  /**
   * Creates a ReqAp message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqAp
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqAp} ReqAp
   */
  ReqAp.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqAp) return object;
    var message = new $root.ReqAp();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.wifiType != null) message.wifiType = object.wifiType | 0;
    if (object.autoStart != null) message.autoStart = object.autoStart | 0;
    if (object.countryList != null)
      message.countryList = object.countryList | 0;
    if (object.country != null) message.country = String(object.country);
    if (object.blePsd != null) message.blePsd = String(object.blePsd);
    return message;
  };

  /**
   * Creates a plain object from a ReqAp message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqAp
   * @static
   * @param {ReqAp} message ReqAp
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqAp.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.wifiType = 0;
      object.autoStart = 0;
      object.countryList = 0;
      object.country = "";
      object.blePsd = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.wifiType != null && message.hasOwnProperty("wifiType"))
      object.wifiType = message.wifiType;
    if (message.autoStart != null && message.hasOwnProperty("autoStart"))
      object.autoStart = message.autoStart;
    if (message.countryList != null && message.hasOwnProperty("countryList"))
      object.countryList = message.countryList;
    if (message.country != null && message.hasOwnProperty("country"))
      object.country = message.country;
    if (message.blePsd != null && message.hasOwnProperty("blePsd"))
      object.blePsd = message.blePsd;
    return object;
  };

  /**
   * Converts this ReqAp to JSON.
   * @function toJSON
   * @memberof ReqAp
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqAp.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqAp
   * @function getTypeUrl
   * @memberof ReqAp
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqAp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqAp";
  };

  return ReqAp;
})();

$root.ReqSta = (function () {
  /**
   * Properties of a ReqSta.
   * @exports IReqSta
   * @interface IReqSta
   * @property {number|null} [cmd] ReqSta cmd
   * @property {number|null} [autoStart] ReqSta autoStart
   * @property {string|null} [blePsd] ReqSta blePsd
   * @property {string|null} [ssid] ReqSta ssid
   * @property {string|null} [psd] ReqSta psd
   */

  /**
   * Constructs a new ReqSta.
   * @exports ReqSta
   * @classdesc Represents a ReqSta.
   * @implements IReqSta
   * @constructor
   * @param {IReqSta=} [properties] Properties to set
   */
  function ReqSta(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSta cmd.
   * @member {number} cmd
   * @memberof ReqSta
   * @instance
   */
  ReqSta.prototype.cmd = 0;

  /**
   * ReqSta autoStart.
   * @member {number} autoStart
   * @memberof ReqSta
   * @instance
   */
  ReqSta.prototype.autoStart = 0;

  /**
   * ReqSta blePsd.
   * @member {string} blePsd
   * @memberof ReqSta
   * @instance
   */
  ReqSta.prototype.blePsd = "";

  /**
   * ReqSta ssid.
   * @member {string} ssid
   * @memberof ReqSta
   * @instance
   */
  ReqSta.prototype.ssid = "";

  /**
   * ReqSta psd.
   * @member {string} psd
   * @memberof ReqSta
   * @instance
   */
  ReqSta.prototype.psd = "";

  /**
   * Creates a new ReqSta instance using the specified properties.
   * @function create
   * @memberof ReqSta
   * @static
   * @param {IReqSta=} [properties] Properties to set
   * @returns {ReqSta} ReqSta instance
   */
  ReqSta.create = function create(properties) {
    return new ReqSta(properties);
  };

  /**
   * Encodes the specified ReqSta message. Does not implicitly {@link ReqSta.verify|verify} messages.
   * @function encode
   * @memberof ReqSta
   * @static
   * @param {IReqSta} message ReqSta message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSta.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (
      message.autoStart != null &&
      Object.hasOwnProperty.call(message, "autoStart")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.autoStart);
    if (message.blePsd != null && Object.hasOwnProperty.call(message, "blePsd"))
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.blePsd);
    if (message.ssid != null && Object.hasOwnProperty.call(message, "ssid"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.ssid);
    if (message.psd != null && Object.hasOwnProperty.call(message, "psd"))
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.psd);
    return writer;
  };

  /**
   * Encodes the specified ReqSta message, length delimited. Does not implicitly {@link ReqSta.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSta
   * @static
   * @param {IReqSta} message ReqSta message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSta.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSta message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSta
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSta} ReqSta
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSta.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSta();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.autoStart = reader.int32();
          break;
        }
        case 3: {
          message.blePsd = reader.string();
          break;
        }
        case 4: {
          message.ssid = reader.string();
          break;
        }
        case 5: {
          message.psd = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSta message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSta
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSta} ReqSta
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSta.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSta message.
   * @function verify
   * @memberof ReqSta
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSta.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.autoStart != null && message.hasOwnProperty("autoStart"))
      if (!$util.isInteger(message.autoStart))
        return "autoStart: integer expected";
    if (message.blePsd != null && message.hasOwnProperty("blePsd"))
      if (!$util.isString(message.blePsd)) return "blePsd: string expected";
    if (message.ssid != null && message.hasOwnProperty("ssid"))
      if (!$util.isString(message.ssid)) return "ssid: string expected";
    if (message.psd != null && message.hasOwnProperty("psd"))
      if (!$util.isString(message.psd)) return "psd: string expected";
    return null;
  };

  /**
   * Creates a ReqSta message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSta
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSta} ReqSta
   */
  ReqSta.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSta) return object;
    var message = new $root.ReqSta();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.autoStart != null) message.autoStart = object.autoStart | 0;
    if (object.blePsd != null) message.blePsd = String(object.blePsd);
    if (object.ssid != null) message.ssid = String(object.ssid);
    if (object.psd != null) message.psd = String(object.psd);
    return message;
  };

  /**
   * Creates a plain object from a ReqSta message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSta
   * @static
   * @param {ReqSta} message ReqSta
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSta.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.autoStart = 0;
      object.blePsd = "";
      object.ssid = "";
      object.psd = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.autoStart != null && message.hasOwnProperty("autoStart"))
      object.autoStart = message.autoStart;
    if (message.blePsd != null && message.hasOwnProperty("blePsd"))
      object.blePsd = message.blePsd;
    if (message.ssid != null && message.hasOwnProperty("ssid"))
      object.ssid = message.ssid;
    if (message.psd != null && message.hasOwnProperty("psd"))
      object.psd = message.psd;
    return object;
  };

  /**
   * Converts this ReqSta to JSON.
   * @function toJSON
   * @memberof ReqSta
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSta.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSta
   * @function getTypeUrl
   * @memberof ReqSta
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSta.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSta";
  };

  return ReqSta;
})();

$root.ReqSetblewifi = (function () {
  /**
   * Properties of a ReqSetblewifi.
   * @exports IReqSetblewifi
   * @interface IReqSetblewifi
   * @property {number|null} [cmd] ReqSetblewifi cmd
   * @property {number|null} [mode] ReqSetblewifi mode
   * @property {string|null} [blePsd] ReqSetblewifi blePsd
   * @property {string|null} [value] ReqSetblewifi value
   */

  /**
   * Constructs a new ReqSetblewifi.
   * @exports ReqSetblewifi
   * @classdesc Represents a ReqSetblewifi.
   * @implements IReqSetblewifi
   * @constructor
   * @param {IReqSetblewifi=} [properties] Properties to set
   */
  function ReqSetblewifi(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetblewifi cmd.
   * @member {number} cmd
   * @memberof ReqSetblewifi
   * @instance
   */
  ReqSetblewifi.prototype.cmd = 0;

  /**
   * ReqSetblewifi mode.
   * @member {number} mode
   * @memberof ReqSetblewifi
   * @instance
   */
  ReqSetblewifi.prototype.mode = 0;

  /**
   * ReqSetblewifi blePsd.
   * @member {string} blePsd
   * @memberof ReqSetblewifi
   * @instance
   */
  ReqSetblewifi.prototype.blePsd = "";

  /**
   * ReqSetblewifi value.
   * @member {string} value
   * @memberof ReqSetblewifi
   * @instance
   */
  ReqSetblewifi.prototype.value = "";

  /**
   * Creates a new ReqSetblewifi instance using the specified properties.
   * @function create
   * @memberof ReqSetblewifi
   * @static
   * @param {IReqSetblewifi=} [properties] Properties to set
   * @returns {ReqSetblewifi} ReqSetblewifi instance
   */
  ReqSetblewifi.create = function create(properties) {
    return new ReqSetblewifi(properties);
  };

  /**
   * Encodes the specified ReqSetblewifi message. Does not implicitly {@link ReqSetblewifi.verify|verify} messages.
   * @function encode
   * @memberof ReqSetblewifi
   * @static
   * @param {IReqSetblewifi} message ReqSetblewifi message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetblewifi.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.mode);
    if (message.blePsd != null && Object.hasOwnProperty.call(message, "blePsd"))
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.blePsd);
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.value);
    return writer;
  };

  /**
   * Encodes the specified ReqSetblewifi message, length delimited. Does not implicitly {@link ReqSetblewifi.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetblewifi
   * @static
   * @param {IReqSetblewifi} message ReqSetblewifi message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetblewifi.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetblewifi message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetblewifi
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetblewifi} ReqSetblewifi
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetblewifi.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetblewifi();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.mode = reader.int32();
          break;
        }
        case 3: {
          message.blePsd = reader.string();
          break;
        }
        case 4: {
          message.value = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetblewifi message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetblewifi
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetblewifi} ReqSetblewifi
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetblewifi.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetblewifi message.
   * @function verify
   * @memberof ReqSetblewifi
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetblewifi.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    if (message.blePsd != null && message.hasOwnProperty("blePsd"))
      if (!$util.isString(message.blePsd)) return "blePsd: string expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isString(message.value)) return "value: string expected";
    return null;
  };

  /**
   * Creates a ReqSetblewifi message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetblewifi
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetblewifi} ReqSetblewifi
   */
  ReqSetblewifi.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetblewifi) return object;
    var message = new $root.ReqSetblewifi();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.mode != null) message.mode = object.mode | 0;
    if (object.blePsd != null) message.blePsd = String(object.blePsd);
    if (object.value != null) message.value = String(object.value);
    return message;
  };

  /**
   * Creates a plain object from a ReqSetblewifi message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetblewifi
   * @static
   * @param {ReqSetblewifi} message ReqSetblewifi
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetblewifi.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.mode = 0;
      object.blePsd = "";
      object.value = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    if (message.blePsd != null && message.hasOwnProperty("blePsd"))
      object.blePsd = message.blePsd;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ReqSetblewifi to JSON.
   * @function toJSON
   * @memberof ReqSetblewifi
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetblewifi.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetblewifi
   * @function getTypeUrl
   * @memberof ReqSetblewifi
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetblewifi.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetblewifi";
  };

  return ReqSetblewifi;
})();

$root.ReqReset = (function () {
  /**
   * Properties of a ReqReset.
   * @exports IReqReset
   * @interface IReqReset
   * @property {number|null} [cmd] ReqReset cmd
   */

  /**
   * Constructs a new ReqReset.
   * @exports ReqReset
   * @classdesc Represents a ReqReset.
   * @implements IReqReset
   * @constructor
   * @param {IReqReset=} [properties] Properties to set
   */
  function ReqReset(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqReset cmd.
   * @member {number} cmd
   * @memberof ReqReset
   * @instance
   */
  ReqReset.prototype.cmd = 0;

  /**
   * Creates a new ReqReset instance using the specified properties.
   * @function create
   * @memberof ReqReset
   * @static
   * @param {IReqReset=} [properties] Properties to set
   * @returns {ReqReset} ReqReset instance
   */
  ReqReset.create = function create(properties) {
    return new ReqReset(properties);
  };

  /**
   * Encodes the specified ReqReset message. Does not implicitly {@link ReqReset.verify|verify} messages.
   * @function encode
   * @memberof ReqReset
   * @static
   * @param {IReqReset} message ReqReset message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqReset.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    return writer;
  };

  /**
   * Encodes the specified ReqReset message, length delimited. Does not implicitly {@link ReqReset.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqReset
   * @static
   * @param {IReqReset} message ReqReset message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqReset.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqReset message from the specified reader or buffer.
   * @function decode
   * @memberof ReqReset
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqReset} ReqReset
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqReset.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqReset();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqReset message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqReset
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqReset} ReqReset
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqReset.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqReset message.
   * @function verify
   * @memberof ReqReset
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqReset.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    return null;
  };

  /**
   * Creates a ReqReset message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqReset
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqReset} ReqReset
   */
  ReqReset.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqReset) return object;
    var message = new $root.ReqReset();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqReset message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqReset
   * @static
   * @param {ReqReset} message ReqReset
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqReset.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.cmd = 0;
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    return object;
  };

  /**
   * Converts this ReqReset to JSON.
   * @function toJSON
   * @memberof ReqReset
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqReset.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqReset
   * @function getTypeUrl
   * @memberof ReqReset
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqReset.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqReset";
  };

  return ReqReset;
})();

$root.ReqGetwifilist = (function () {
  /**
   * Properties of a ReqGetwifilist.
   * @exports IReqGetwifilist
   * @interface IReqGetwifilist
   * @property {number|null} [cmd] ReqGetwifilist cmd
   */

  /**
   * Constructs a new ReqGetwifilist.
   * @exports ReqGetwifilist
   * @classdesc Represents a ReqGetwifilist.
   * @implements IReqGetwifilist
   * @constructor
   * @param {IReqGetwifilist=} [properties] Properties to set
   */
  function ReqGetwifilist(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqGetwifilist cmd.
   * @member {number} cmd
   * @memberof ReqGetwifilist
   * @instance
   */
  ReqGetwifilist.prototype.cmd = 0;

  /**
   * Creates a new ReqGetwifilist instance using the specified properties.
   * @function create
   * @memberof ReqGetwifilist
   * @static
   * @param {IReqGetwifilist=} [properties] Properties to set
   * @returns {ReqGetwifilist} ReqGetwifilist instance
   */
  ReqGetwifilist.create = function create(properties) {
    return new ReqGetwifilist(properties);
  };

  /**
   * Encodes the specified ReqGetwifilist message. Does not implicitly {@link ReqGetwifilist.verify|verify} messages.
   * @function encode
   * @memberof ReqGetwifilist
   * @static
   * @param {IReqGetwifilist} message ReqGetwifilist message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetwifilist.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    return writer;
  };

  /**
   * Encodes the specified ReqGetwifilist message, length delimited. Does not implicitly {@link ReqGetwifilist.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetwifilist
   * @static
   * @param {IReqGetwifilist} message ReqGetwifilist message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetwifilist.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetwifilist message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetwifilist
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetwifilist} ReqGetwifilist
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetwifilist.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetwifilist();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetwifilist message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetwifilist
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetwifilist} ReqGetwifilist
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetwifilist.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetwifilist message.
   * @function verify
   * @memberof ReqGetwifilist
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetwifilist.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    return null;
  };

  /**
   * Creates a ReqGetwifilist message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetwifilist
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetwifilist} ReqGetwifilist
   */
  ReqGetwifilist.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetwifilist) return object;
    var message = new $root.ReqGetwifilist();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqGetwifilist message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetwifilist
   * @static
   * @param {ReqGetwifilist} message ReqGetwifilist
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetwifilist.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.cmd = 0;
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    return object;
  };

  /**
   * Converts this ReqGetwifilist to JSON.
   * @function toJSON
   * @memberof ReqGetwifilist
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetwifilist.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetwifilist
   * @function getTypeUrl
   * @memberof ReqGetwifilist
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetwifilist.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetwifilist";
  };

  return ReqGetwifilist;
})();

$root.ReqGetsysteminfo = (function () {
  /**
   * Properties of a ReqGetsysteminfo.
   * @exports IReqGetsysteminfo
   * @interface IReqGetsysteminfo
   * @property {number|null} [cmd] ReqGetsysteminfo cmd
   */

  /**
   * Constructs a new ReqGetsysteminfo.
   * @exports ReqGetsysteminfo
   * @classdesc Represents a ReqGetsysteminfo.
   * @implements IReqGetsysteminfo
   * @constructor
   * @param {IReqGetsysteminfo=} [properties] Properties to set
   */
  function ReqGetsysteminfo(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqGetsysteminfo cmd.
   * @member {number} cmd
   * @memberof ReqGetsysteminfo
   * @instance
   */
  ReqGetsysteminfo.prototype.cmd = 0;

  /**
   * Creates a new ReqGetsysteminfo instance using the specified properties.
   * @function create
   * @memberof ReqGetsysteminfo
   * @static
   * @param {IReqGetsysteminfo=} [properties] Properties to set
   * @returns {ReqGetsysteminfo} ReqGetsysteminfo instance
   */
  ReqGetsysteminfo.create = function create(properties) {
    return new ReqGetsysteminfo(properties);
  };

  /**
   * Encodes the specified ReqGetsysteminfo message. Does not implicitly {@link ReqGetsysteminfo.verify|verify} messages.
   * @function encode
   * @memberof ReqGetsysteminfo
   * @static
   * @param {IReqGetsysteminfo} message ReqGetsysteminfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetsysteminfo.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    return writer;
  };

  /**
   * Encodes the specified ReqGetsysteminfo message, length delimited. Does not implicitly {@link ReqGetsysteminfo.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetsysteminfo
   * @static
   * @param {IReqGetsysteminfo} message ReqGetsysteminfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetsysteminfo.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetsysteminfo message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetsysteminfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetsysteminfo} ReqGetsysteminfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetsysteminfo.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetsysteminfo();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetsysteminfo message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetsysteminfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetsysteminfo} ReqGetsysteminfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetsysteminfo.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetsysteminfo message.
   * @function verify
   * @memberof ReqGetsysteminfo
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetsysteminfo.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    return null;
  };

  /**
   * Creates a ReqGetsysteminfo message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetsysteminfo
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetsysteminfo} ReqGetsysteminfo
   */
  ReqGetsysteminfo.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetsysteminfo) return object;
    var message = new $root.ReqGetsysteminfo();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqGetsysteminfo message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetsysteminfo
   * @static
   * @param {ReqGetsysteminfo} message ReqGetsysteminfo
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetsysteminfo.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.cmd = 0;
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    return object;
  };

  /**
   * Converts this ReqGetsysteminfo to JSON.
   * @function toJSON
   * @memberof ReqGetsysteminfo
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetsysteminfo.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetsysteminfo
   * @function getTypeUrl
   * @memberof ReqGetsysteminfo
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetsysteminfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetsysteminfo";
  };

  return ReqGetsysteminfo;
})();

$root.ReqCheckFile = (function () {
  /**
   * Properties of a ReqCheckFile.
   * @exports IReqCheckFile
   * @interface IReqCheckFile
   * @property {number|null} [cmd] ReqCheckFile cmd
   * @property {string|null} [filePath] ReqCheckFile filePath
   * @property {string|null} [md5] ReqCheckFile md5
   */

  /**
   * Constructs a new ReqCheckFile.
   * @exports ReqCheckFile
   * @classdesc Represents a ReqCheckFile.
   * @implements IReqCheckFile
   * @constructor
   * @param {IReqCheckFile=} [properties] Properties to set
   */
  function ReqCheckFile(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqCheckFile cmd.
   * @member {number} cmd
   * @memberof ReqCheckFile
   * @instance
   */
  ReqCheckFile.prototype.cmd = 0;

  /**
   * ReqCheckFile filePath.
   * @member {string} filePath
   * @memberof ReqCheckFile
   * @instance
   */
  ReqCheckFile.prototype.filePath = "";

  /**
   * ReqCheckFile md5.
   * @member {string} md5
   * @memberof ReqCheckFile
   * @instance
   */
  ReqCheckFile.prototype.md5 = "";

  /**
   * Creates a new ReqCheckFile instance using the specified properties.
   * @function create
   * @memberof ReqCheckFile
   * @static
   * @param {IReqCheckFile=} [properties] Properties to set
   * @returns {ReqCheckFile} ReqCheckFile instance
   */
  ReqCheckFile.create = function create(properties) {
    return new ReqCheckFile(properties);
  };

  /**
   * Encodes the specified ReqCheckFile message. Does not implicitly {@link ReqCheckFile.verify|verify} messages.
   * @function encode
   * @memberof ReqCheckFile
   * @static
   * @param {IReqCheckFile} message ReqCheckFile message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCheckFile.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (
      message.filePath != null &&
      Object.hasOwnProperty.call(message, "filePath")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.filePath);
    if (message.md5 != null && Object.hasOwnProperty.call(message, "md5"))
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.md5);
    return writer;
  };

  /**
   * Encodes the specified ReqCheckFile message, length delimited. Does not implicitly {@link ReqCheckFile.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCheckFile
   * @static
   * @param {IReqCheckFile} message ReqCheckFile message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCheckFile.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCheckFile message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCheckFile
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCheckFile} ReqCheckFile
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCheckFile.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCheckFile();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.filePath = reader.string();
          break;
        }
        case 3: {
          message.md5 = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCheckFile message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCheckFile
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCheckFile} ReqCheckFile
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCheckFile.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCheckFile message.
   * @function verify
   * @memberof ReqCheckFile
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCheckFile.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.filePath != null && message.hasOwnProperty("filePath"))
      if (!$util.isString(message.filePath)) return "filePath: string expected";
    if (message.md5 != null && message.hasOwnProperty("md5"))
      if (!$util.isString(message.md5)) return "md5: string expected";
    return null;
  };

  /**
   * Creates a ReqCheckFile message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCheckFile
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCheckFile} ReqCheckFile
   */
  ReqCheckFile.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCheckFile) return object;
    var message = new $root.ReqCheckFile();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.filePath != null) message.filePath = String(object.filePath);
    if (object.md5 != null) message.md5 = String(object.md5);
    return message;
  };

  /**
   * Creates a plain object from a ReqCheckFile message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCheckFile
   * @static
   * @param {ReqCheckFile} message ReqCheckFile
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCheckFile.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.filePath = "";
      object.md5 = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.filePath != null && message.hasOwnProperty("filePath"))
      object.filePath = message.filePath;
    if (message.md5 != null && message.hasOwnProperty("md5"))
      object.md5 = message.md5;
    return object;
  };

  /**
   * Converts this ReqCheckFile to JSON.
   * @function toJSON
   * @memberof ReqCheckFile
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCheckFile.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCheckFile
   * @function getTypeUrl
   * @memberof ReqCheckFile
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCheckFile.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCheckFile";
  };

  return ReqCheckFile;
})();

$root.ResGetconfig = (function () {
  /**
   * Properties of a ResGetconfig.
   * @exports IResGetconfig
   * @interface IResGetconfig
   * @property {number|null} [cmd] ResGetconfig cmd
   * @property {number|null} [code] ResGetconfig code
   * @property {number|null} [state] ResGetconfig state
   * @property {number|null} [wifiMode] ResGetconfig wifiMode
   * @property {number|null} [apMode] ResGetconfig apMode
   * @property {number|null} [autoStart] ResGetconfig autoStart
   * @property {number|null} [apCountryList] ResGetconfig apCountryList
   * @property {string|null} [ssid] ResGetconfig ssid
   * @property {string|null} [psd] ResGetconfig psd
   * @property {string|null} [ip] ResGetconfig ip
   * @property {string|null} [apCountry] ResGetconfig apCountry
   */

  /**
   * Constructs a new ResGetconfig.
   * @exports ResGetconfig
   * @classdesc Represents a ResGetconfig.
   * @implements IResGetconfig
   * @constructor
   * @param {IResGetconfig=} [properties] Properties to set
   */
  function ResGetconfig(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetconfig cmd.
   * @member {number} cmd
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.cmd = 0;

  /**
   * ResGetconfig code.
   * @member {number} code
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.code = 0;

  /**
   * ResGetconfig state.
   * @member {number} state
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.state = 0;

  /**
   * ResGetconfig wifiMode.
   * @member {number} wifiMode
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.wifiMode = 0;

  /**
   * ResGetconfig apMode.
   * @member {number} apMode
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.apMode = 0;

  /**
   * ResGetconfig autoStart.
   * @member {number} autoStart
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.autoStart = 0;

  /**
   * ResGetconfig apCountryList.
   * @member {number} apCountryList
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.apCountryList = 0;

  /**
   * ResGetconfig ssid.
   * @member {string} ssid
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.ssid = "";

  /**
   * ResGetconfig psd.
   * @member {string} psd
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.psd = "";

  /**
   * ResGetconfig ip.
   * @member {string} ip
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.ip = "";

  /**
   * ResGetconfig apCountry.
   * @member {string} apCountry
   * @memberof ResGetconfig
   * @instance
   */
  ResGetconfig.prototype.apCountry = "";

  /**
   * Creates a new ResGetconfig instance using the specified properties.
   * @function create
   * @memberof ResGetconfig
   * @static
   * @param {IResGetconfig=} [properties] Properties to set
   * @returns {ResGetconfig} ResGetconfig instance
   */
  ResGetconfig.create = function create(properties) {
    return new ResGetconfig(properties);
  };

  /**
   * Encodes the specified ResGetconfig message. Does not implicitly {@link ResGetconfig.verify|verify} messages.
   * @function encode
   * @memberof ResGetconfig
   * @static
   * @param {IResGetconfig} message ResGetconfig message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetconfig.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.state);
    if (
      message.wifiMode != null &&
      Object.hasOwnProperty.call(message, "wifiMode")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.wifiMode);
    if (message.apMode != null && Object.hasOwnProperty.call(message, "apMode"))
      writer.uint32(/* id 5, wireType 0 =*/ 40).int32(message.apMode);
    if (
      message.autoStart != null &&
      Object.hasOwnProperty.call(message, "autoStart")
    )
      writer.uint32(/* id 6, wireType 0 =*/ 48).int32(message.autoStart);
    if (
      message.apCountryList != null &&
      Object.hasOwnProperty.call(message, "apCountryList")
    )
      writer.uint32(/* id 7, wireType 0 =*/ 56).int32(message.apCountryList);
    if (message.ssid != null && Object.hasOwnProperty.call(message, "ssid"))
      writer.uint32(/* id 8, wireType 2 =*/ 66).string(message.ssid);
    if (message.psd != null && Object.hasOwnProperty.call(message, "psd"))
      writer.uint32(/* id 9, wireType 2 =*/ 74).string(message.psd);
    if (message.ip != null && Object.hasOwnProperty.call(message, "ip"))
      writer.uint32(/* id 10, wireType 2 =*/ 82).string(message.ip);
    if (
      message.apCountry != null &&
      Object.hasOwnProperty.call(message, "apCountry")
    )
      writer.uint32(/* id 11, wireType 2 =*/ 90).string(message.apCountry);
    return writer;
  };

  /**
   * Encodes the specified ResGetconfig message, length delimited. Does not implicitly {@link ResGetconfig.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetconfig
   * @static
   * @param {IResGetconfig} message ResGetconfig message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetconfig.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetconfig message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetconfig
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetconfig} ResGetconfig
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetconfig.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetconfig();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        case 3: {
          message.state = reader.int32();
          break;
        }
        case 4: {
          message.wifiMode = reader.int32();
          break;
        }
        case 5: {
          message.apMode = reader.int32();
          break;
        }
        case 6: {
          message.autoStart = reader.int32();
          break;
        }
        case 7: {
          message.apCountryList = reader.int32();
          break;
        }
        case 8: {
          message.ssid = reader.string();
          break;
        }
        case 9: {
          message.psd = reader.string();
          break;
        }
        case 10: {
          message.ip = reader.string();
          break;
        }
        case 11: {
          message.apCountry = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetconfig message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetconfig
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetconfig} ResGetconfig
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetconfig.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetconfig message.
   * @function verify
   * @memberof ResGetconfig
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetconfig.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.state != null && message.hasOwnProperty("state"))
      if (!$util.isInteger(message.state)) return "state: integer expected";
    if (message.wifiMode != null && message.hasOwnProperty("wifiMode"))
      if (!$util.isInteger(message.wifiMode))
        return "wifiMode: integer expected";
    if (message.apMode != null && message.hasOwnProperty("apMode"))
      if (!$util.isInteger(message.apMode)) return "apMode: integer expected";
    if (message.autoStart != null && message.hasOwnProperty("autoStart"))
      if (!$util.isInteger(message.autoStart))
        return "autoStart: integer expected";
    if (
      message.apCountryList != null &&
      message.hasOwnProperty("apCountryList")
    )
      if (!$util.isInteger(message.apCountryList))
        return "apCountryList: integer expected";
    if (message.ssid != null && message.hasOwnProperty("ssid"))
      if (!$util.isString(message.ssid)) return "ssid: string expected";
    if (message.psd != null && message.hasOwnProperty("psd"))
      if (!$util.isString(message.psd)) return "psd: string expected";
    if (message.ip != null && message.hasOwnProperty("ip"))
      if (!$util.isString(message.ip)) return "ip: string expected";
    if (message.apCountry != null && message.hasOwnProperty("apCountry"))
      if (!$util.isString(message.apCountry))
        return "apCountry: string expected";
    return null;
  };

  /**
   * Creates a ResGetconfig message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetconfig
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetconfig} ResGetconfig
   */
  ResGetconfig.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetconfig) return object;
    var message = new $root.ResGetconfig();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    if (object.state != null) message.state = object.state | 0;
    if (object.wifiMode != null) message.wifiMode = object.wifiMode | 0;
    if (object.apMode != null) message.apMode = object.apMode | 0;
    if (object.autoStart != null) message.autoStart = object.autoStart | 0;
    if (object.apCountryList != null)
      message.apCountryList = object.apCountryList | 0;
    if (object.ssid != null) message.ssid = String(object.ssid);
    if (object.psd != null) message.psd = String(object.psd);
    if (object.ip != null) message.ip = String(object.ip);
    if (object.apCountry != null) message.apCountry = String(object.apCountry);
    return message;
  };

  /**
   * Creates a plain object from a ResGetconfig message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetconfig
   * @static
   * @param {ResGetconfig} message ResGetconfig
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetconfig.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
      object.state = 0;
      object.wifiMode = 0;
      object.apMode = 0;
      object.autoStart = 0;
      object.apCountryList = 0;
      object.ssid = "";
      object.psd = "";
      object.ip = "";
      object.apCountry = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state = message.state;
    if (message.wifiMode != null && message.hasOwnProperty("wifiMode"))
      object.wifiMode = message.wifiMode;
    if (message.apMode != null && message.hasOwnProperty("apMode"))
      object.apMode = message.apMode;
    if (message.autoStart != null && message.hasOwnProperty("autoStart"))
      object.autoStart = message.autoStart;
    if (
      message.apCountryList != null &&
      message.hasOwnProperty("apCountryList")
    )
      object.apCountryList = message.apCountryList;
    if (message.ssid != null && message.hasOwnProperty("ssid"))
      object.ssid = message.ssid;
    if (message.psd != null && message.hasOwnProperty("psd"))
      object.psd = message.psd;
    if (message.ip != null && message.hasOwnProperty("ip"))
      object.ip = message.ip;
    if (message.apCountry != null && message.hasOwnProperty("apCountry"))
      object.apCountry = message.apCountry;
    return object;
  };

  /**
   * Converts this ResGetconfig to JSON.
   * @function toJSON
   * @memberof ResGetconfig
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetconfig.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetconfig
   * @function getTypeUrl
   * @memberof ResGetconfig
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetconfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetconfig";
  };

  return ResGetconfig;
})();

$root.ResAp = (function () {
  /**
   * Properties of a ResAp.
   * @exports IResAp
   * @interface IResAp
   * @property {number|null} [cmd] ResAp cmd
   * @property {number|null} [code] ResAp code
   * @property {number|null} [mode] ResAp mode
   * @property {string|null} [ssid] ResAp ssid
   * @property {string|null} [psd] ResAp psd
   */

  /**
   * Constructs a new ResAp.
   * @exports ResAp
   * @classdesc Represents a ResAp.
   * @implements IResAp
   * @constructor
   * @param {IResAp=} [properties] Properties to set
   */
  function ResAp(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResAp cmd.
   * @member {number} cmd
   * @memberof ResAp
   * @instance
   */
  ResAp.prototype.cmd = 0;

  /**
   * ResAp code.
   * @member {number} code
   * @memberof ResAp
   * @instance
   */
  ResAp.prototype.code = 0;

  /**
   * ResAp mode.
   * @member {number} mode
   * @memberof ResAp
   * @instance
   */
  ResAp.prototype.mode = 0;

  /**
   * ResAp ssid.
   * @member {string} ssid
   * @memberof ResAp
   * @instance
   */
  ResAp.prototype.ssid = "";

  /**
   * ResAp psd.
   * @member {string} psd
   * @memberof ResAp
   * @instance
   */
  ResAp.prototype.psd = "";

  /**
   * Creates a new ResAp instance using the specified properties.
   * @function create
   * @memberof ResAp
   * @static
   * @param {IResAp=} [properties] Properties to set
   * @returns {ResAp} ResAp instance
   */
  ResAp.create = function create(properties) {
    return new ResAp(properties);
  };

  /**
   * Encodes the specified ResAp message. Does not implicitly {@link ResAp.verify|verify} messages.
   * @function encode
   * @memberof ResAp
   * @static
   * @param {IResAp} message ResAp message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResAp.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.mode);
    if (message.ssid != null && Object.hasOwnProperty.call(message, "ssid"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.ssid);
    if (message.psd != null && Object.hasOwnProperty.call(message, "psd"))
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.psd);
    return writer;
  };

  /**
   * Encodes the specified ResAp message, length delimited. Does not implicitly {@link ResAp.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResAp
   * @static
   * @param {IResAp} message ResAp message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResAp.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResAp message from the specified reader or buffer.
   * @function decode
   * @memberof ResAp
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResAp} ResAp
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResAp.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResAp();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        case 3: {
          message.mode = reader.int32();
          break;
        }
        case 4: {
          message.ssid = reader.string();
          break;
        }
        case 5: {
          message.psd = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResAp message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResAp
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResAp} ResAp
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResAp.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResAp message.
   * @function verify
   * @memberof ResAp
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResAp.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    if (message.ssid != null && message.hasOwnProperty("ssid"))
      if (!$util.isString(message.ssid)) return "ssid: string expected";
    if (message.psd != null && message.hasOwnProperty("psd"))
      if (!$util.isString(message.psd)) return "psd: string expected";
    return null;
  };

  /**
   * Creates a ResAp message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResAp
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResAp} ResAp
   */
  ResAp.fromObject = function fromObject(object) {
    if (object instanceof $root.ResAp) return object;
    var message = new $root.ResAp();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    if (object.mode != null) message.mode = object.mode | 0;
    if (object.ssid != null) message.ssid = String(object.ssid);
    if (object.psd != null) message.psd = String(object.psd);
    return message;
  };

  /**
   * Creates a plain object from a ResAp message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResAp
   * @static
   * @param {ResAp} message ResAp
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResAp.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
      object.mode = 0;
      object.ssid = "";
      object.psd = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    if (message.ssid != null && message.hasOwnProperty("ssid"))
      object.ssid = message.ssid;
    if (message.psd != null && message.hasOwnProperty("psd"))
      object.psd = message.psd;
    return object;
  };

  /**
   * Converts this ResAp to JSON.
   * @function toJSON
   * @memberof ResAp
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResAp.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResAp
   * @function getTypeUrl
   * @memberof ResAp
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResAp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResAp";
  };

  return ResAp;
})();

$root.ResSta = (function () {
  /**
   * Properties of a ResSta.
   * @exports IResSta
   * @interface IResSta
   * @property {number|null} [cmd] ResSta cmd
   * @property {number|null} [code] ResSta code
   * @property {string|null} [ssid] ResSta ssid
   * @property {string|null} [psd] ResSta psd
   * @property {string|null} [ip] ResSta ip
   */

  /**
   * Constructs a new ResSta.
   * @exports ResSta
   * @classdesc Represents a ResSta.
   * @implements IResSta
   * @constructor
   * @param {IResSta=} [properties] Properties to set
   */
  function ResSta(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResSta cmd.
   * @member {number} cmd
   * @memberof ResSta
   * @instance
   */
  ResSta.prototype.cmd = 0;

  /**
   * ResSta code.
   * @member {number} code
   * @memberof ResSta
   * @instance
   */
  ResSta.prototype.code = 0;

  /**
   * ResSta ssid.
   * @member {string} ssid
   * @memberof ResSta
   * @instance
   */
  ResSta.prototype.ssid = "";

  /**
   * ResSta psd.
   * @member {string} psd
   * @memberof ResSta
   * @instance
   */
  ResSta.prototype.psd = "";

  /**
   * ResSta ip.
   * @member {string} ip
   * @memberof ResSta
   * @instance
   */
  ResSta.prototype.ip = "";

  /**
   * Creates a new ResSta instance using the specified properties.
   * @function create
   * @memberof ResSta
   * @static
   * @param {IResSta=} [properties] Properties to set
   * @returns {ResSta} ResSta instance
   */
  ResSta.create = function create(properties) {
    return new ResSta(properties);
  };

  /**
   * Encodes the specified ResSta message. Does not implicitly {@link ResSta.verify|verify} messages.
   * @function encode
   * @memberof ResSta
   * @static
   * @param {IResSta} message ResSta message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResSta.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    if (message.ssid != null && Object.hasOwnProperty.call(message, "ssid"))
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.ssid);
    if (message.psd != null && Object.hasOwnProperty.call(message, "psd"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.psd);
    if (message.ip != null && Object.hasOwnProperty.call(message, "ip"))
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.ip);
    return writer;
  };

  /**
   * Encodes the specified ResSta message, length delimited. Does not implicitly {@link ResSta.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResSta
   * @static
   * @param {IResSta} message ResSta message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResSta.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResSta message from the specified reader or buffer.
   * @function decode
   * @memberof ResSta
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResSta} ResSta
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResSta.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResSta();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        case 3: {
          message.ssid = reader.string();
          break;
        }
        case 4: {
          message.psd = reader.string();
          break;
        }
        case 5: {
          message.ip = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResSta message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResSta
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResSta} ResSta
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResSta.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResSta message.
   * @function verify
   * @memberof ResSta
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResSta.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.ssid != null && message.hasOwnProperty("ssid"))
      if (!$util.isString(message.ssid)) return "ssid: string expected";
    if (message.psd != null && message.hasOwnProperty("psd"))
      if (!$util.isString(message.psd)) return "psd: string expected";
    if (message.ip != null && message.hasOwnProperty("ip"))
      if (!$util.isString(message.ip)) return "ip: string expected";
    return null;
  };

  /**
   * Creates a ResSta message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResSta
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResSta} ResSta
   */
  ResSta.fromObject = function fromObject(object) {
    if (object instanceof $root.ResSta) return object;
    var message = new $root.ResSta();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    if (object.ssid != null) message.ssid = String(object.ssid);
    if (object.psd != null) message.psd = String(object.psd);
    if (object.ip != null) message.ip = String(object.ip);
    return message;
  };

  /**
   * Creates a plain object from a ResSta message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResSta
   * @static
   * @param {ResSta} message ResSta
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResSta.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
      object.ssid = "";
      object.psd = "";
      object.ip = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.ssid != null && message.hasOwnProperty("ssid"))
      object.ssid = message.ssid;
    if (message.psd != null && message.hasOwnProperty("psd"))
      object.psd = message.psd;
    if (message.ip != null && message.hasOwnProperty("ip"))
      object.ip = message.ip;
    return object;
  };

  /**
   * Converts this ResSta to JSON.
   * @function toJSON
   * @memberof ResSta
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResSta.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResSta
   * @function getTypeUrl
   * @memberof ResSta
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResSta.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResSta";
  };

  return ResSta;
})();

$root.ResSetblewifi = (function () {
  /**
   * Properties of a ResSetblewifi.
   * @exports IResSetblewifi
   * @interface IResSetblewifi
   * @property {number|null} [cmd] ResSetblewifi cmd
   * @property {number|null} [code] ResSetblewifi code
   * @property {number|null} [mode] ResSetblewifi mode
   * @property {string|null} [value] ResSetblewifi value
   */

  /**
   * Constructs a new ResSetblewifi.
   * @exports ResSetblewifi
   * @classdesc Represents a ResSetblewifi.
   * @implements IResSetblewifi
   * @constructor
   * @param {IResSetblewifi=} [properties] Properties to set
   */
  function ResSetblewifi(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResSetblewifi cmd.
   * @member {number} cmd
   * @memberof ResSetblewifi
   * @instance
   */
  ResSetblewifi.prototype.cmd = 0;

  /**
   * ResSetblewifi code.
   * @member {number} code
   * @memberof ResSetblewifi
   * @instance
   */
  ResSetblewifi.prototype.code = 0;

  /**
   * ResSetblewifi mode.
   * @member {number} mode
   * @memberof ResSetblewifi
   * @instance
   */
  ResSetblewifi.prototype.mode = 0;

  /**
   * ResSetblewifi value.
   * @member {string} value
   * @memberof ResSetblewifi
   * @instance
   */
  ResSetblewifi.prototype.value = "";

  /**
   * Creates a new ResSetblewifi instance using the specified properties.
   * @function create
   * @memberof ResSetblewifi
   * @static
   * @param {IResSetblewifi=} [properties] Properties to set
   * @returns {ResSetblewifi} ResSetblewifi instance
   */
  ResSetblewifi.create = function create(properties) {
    return new ResSetblewifi(properties);
  };

  /**
   * Encodes the specified ResSetblewifi message. Does not implicitly {@link ResSetblewifi.verify|verify} messages.
   * @function encode
   * @memberof ResSetblewifi
   * @static
   * @param {IResSetblewifi} message ResSetblewifi message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResSetblewifi.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.mode);
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.value);
    return writer;
  };

  /**
   * Encodes the specified ResSetblewifi message, length delimited. Does not implicitly {@link ResSetblewifi.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResSetblewifi
   * @static
   * @param {IResSetblewifi} message ResSetblewifi message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResSetblewifi.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResSetblewifi message from the specified reader or buffer.
   * @function decode
   * @memberof ResSetblewifi
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResSetblewifi} ResSetblewifi
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResSetblewifi.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResSetblewifi();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        case 3: {
          message.mode = reader.int32();
          break;
        }
        case 4: {
          message.value = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResSetblewifi message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResSetblewifi
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResSetblewifi} ResSetblewifi
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResSetblewifi.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResSetblewifi message.
   * @function verify
   * @memberof ResSetblewifi
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResSetblewifi.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isString(message.value)) return "value: string expected";
    return null;
  };

  /**
   * Creates a ResSetblewifi message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResSetblewifi
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResSetblewifi} ResSetblewifi
   */
  ResSetblewifi.fromObject = function fromObject(object) {
    if (object instanceof $root.ResSetblewifi) return object;
    var message = new $root.ResSetblewifi();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    if (object.mode != null) message.mode = object.mode | 0;
    if (object.value != null) message.value = String(object.value);
    return message;
  };

  /**
   * Creates a plain object from a ResSetblewifi message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResSetblewifi
   * @static
   * @param {ResSetblewifi} message ResSetblewifi
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResSetblewifi.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
      object.mode = 0;
      object.value = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ResSetblewifi to JSON.
   * @function toJSON
   * @memberof ResSetblewifi
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResSetblewifi.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResSetblewifi
   * @function getTypeUrl
   * @memberof ResSetblewifi
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResSetblewifi.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResSetblewifi";
  };

  return ResSetblewifi;
})();

$root.ResReset = (function () {
  /**
   * Properties of a ResReset.
   * @exports IResReset
   * @interface IResReset
   * @property {number|null} [cmd] ResReset cmd
   * @property {number|null} [code] ResReset code
   */

  /**
   * Constructs a new ResReset.
   * @exports ResReset
   * @classdesc Represents a ResReset.
   * @implements IResReset
   * @constructor
   * @param {IResReset=} [properties] Properties to set
   */
  function ResReset(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResReset cmd.
   * @member {number} cmd
   * @memberof ResReset
   * @instance
   */
  ResReset.prototype.cmd = 0;

  /**
   * ResReset code.
   * @member {number} code
   * @memberof ResReset
   * @instance
   */
  ResReset.prototype.code = 0;

  /**
   * Creates a new ResReset instance using the specified properties.
   * @function create
   * @memberof ResReset
   * @static
   * @param {IResReset=} [properties] Properties to set
   * @returns {ResReset} ResReset instance
   */
  ResReset.create = function create(properties) {
    return new ResReset(properties);
  };

  /**
   * Encodes the specified ResReset message. Does not implicitly {@link ResReset.verify|verify} messages.
   * @function encode
   * @memberof ResReset
   * @static
   * @param {IResReset} message ResReset message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResReset.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResReset message, length delimited. Does not implicitly {@link ResReset.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResReset
   * @static
   * @param {IResReset} message ResReset message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResReset.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResReset message from the specified reader or buffer.
   * @function decode
   * @memberof ResReset
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResReset} ResReset
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResReset.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResReset();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResReset message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResReset
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResReset} ResReset
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResReset.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResReset message.
   * @function verify
   * @memberof ResReset
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResReset.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResReset message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResReset
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResReset} ResReset
   */
  ResReset.fromObject = function fromObject(object) {
    if (object instanceof $root.ResReset) return object;
    var message = new $root.ResReset();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResReset message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResReset
   * @static
   * @param {ResReset} message ResReset
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResReset.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResReset to JSON.
   * @function toJSON
   * @memberof ResReset
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResReset.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResReset
   * @function getTypeUrl
   * @memberof ResReset
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResReset.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResReset";
  };

  return ResReset;
})();

$root.ResWifilist = (function () {
  /**
   * Properties of a ResWifilist.
   * @exports IResWifilist
   * @interface IResWifilist
   * @property {number|null} [cmd] ResWifilist cmd
   * @property {number|null} [code] ResWifilist code
   * @property {Array.<string>|null} [ssid] ResWifilist ssid
   */

  /**
   * Constructs a new ResWifilist.
   * @exports ResWifilist
   * @classdesc Represents a ResWifilist.
   * @implements IResWifilist
   * @constructor
   * @param {IResWifilist=} [properties] Properties to set
   */
  function ResWifilist(properties) {
    this.ssid = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResWifilist cmd.
   * @member {number} cmd
   * @memberof ResWifilist
   * @instance
   */
  ResWifilist.prototype.cmd = 0;

  /**
   * ResWifilist code.
   * @member {number} code
   * @memberof ResWifilist
   * @instance
   */
  ResWifilist.prototype.code = 0;

  /**
   * ResWifilist ssid.
   * @member {Array.<string>} ssid
   * @memberof ResWifilist
   * @instance
   */
  ResWifilist.prototype.ssid = $util.emptyArray;

  /**
   * Creates a new ResWifilist instance using the specified properties.
   * @function create
   * @memberof ResWifilist
   * @static
   * @param {IResWifilist=} [properties] Properties to set
   * @returns {ResWifilist} ResWifilist instance
   */
  ResWifilist.create = function create(properties) {
    return new ResWifilist(properties);
  };

  /**
   * Encodes the specified ResWifilist message. Does not implicitly {@link ResWifilist.verify|verify} messages.
   * @function encode
   * @memberof ResWifilist
   * @static
   * @param {IResWifilist} message ResWifilist message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResWifilist.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    if (message.ssid != null && message.ssid.length)
      for (var i = 0; i < message.ssid.length; ++i)
        writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.ssid[i]);
    return writer;
  };

  /**
   * Encodes the specified ResWifilist message, length delimited. Does not implicitly {@link ResWifilist.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResWifilist
   * @static
   * @param {IResWifilist} message ResWifilist message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResWifilist.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResWifilist message from the specified reader or buffer.
   * @function decode
   * @memberof ResWifilist
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResWifilist} ResWifilist
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResWifilist.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResWifilist();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        case 4: {
          if (!(message.ssid && message.ssid.length)) message.ssid = [];
          message.ssid.push(reader.string());
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResWifilist message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResWifilist
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResWifilist} ResWifilist
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResWifilist.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResWifilist message.
   * @function verify
   * @memberof ResWifilist
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResWifilist.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.ssid != null && message.hasOwnProperty("ssid")) {
      if (!Array.isArray(message.ssid)) return "ssid: array expected";
      for (var i = 0; i < message.ssid.length; ++i)
        if (!$util.isString(message.ssid[i])) return "ssid: string[] expected";
    }
    return null;
  };

  /**
   * Creates a ResWifilist message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResWifilist
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResWifilist} ResWifilist
   */
  ResWifilist.fromObject = function fromObject(object) {
    if (object instanceof $root.ResWifilist) return object;
    var message = new $root.ResWifilist();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    if (object.ssid) {
      if (!Array.isArray(object.ssid))
        throw TypeError(".ResWifilist.ssid: array expected");
      message.ssid = [];
      for (var i = 0; i < object.ssid.length; ++i)
        message.ssid[i] = String(object.ssid[i]);
    }
    return message;
  };

  /**
   * Creates a plain object from a ResWifilist message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResWifilist
   * @static
   * @param {ResWifilist} message ResWifilist
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResWifilist.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.ssid = [];
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.ssid && message.ssid.length) {
      object.ssid = [];
      for (var j = 0; j < message.ssid.length; ++j)
        object.ssid[j] = message.ssid[j];
    }
    return object;
  };

  /**
   * Converts this ResWifilist to JSON.
   * @function toJSON
   * @memberof ResWifilist
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResWifilist.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResWifilist
   * @function getTypeUrl
   * @memberof ResWifilist
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResWifilist.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResWifilist";
  };

  return ResWifilist;
})();

$root.ResGetsysteminfo = (function () {
  /**
   * Properties of a ResGetsysteminfo.
   * @exports IResGetsysteminfo
   * @interface IResGetsysteminfo
   * @property {number|null} [cmd] ResGetsysteminfo cmd
   * @property {number|null} [code] ResGetsysteminfo code
   * @property {number|null} [protocolVersion] ResGetsysteminfo protocolVersion
   * @property {string|null} [device] ResGetsysteminfo device
   * @property {string|null} [macAddress] ResGetsysteminfo macAddress
   * @property {string|null} [dwarfOtaVersion] ResGetsysteminfo dwarfOtaVersion
   */

  /**
   * Constructs a new ResGetsysteminfo.
   * @exports ResGetsysteminfo
   * @classdesc Represents a ResGetsysteminfo.
   * @implements IResGetsysteminfo
   * @constructor
   * @param {IResGetsysteminfo=} [properties] Properties to set
   */
  function ResGetsysteminfo(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetsysteminfo cmd.
   * @member {number} cmd
   * @memberof ResGetsysteminfo
   * @instance
   */
  ResGetsysteminfo.prototype.cmd = 0;

  /**
   * ResGetsysteminfo code.
   * @member {number} code
   * @memberof ResGetsysteminfo
   * @instance
   */
  ResGetsysteminfo.prototype.code = 0;

  /**
   * ResGetsysteminfo protocolVersion.
   * @member {number} protocolVersion
   * @memberof ResGetsysteminfo
   * @instance
   */
  ResGetsysteminfo.prototype.protocolVersion = 0;

  /**
   * ResGetsysteminfo device.
   * @member {string} device
   * @memberof ResGetsysteminfo
   * @instance
   */
  ResGetsysteminfo.prototype.device = "";

  /**
   * ResGetsysteminfo macAddress.
   * @member {string} macAddress
   * @memberof ResGetsysteminfo
   * @instance
   */
  ResGetsysteminfo.prototype.macAddress = "";

  /**
   * ResGetsysteminfo dwarfOtaVersion.
   * @member {string} dwarfOtaVersion
   * @memberof ResGetsysteminfo
   * @instance
   */
  ResGetsysteminfo.prototype.dwarfOtaVersion = "";

  /**
   * Creates a new ResGetsysteminfo instance using the specified properties.
   * @function create
   * @memberof ResGetsysteminfo
   * @static
   * @param {IResGetsysteminfo=} [properties] Properties to set
   * @returns {ResGetsysteminfo} ResGetsysteminfo instance
   */
  ResGetsysteminfo.create = function create(properties) {
    return new ResGetsysteminfo(properties);
  };

  /**
   * Encodes the specified ResGetsysteminfo message. Does not implicitly {@link ResGetsysteminfo.verify|verify} messages.
   * @function encode
   * @memberof ResGetsysteminfo
   * @static
   * @param {IResGetsysteminfo} message ResGetsysteminfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetsysteminfo.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    if (
      message.protocolVersion != null &&
      Object.hasOwnProperty.call(message, "protocolVersion")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.protocolVersion);
    if (message.device != null && Object.hasOwnProperty.call(message, "device"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.device);
    if (
      message.macAddress != null &&
      Object.hasOwnProperty.call(message, "macAddress")
    )
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.macAddress);
    if (
      message.dwarfOtaVersion != null &&
      Object.hasOwnProperty.call(message, "dwarfOtaVersion")
    )
      writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.dwarfOtaVersion);
    return writer;
  };

  /**
   * Encodes the specified ResGetsysteminfo message, length delimited. Does not implicitly {@link ResGetsysteminfo.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetsysteminfo
   * @static
   * @param {IResGetsysteminfo} message ResGetsysteminfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetsysteminfo.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetsysteminfo message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetsysteminfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetsysteminfo} ResGetsysteminfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetsysteminfo.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetsysteminfo();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        case 3: {
          message.protocolVersion = reader.int32();
          break;
        }
        case 4: {
          message.device = reader.string();
          break;
        }
        case 5: {
          message.macAddress = reader.string();
          break;
        }
        case 6: {
          message.dwarfOtaVersion = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetsysteminfo message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetsysteminfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetsysteminfo} ResGetsysteminfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetsysteminfo.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetsysteminfo message.
   * @function verify
   * @memberof ResGetsysteminfo
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetsysteminfo.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (
      message.protocolVersion != null &&
      message.hasOwnProperty("protocolVersion")
    )
      if (!$util.isInteger(message.protocolVersion))
        return "protocolVersion: integer expected";
    if (message.device != null && message.hasOwnProperty("device"))
      if (!$util.isString(message.device)) return "device: string expected";
    if (message.macAddress != null && message.hasOwnProperty("macAddress"))
      if (!$util.isString(message.macAddress))
        return "macAddress: string expected";
    if (
      message.dwarfOtaVersion != null &&
      message.hasOwnProperty("dwarfOtaVersion")
    )
      if (!$util.isString(message.dwarfOtaVersion))
        return "dwarfOtaVersion: string expected";
    return null;
  };

  /**
   * Creates a ResGetsysteminfo message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetsysteminfo
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetsysteminfo} ResGetsysteminfo
   */
  ResGetsysteminfo.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetsysteminfo) return object;
    var message = new $root.ResGetsysteminfo();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    if (object.protocolVersion != null)
      message.protocolVersion = object.protocolVersion | 0;
    if (object.device != null) message.device = String(object.device);
    if (object.macAddress != null)
      message.macAddress = String(object.macAddress);
    if (object.dwarfOtaVersion != null)
      message.dwarfOtaVersion = String(object.dwarfOtaVersion);
    return message;
  };

  /**
   * Creates a plain object from a ResGetsysteminfo message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetsysteminfo
   * @static
   * @param {ResGetsysteminfo} message ResGetsysteminfo
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetsysteminfo.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
      object.protocolVersion = 0;
      object.device = "";
      object.macAddress = "";
      object.dwarfOtaVersion = "";
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (
      message.protocolVersion != null &&
      message.hasOwnProperty("protocolVersion")
    )
      object.protocolVersion = message.protocolVersion;
    if (message.device != null && message.hasOwnProperty("device"))
      object.device = message.device;
    if (message.macAddress != null && message.hasOwnProperty("macAddress"))
      object.macAddress = message.macAddress;
    if (
      message.dwarfOtaVersion != null &&
      message.hasOwnProperty("dwarfOtaVersion")
    )
      object.dwarfOtaVersion = message.dwarfOtaVersion;
    return object;
  };

  /**
   * Converts this ResGetsysteminfo to JSON.
   * @function toJSON
   * @memberof ResGetsysteminfo
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetsysteminfo.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetsysteminfo
   * @function getTypeUrl
   * @memberof ResGetsysteminfo
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetsysteminfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetsysteminfo";
  };

  return ResGetsysteminfo;
})();

$root.ResReceiveDataError = (function () {
  /**
   * Properties of a ResReceiveDataError.
   * @exports IResReceiveDataError
   * @interface IResReceiveDataError
   * @property {number|null} [cmd] ResReceiveDataError cmd
   * @property {number|null} [code] ResReceiveDataError code
   */

  /**
   * Constructs a new ResReceiveDataError.
   * @exports ResReceiveDataError
   * @classdesc Represents a ResReceiveDataError.
   * @implements IResReceiveDataError
   * @constructor
   * @param {IResReceiveDataError=} [properties] Properties to set
   */
  function ResReceiveDataError(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResReceiveDataError cmd.
   * @member {number} cmd
   * @memberof ResReceiveDataError
   * @instance
   */
  ResReceiveDataError.prototype.cmd = 0;

  /**
   * ResReceiveDataError code.
   * @member {number} code
   * @memberof ResReceiveDataError
   * @instance
   */
  ResReceiveDataError.prototype.code = 0;

  /**
   * Creates a new ResReceiveDataError instance using the specified properties.
   * @function create
   * @memberof ResReceiveDataError
   * @static
   * @param {IResReceiveDataError=} [properties] Properties to set
   * @returns {ResReceiveDataError} ResReceiveDataError instance
   */
  ResReceiveDataError.create = function create(properties) {
    return new ResReceiveDataError(properties);
  };

  /**
   * Encodes the specified ResReceiveDataError message. Does not implicitly {@link ResReceiveDataError.verify|verify} messages.
   * @function encode
   * @memberof ResReceiveDataError
   * @static
   * @param {IResReceiveDataError} message ResReceiveDataError message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResReceiveDataError.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResReceiveDataError message, length delimited. Does not implicitly {@link ResReceiveDataError.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResReceiveDataError
   * @static
   * @param {IResReceiveDataError} message ResReceiveDataError message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResReceiveDataError.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResReceiveDataError message from the specified reader or buffer.
   * @function decode
   * @memberof ResReceiveDataError
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResReceiveDataError} ResReceiveDataError
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResReceiveDataError.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResReceiveDataError();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResReceiveDataError message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResReceiveDataError
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResReceiveDataError} ResReceiveDataError
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResReceiveDataError.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResReceiveDataError message.
   * @function verify
   * @memberof ResReceiveDataError
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResReceiveDataError.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResReceiveDataError message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResReceiveDataError
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResReceiveDataError} ResReceiveDataError
   */
  ResReceiveDataError.fromObject = function fromObject(object) {
    if (object instanceof $root.ResReceiveDataError) return object;
    var message = new $root.ResReceiveDataError();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResReceiveDataError message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResReceiveDataError
   * @static
   * @param {ResReceiveDataError} message ResReceiveDataError
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResReceiveDataError.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResReceiveDataError to JSON.
   * @function toJSON
   * @memberof ResReceiveDataError
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResReceiveDataError.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResReceiveDataError
   * @function getTypeUrl
   * @memberof ResReceiveDataError
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResReceiveDataError.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResReceiveDataError";
  };

  return ResReceiveDataError;
})();

$root.ResCheckFile = (function () {
  /**
   * Properties of a ResCheckFile.
   * @exports IResCheckFile
   * @interface IResCheckFile
   * @property {number|null} [cmd] ResCheckFile cmd
   * @property {number|null} [code] ResCheckFile code
   */

  /**
   * Constructs a new ResCheckFile.
   * @exports ResCheckFile
   * @classdesc Represents a ResCheckFile.
   * @implements IResCheckFile
   * @constructor
   * @param {IResCheckFile=} [properties] Properties to set
   */
  function ResCheckFile(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResCheckFile cmd.
   * @member {number} cmd
   * @memberof ResCheckFile
   * @instance
   */
  ResCheckFile.prototype.cmd = 0;

  /**
   * ResCheckFile code.
   * @member {number} code
   * @memberof ResCheckFile
   * @instance
   */
  ResCheckFile.prototype.code = 0;

  /**
   * Creates a new ResCheckFile instance using the specified properties.
   * @function create
   * @memberof ResCheckFile
   * @static
   * @param {IResCheckFile=} [properties] Properties to set
   * @returns {ResCheckFile} ResCheckFile instance
   */
  ResCheckFile.create = function create(properties) {
    return new ResCheckFile(properties);
  };

  /**
   * Encodes the specified ResCheckFile message. Does not implicitly {@link ResCheckFile.verify|verify} messages.
   * @function encode
   * @memberof ResCheckFile
   * @static
   * @param {IResCheckFile} message ResCheckFile message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResCheckFile.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.cmd != null && Object.hasOwnProperty.call(message, "cmd"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.cmd);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResCheckFile message, length delimited. Does not implicitly {@link ResCheckFile.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResCheckFile
   * @static
   * @param {IResCheckFile} message ResCheckFile message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResCheckFile.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResCheckFile message from the specified reader or buffer.
   * @function decode
   * @memberof ResCheckFile
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResCheckFile} ResCheckFile
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResCheckFile.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResCheckFile();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.cmd = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResCheckFile message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResCheckFile
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResCheckFile} ResCheckFile
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResCheckFile.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResCheckFile message.
   * @function verify
   * @memberof ResCheckFile
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResCheckFile.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      if (!$util.isInteger(message.cmd)) return "cmd: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResCheckFile message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResCheckFile
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResCheckFile} ResCheckFile
   */
  ResCheckFile.fromObject = function fromObject(object) {
    if (object instanceof $root.ResCheckFile) return object;
    var message = new $root.ResCheckFile();
    if (object.cmd != null) message.cmd = object.cmd | 0;
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResCheckFile message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResCheckFile
   * @static
   * @param {ResCheckFile} message ResCheckFile
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResCheckFile.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.cmd = 0;
      object.code = 0;
    }
    if (message.cmd != null && message.hasOwnProperty("cmd"))
      object.cmd = message.cmd;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResCheckFile to JSON.
   * @function toJSON
   * @memberof ResCheckFile
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResCheckFile.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResCheckFile
   * @function getTypeUrl
   * @memberof ResCheckFile
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResCheckFile.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResCheckFile";
  };

  return ResCheckFile;
})();

$root.ReqOpenCamera = (function () {
  /**
   * Properties of a ReqOpenCamera.
   * @exports IReqOpenCamera
   * @interface IReqOpenCamera
   * @property {boolean|null} [binning] ReqOpenCamera binning
   * @property {number|null} [rtspEncodeType] ReqOpenCamera rtspEncodeType
   */

  /**
   * Constructs a new ReqOpenCamera.
   * @exports ReqOpenCamera
   * @classdesc Represents a ReqOpenCamera.
   * @implements IReqOpenCamera
   * @constructor
   * @param {IReqOpenCamera=} [properties] Properties to set
   */
  function ReqOpenCamera(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqOpenCamera binning.
   * @member {boolean} binning
   * @memberof ReqOpenCamera
   * @instance
   */
  ReqOpenCamera.prototype.binning = false;

  /**
   * ReqOpenCamera rtspEncodeType.
   * @member {number} rtspEncodeType
   * @memberof ReqOpenCamera
   * @instance
   */
  ReqOpenCamera.prototype.rtspEncodeType = 0;

  /**
   * Creates a new ReqOpenCamera instance using the specified properties.
   * @function create
   * @memberof ReqOpenCamera
   * @static
   * @param {IReqOpenCamera=} [properties] Properties to set
   * @returns {ReqOpenCamera} ReqOpenCamera instance
   */
  ReqOpenCamera.create = function create(properties) {
    return new ReqOpenCamera(properties);
  };

  /**
   * Encodes the specified ReqOpenCamera message. Does not implicitly {@link ReqOpenCamera.verify|verify} messages.
   * @function encode
   * @memberof ReqOpenCamera
   * @static
   * @param {IReqOpenCamera} message ReqOpenCamera message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOpenCamera.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.binning != null &&
      Object.hasOwnProperty.call(message, "binning")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).bool(message.binning);
    if (
      message.rtspEncodeType != null &&
      Object.hasOwnProperty.call(message, "rtspEncodeType")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.rtspEncodeType);
    return writer;
  };

  /**
   * Encodes the specified ReqOpenCamera message, length delimited. Does not implicitly {@link ReqOpenCamera.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqOpenCamera
   * @static
   * @param {IReqOpenCamera} message ReqOpenCamera message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOpenCamera.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqOpenCamera message from the specified reader or buffer.
   * @function decode
   * @memberof ReqOpenCamera
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqOpenCamera} ReqOpenCamera
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOpenCamera.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqOpenCamera();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.binning = reader.bool();
          break;
        }
        case 2: {
          message.rtspEncodeType = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqOpenCamera message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqOpenCamera
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqOpenCamera} ReqOpenCamera
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOpenCamera.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqOpenCamera message.
   * @function verify
   * @memberof ReqOpenCamera
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqOpenCamera.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.binning != null && message.hasOwnProperty("binning"))
      if (typeof message.binning !== "boolean")
        return "binning: boolean expected";
    if (
      message.rtspEncodeType != null &&
      message.hasOwnProperty("rtspEncodeType")
    )
      if (!$util.isInteger(message.rtspEncodeType))
        return "rtspEncodeType: integer expected";
    return null;
  };

  /**
   * Creates a ReqOpenCamera message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqOpenCamera
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqOpenCamera} ReqOpenCamera
   */
  ReqOpenCamera.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqOpenCamera) return object;
    var message = new $root.ReqOpenCamera();
    if (object.binning != null) message.binning = Boolean(object.binning);
    if (object.rtspEncodeType != null)
      message.rtspEncodeType = object.rtspEncodeType | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqOpenCamera message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqOpenCamera
   * @static
   * @param {ReqOpenCamera} message ReqOpenCamera
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqOpenCamera.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.binning = false;
      object.rtspEncodeType = 0;
    }
    if (message.binning != null && message.hasOwnProperty("binning"))
      object.binning = message.binning;
    if (
      message.rtspEncodeType != null &&
      message.hasOwnProperty("rtspEncodeType")
    )
      object.rtspEncodeType = message.rtspEncodeType;
    return object;
  };

  /**
   * Converts this ReqOpenCamera to JSON.
   * @function toJSON
   * @memberof ReqOpenCamera
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqOpenCamera.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqOpenCamera
   * @function getTypeUrl
   * @memberof ReqOpenCamera
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqOpenCamera.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqOpenCamera";
  };

  return ReqOpenCamera;
})();

$root.ReqCloseCamera = (function () {
  /**
   * Properties of a ReqCloseCamera.
   * @exports IReqCloseCamera
   * @interface IReqCloseCamera
   */

  /**
   * Constructs a new ReqCloseCamera.
   * @exports ReqCloseCamera
   * @classdesc Represents a ReqCloseCamera.
   * @implements IReqCloseCamera
   * @constructor
   * @param {IReqCloseCamera=} [properties] Properties to set
   */
  function ReqCloseCamera(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqCloseCamera instance using the specified properties.
   * @function create
   * @memberof ReqCloseCamera
   * @static
   * @param {IReqCloseCamera=} [properties] Properties to set
   * @returns {ReqCloseCamera} ReqCloseCamera instance
   */
  ReqCloseCamera.create = function create(properties) {
    return new ReqCloseCamera(properties);
  };

  /**
   * Encodes the specified ReqCloseCamera message. Does not implicitly {@link ReqCloseCamera.verify|verify} messages.
   * @function encode
   * @memberof ReqCloseCamera
   * @static
   * @param {IReqCloseCamera} message ReqCloseCamera message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCloseCamera.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqCloseCamera message, length delimited. Does not implicitly {@link ReqCloseCamera.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCloseCamera
   * @static
   * @param {IReqCloseCamera} message ReqCloseCamera message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCloseCamera.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCloseCamera message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCloseCamera
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCloseCamera} ReqCloseCamera
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCloseCamera.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCloseCamera();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCloseCamera message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCloseCamera
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCloseCamera} ReqCloseCamera
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCloseCamera.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCloseCamera message.
   * @function verify
   * @memberof ReqCloseCamera
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCloseCamera.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqCloseCamera message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCloseCamera
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCloseCamera} ReqCloseCamera
   */
  ReqCloseCamera.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCloseCamera) return object;
    return new $root.ReqCloseCamera();
  };

  /**
   * Creates a plain object from a ReqCloseCamera message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCloseCamera
   * @static
   * @param {ReqCloseCamera} message ReqCloseCamera
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCloseCamera.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqCloseCamera to JSON.
   * @function toJSON
   * @memberof ReqCloseCamera
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCloseCamera.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCloseCamera
   * @function getTypeUrl
   * @memberof ReqCloseCamera
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCloseCamera.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCloseCamera";
  };

  return ReqCloseCamera;
})();

$root.ReqPhoto = (function () {
  /**
   * Properties of a ReqPhoto.
   * @exports IReqPhoto
   * @interface IReqPhoto
   */

  /**
   * Constructs a new ReqPhoto.
   * @exports ReqPhoto
   * @classdesc Represents a ReqPhoto.
   * @implements IReqPhoto
   * @constructor
   * @param {IReqPhoto=} [properties] Properties to set
   */
  function ReqPhoto(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqPhoto instance using the specified properties.
   * @function create
   * @memberof ReqPhoto
   * @static
   * @param {IReqPhoto=} [properties] Properties to set
   * @returns {ReqPhoto} ReqPhoto instance
   */
  ReqPhoto.create = function create(properties) {
    return new ReqPhoto(properties);
  };

  /**
   * Encodes the specified ReqPhoto message. Does not implicitly {@link ReqPhoto.verify|verify} messages.
   * @function encode
   * @memberof ReqPhoto
   * @static
   * @param {IReqPhoto} message ReqPhoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqPhoto.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqPhoto message, length delimited. Does not implicitly {@link ReqPhoto.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqPhoto
   * @static
   * @param {IReqPhoto} message ReqPhoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqPhoto.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqPhoto message from the specified reader or buffer.
   * @function decode
   * @memberof ReqPhoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqPhoto} ReqPhoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqPhoto.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqPhoto();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqPhoto message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqPhoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqPhoto} ReqPhoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqPhoto.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqPhoto message.
   * @function verify
   * @memberof ReqPhoto
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqPhoto.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqPhoto message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqPhoto
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqPhoto} ReqPhoto
   */
  ReqPhoto.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqPhoto) return object;
    return new $root.ReqPhoto();
  };

  /**
   * Creates a plain object from a ReqPhoto message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqPhoto
   * @static
   * @param {ReqPhoto} message ReqPhoto
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqPhoto.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqPhoto to JSON.
   * @function toJSON
   * @memberof ReqPhoto
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqPhoto.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqPhoto
   * @function getTypeUrl
   * @memberof ReqPhoto
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqPhoto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqPhoto";
  };

  return ReqPhoto;
})();

$root.ReqBurstPhoto = (function () {
  /**
   * Properties of a ReqBurstPhoto.
   * @exports IReqBurstPhoto
   * @interface IReqBurstPhoto
   * @property {number|null} [count] ReqBurstPhoto count
   */

  /**
   * Constructs a new ReqBurstPhoto.
   * @exports ReqBurstPhoto
   * @classdesc Represents a ReqBurstPhoto.
   * @implements IReqBurstPhoto
   * @constructor
   * @param {IReqBurstPhoto=} [properties] Properties to set
   */
  function ReqBurstPhoto(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqBurstPhoto count.
   * @member {number} count
   * @memberof ReqBurstPhoto
   * @instance
   */
  ReqBurstPhoto.prototype.count = 0;

  /**
   * Creates a new ReqBurstPhoto instance using the specified properties.
   * @function create
   * @memberof ReqBurstPhoto
   * @static
   * @param {IReqBurstPhoto=} [properties] Properties to set
   * @returns {ReqBurstPhoto} ReqBurstPhoto instance
   */
  ReqBurstPhoto.create = function create(properties) {
    return new ReqBurstPhoto(properties);
  };

  /**
   * Encodes the specified ReqBurstPhoto message. Does not implicitly {@link ReqBurstPhoto.verify|verify} messages.
   * @function encode
   * @memberof ReqBurstPhoto
   * @static
   * @param {IReqBurstPhoto} message ReqBurstPhoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqBurstPhoto.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.count != null && Object.hasOwnProperty.call(message, "count"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.count);
    return writer;
  };

  /**
   * Encodes the specified ReqBurstPhoto message, length delimited. Does not implicitly {@link ReqBurstPhoto.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqBurstPhoto
   * @static
   * @param {IReqBurstPhoto} message ReqBurstPhoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqBurstPhoto.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqBurstPhoto message from the specified reader or buffer.
   * @function decode
   * @memberof ReqBurstPhoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqBurstPhoto} ReqBurstPhoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqBurstPhoto.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqBurstPhoto();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.count = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqBurstPhoto message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqBurstPhoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqBurstPhoto} ReqBurstPhoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqBurstPhoto.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqBurstPhoto message.
   * @function verify
   * @memberof ReqBurstPhoto
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqBurstPhoto.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.count != null && message.hasOwnProperty("count"))
      if (!$util.isInteger(message.count)) return "count: integer expected";
    return null;
  };

  /**
   * Creates a ReqBurstPhoto message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqBurstPhoto
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqBurstPhoto} ReqBurstPhoto
   */
  ReqBurstPhoto.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqBurstPhoto) return object;
    var message = new $root.ReqBurstPhoto();
    if (object.count != null) message.count = object.count | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqBurstPhoto message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqBurstPhoto
   * @static
   * @param {ReqBurstPhoto} message ReqBurstPhoto
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqBurstPhoto.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.count = 0;
    if (message.count != null && message.hasOwnProperty("count"))
      object.count = message.count;
    return object;
  };

  /**
   * Converts this ReqBurstPhoto to JSON.
   * @function toJSON
   * @memberof ReqBurstPhoto
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqBurstPhoto.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqBurstPhoto
   * @function getTypeUrl
   * @memberof ReqBurstPhoto
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqBurstPhoto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqBurstPhoto";
  };

  return ReqBurstPhoto;
})();

$root.ReqStopBurstPhoto = (function () {
  /**
   * Properties of a ReqStopBurstPhoto.
   * @exports IReqStopBurstPhoto
   * @interface IReqStopBurstPhoto
   */

  /**
   * Constructs a new ReqStopBurstPhoto.
   * @exports ReqStopBurstPhoto
   * @classdesc Represents a ReqStopBurstPhoto.
   * @implements IReqStopBurstPhoto
   * @constructor
   * @param {IReqStopBurstPhoto=} [properties] Properties to set
   */
  function ReqStopBurstPhoto(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopBurstPhoto instance using the specified properties.
   * @function create
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {IReqStopBurstPhoto=} [properties] Properties to set
   * @returns {ReqStopBurstPhoto} ReqStopBurstPhoto instance
   */
  ReqStopBurstPhoto.create = function create(properties) {
    return new ReqStopBurstPhoto(properties);
  };

  /**
   * Encodes the specified ReqStopBurstPhoto message. Does not implicitly {@link ReqStopBurstPhoto.verify|verify} messages.
   * @function encode
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {IReqStopBurstPhoto} message ReqStopBurstPhoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopBurstPhoto.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopBurstPhoto message, length delimited. Does not implicitly {@link ReqStopBurstPhoto.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {IReqStopBurstPhoto} message ReqStopBurstPhoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopBurstPhoto.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopBurstPhoto message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopBurstPhoto} ReqStopBurstPhoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopBurstPhoto.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopBurstPhoto();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopBurstPhoto message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopBurstPhoto} ReqStopBurstPhoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopBurstPhoto.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopBurstPhoto message.
   * @function verify
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopBurstPhoto.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopBurstPhoto message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopBurstPhoto} ReqStopBurstPhoto
   */
  ReqStopBurstPhoto.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopBurstPhoto) return object;
    return new $root.ReqStopBurstPhoto();
  };

  /**
   * Creates a plain object from a ReqStopBurstPhoto message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {ReqStopBurstPhoto} message ReqStopBurstPhoto
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopBurstPhoto.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopBurstPhoto to JSON.
   * @function toJSON
   * @memberof ReqStopBurstPhoto
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopBurstPhoto.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopBurstPhoto
   * @function getTypeUrl
   * @memberof ReqStopBurstPhoto
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopBurstPhoto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopBurstPhoto";
  };

  return ReqStopBurstPhoto;
})();

$root.ReqStartRecord = (function () {
  /**
   * Properties of a ReqStartRecord.
   * @exports IReqStartRecord
   * @interface IReqStartRecord
   * @property {number|null} [encodeType] ReqStartRecord encodeType
   */

  /**
   * Constructs a new ReqStartRecord.
   * @exports ReqStartRecord
   * @classdesc Represents a ReqStartRecord.
   * @implements IReqStartRecord
   * @constructor
   * @param {IReqStartRecord=} [properties] Properties to set
   */
  function ReqStartRecord(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqStartRecord encodeType.
   * @member {number} encodeType
   * @memberof ReqStartRecord
   * @instance
   */
  ReqStartRecord.prototype.encodeType = 0;

  /**
   * Creates a new ReqStartRecord instance using the specified properties.
   * @function create
   * @memberof ReqStartRecord
   * @static
   * @param {IReqStartRecord=} [properties] Properties to set
   * @returns {ReqStartRecord} ReqStartRecord instance
   */
  ReqStartRecord.create = function create(properties) {
    return new ReqStartRecord(properties);
  };

  /**
   * Encodes the specified ReqStartRecord message. Does not implicitly {@link ReqStartRecord.verify|verify} messages.
   * @function encode
   * @memberof ReqStartRecord
   * @static
   * @param {IReqStartRecord} message ReqStartRecord message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartRecord.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.encodeType != null &&
      Object.hasOwnProperty.call(message, "encodeType")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.encodeType);
    return writer;
  };

  /**
   * Encodes the specified ReqStartRecord message, length delimited. Does not implicitly {@link ReqStartRecord.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartRecord
   * @static
   * @param {IReqStartRecord} message ReqStartRecord message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartRecord.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartRecord message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartRecord
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartRecord} ReqStartRecord
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartRecord.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartRecord();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.encodeType = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartRecord message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartRecord
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartRecord} ReqStartRecord
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartRecord.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartRecord message.
   * @function verify
   * @memberof ReqStartRecord
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartRecord.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.encodeType != null && message.hasOwnProperty("encodeType"))
      if (!$util.isInteger(message.encodeType))
        return "encodeType: integer expected";
    return null;
  };

  /**
   * Creates a ReqStartRecord message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartRecord
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartRecord} ReqStartRecord
   */
  ReqStartRecord.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartRecord) return object;
    var message = new $root.ReqStartRecord();
    if (object.encodeType != null) message.encodeType = object.encodeType | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqStartRecord message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartRecord
   * @static
   * @param {ReqStartRecord} message ReqStartRecord
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartRecord.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.encodeType = 0;
    if (message.encodeType != null && message.hasOwnProperty("encodeType"))
      object.encodeType = message.encodeType;
    return object;
  };

  /**
   * Converts this ReqStartRecord to JSON.
   * @function toJSON
   * @memberof ReqStartRecord
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartRecord.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartRecord
   * @function getTypeUrl
   * @memberof ReqStartRecord
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartRecord";
  };

  return ReqStartRecord;
})();

$root.ReqStopRecord = (function () {
  /**
   * Properties of a ReqStopRecord.
   * @exports IReqStopRecord
   * @interface IReqStopRecord
   */

  /**
   * Constructs a new ReqStopRecord.
   * @exports ReqStopRecord
   * @classdesc Represents a ReqStopRecord.
   * @implements IReqStopRecord
   * @constructor
   * @param {IReqStopRecord=} [properties] Properties to set
   */
  function ReqStopRecord(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopRecord instance using the specified properties.
   * @function create
   * @memberof ReqStopRecord
   * @static
   * @param {IReqStopRecord=} [properties] Properties to set
   * @returns {ReqStopRecord} ReqStopRecord instance
   */
  ReqStopRecord.create = function create(properties) {
    return new ReqStopRecord(properties);
  };

  /**
   * Encodes the specified ReqStopRecord message. Does not implicitly {@link ReqStopRecord.verify|verify} messages.
   * @function encode
   * @memberof ReqStopRecord
   * @static
   * @param {IReqStopRecord} message ReqStopRecord message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopRecord.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopRecord message, length delimited. Does not implicitly {@link ReqStopRecord.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopRecord
   * @static
   * @param {IReqStopRecord} message ReqStopRecord message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopRecord.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopRecord message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopRecord
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopRecord} ReqStopRecord
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopRecord.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopRecord();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopRecord message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopRecord
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopRecord} ReqStopRecord
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopRecord.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopRecord message.
   * @function verify
   * @memberof ReqStopRecord
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopRecord.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopRecord message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopRecord
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopRecord} ReqStopRecord
   */
  ReqStopRecord.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopRecord) return object;
    return new $root.ReqStopRecord();
  };

  /**
   * Creates a plain object from a ReqStopRecord message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopRecord
   * @static
   * @param {ReqStopRecord} message ReqStopRecord
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopRecord.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopRecord to JSON.
   * @function toJSON
   * @memberof ReqStopRecord
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopRecord.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopRecord
   * @function getTypeUrl
   * @memberof ReqStopRecord
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopRecord";
  };

  return ReqStopRecord;
})();

$root.ReqSetExpMode = (function () {
  /**
   * Properties of a ReqSetExpMode.
   * @exports IReqSetExpMode
   * @interface IReqSetExpMode
   * @property {number|null} [mode] ReqSetExpMode mode
   */

  /**
   * Constructs a new ReqSetExpMode.
   * @exports ReqSetExpMode
   * @classdesc Represents a ReqSetExpMode.
   * @implements IReqSetExpMode
   * @constructor
   * @param {IReqSetExpMode=} [properties] Properties to set
   */
  function ReqSetExpMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetExpMode mode.
   * @member {number} mode
   * @memberof ReqSetExpMode
   * @instance
   */
  ReqSetExpMode.prototype.mode = 0;

  /**
   * Creates a new ReqSetExpMode instance using the specified properties.
   * @function create
   * @memberof ReqSetExpMode
   * @static
   * @param {IReqSetExpMode=} [properties] Properties to set
   * @returns {ReqSetExpMode} ReqSetExpMode instance
   */
  ReqSetExpMode.create = function create(properties) {
    return new ReqSetExpMode(properties);
  };

  /**
   * Encodes the specified ReqSetExpMode message. Does not implicitly {@link ReqSetExpMode.verify|verify} messages.
   * @function encode
   * @memberof ReqSetExpMode
   * @static
   * @param {IReqSetExpMode} message ReqSetExpMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetExpMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ReqSetExpMode message, length delimited. Does not implicitly {@link ReqSetExpMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetExpMode
   * @static
   * @param {IReqSetExpMode} message ReqSetExpMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetExpMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetExpMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetExpMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetExpMode} ReqSetExpMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetExpMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetExpMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetExpMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetExpMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetExpMode} ReqSetExpMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetExpMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetExpMode message.
   * @function verify
   * @memberof ReqSetExpMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetExpMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetExpMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetExpMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetExpMode} ReqSetExpMode
   */
  ReqSetExpMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetExpMode) return object;
    var message = new $root.ReqSetExpMode();
    if (object.mode != null) message.mode = object.mode | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetExpMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetExpMode
   * @static
   * @param {ReqSetExpMode} message ReqSetExpMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetExpMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ReqSetExpMode to JSON.
   * @function toJSON
   * @memberof ReqSetExpMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetExpMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetExpMode
   * @function getTypeUrl
   * @memberof ReqSetExpMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetExpMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetExpMode";
  };

  return ReqSetExpMode;
})();

$root.ReqGetExpMode = (function () {
  /**
   * Properties of a ReqGetExpMode.
   * @exports IReqGetExpMode
   * @interface IReqGetExpMode
   */

  /**
   * Constructs a new ReqGetExpMode.
   * @exports ReqGetExpMode
   * @classdesc Represents a ReqGetExpMode.
   * @implements IReqGetExpMode
   * @constructor
   * @param {IReqGetExpMode=} [properties] Properties to set
   */
  function ReqGetExpMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetExpMode instance using the specified properties.
   * @function create
   * @memberof ReqGetExpMode
   * @static
   * @param {IReqGetExpMode=} [properties] Properties to set
   * @returns {ReqGetExpMode} ReqGetExpMode instance
   */
  ReqGetExpMode.create = function create(properties) {
    return new ReqGetExpMode(properties);
  };

  /**
   * Encodes the specified ReqGetExpMode message. Does not implicitly {@link ReqGetExpMode.verify|verify} messages.
   * @function encode
   * @memberof ReqGetExpMode
   * @static
   * @param {IReqGetExpMode} message ReqGetExpMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetExpMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetExpMode message, length delimited. Does not implicitly {@link ReqGetExpMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetExpMode
   * @static
   * @param {IReqGetExpMode} message ReqGetExpMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetExpMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetExpMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetExpMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetExpMode} ReqGetExpMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetExpMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetExpMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetExpMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetExpMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetExpMode} ReqGetExpMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetExpMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetExpMode message.
   * @function verify
   * @memberof ReqGetExpMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetExpMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetExpMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetExpMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetExpMode} ReqGetExpMode
   */
  ReqGetExpMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetExpMode) return object;
    return new $root.ReqGetExpMode();
  };

  /**
   * Creates a plain object from a ReqGetExpMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetExpMode
   * @static
   * @param {ReqGetExpMode} message ReqGetExpMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetExpMode.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetExpMode to JSON.
   * @function toJSON
   * @memberof ReqGetExpMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetExpMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetExpMode
   * @function getTypeUrl
   * @memberof ReqGetExpMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetExpMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetExpMode";
  };

  return ReqGetExpMode;
})();

$root.ReqSetExp = (function () {
  /**
   * Properties of a ReqSetExp.
   * @exports IReqSetExp
   * @interface IReqSetExp
   * @property {number|null} [index] ReqSetExp index
   */

  /**
   * Constructs a new ReqSetExp.
   * @exports ReqSetExp
   * @classdesc Represents a ReqSetExp.
   * @implements IReqSetExp
   * @constructor
   * @param {IReqSetExp=} [properties] Properties to set
   */
  function ReqSetExp(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetExp index.
   * @member {number} index
   * @memberof ReqSetExp
   * @instance
   */
  ReqSetExp.prototype.index = 0;

  /**
   * Creates a new ReqSetExp instance using the specified properties.
   * @function create
   * @memberof ReqSetExp
   * @static
   * @param {IReqSetExp=} [properties] Properties to set
   * @returns {ReqSetExp} ReqSetExp instance
   */
  ReqSetExp.create = function create(properties) {
    return new ReqSetExp(properties);
  };

  /**
   * Encodes the specified ReqSetExp message. Does not implicitly {@link ReqSetExp.verify|verify} messages.
   * @function encode
   * @memberof ReqSetExp
   * @static
   * @param {IReqSetExp} message ReqSetExp message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetExp.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.index != null && Object.hasOwnProperty.call(message, "index"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.index);
    return writer;
  };

  /**
   * Encodes the specified ReqSetExp message, length delimited. Does not implicitly {@link ReqSetExp.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetExp
   * @static
   * @param {IReqSetExp} message ReqSetExp message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetExp.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetExp message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetExp
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetExp} ReqSetExp
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetExp.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetExp();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.index = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetExp message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetExp
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetExp} ReqSetExp
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetExp.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetExp message.
   * @function verify
   * @memberof ReqSetExp
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetExp.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.index != null && message.hasOwnProperty("index"))
      if (!$util.isInteger(message.index)) return "index: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetExp message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetExp
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetExp} ReqSetExp
   */
  ReqSetExp.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetExp) return object;
    var message = new $root.ReqSetExp();
    if (object.index != null) message.index = object.index | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetExp message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetExp
   * @static
   * @param {ReqSetExp} message ReqSetExp
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetExp.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.index = 0;
    if (message.index != null && message.hasOwnProperty("index"))
      object.index = message.index;
    return object;
  };

  /**
   * Converts this ReqSetExp to JSON.
   * @function toJSON
   * @memberof ReqSetExp
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetExp.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetExp
   * @function getTypeUrl
   * @memberof ReqSetExp
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetExp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetExp";
  };

  return ReqSetExp;
})();

$root.ReqGetExp = (function () {
  /**
   * Properties of a ReqGetExp.
   * @exports IReqGetExp
   * @interface IReqGetExp
   */

  /**
   * Constructs a new ReqGetExp.
   * @exports ReqGetExp
   * @classdesc Represents a ReqGetExp.
   * @implements IReqGetExp
   * @constructor
   * @param {IReqGetExp=} [properties] Properties to set
   */
  function ReqGetExp(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetExp instance using the specified properties.
   * @function create
   * @memberof ReqGetExp
   * @static
   * @param {IReqGetExp=} [properties] Properties to set
   * @returns {ReqGetExp} ReqGetExp instance
   */
  ReqGetExp.create = function create(properties) {
    return new ReqGetExp(properties);
  };

  /**
   * Encodes the specified ReqGetExp message. Does not implicitly {@link ReqGetExp.verify|verify} messages.
   * @function encode
   * @memberof ReqGetExp
   * @static
   * @param {IReqGetExp} message ReqGetExp message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetExp.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetExp message, length delimited. Does not implicitly {@link ReqGetExp.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetExp
   * @static
   * @param {IReqGetExp} message ReqGetExp message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetExp.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetExp message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetExp
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetExp} ReqGetExp
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetExp.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetExp();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetExp message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetExp
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetExp} ReqGetExp
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetExp.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetExp message.
   * @function verify
   * @memberof ReqGetExp
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetExp.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetExp message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetExp
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetExp} ReqGetExp
   */
  ReqGetExp.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetExp) return object;
    return new $root.ReqGetExp();
  };

  /**
   * Creates a plain object from a ReqGetExp message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetExp
   * @static
   * @param {ReqGetExp} message ReqGetExp
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetExp.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetExp to JSON.
   * @function toJSON
   * @memberof ReqGetExp
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetExp.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetExp
   * @function getTypeUrl
   * @memberof ReqGetExp
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetExp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetExp";
  };

  return ReqGetExp;
})();

$root.ReqSetGainMode = (function () {
  /**
   * Properties of a ReqSetGainMode.
   * @exports IReqSetGainMode
   * @interface IReqSetGainMode
   * @property {number|null} [mode] ReqSetGainMode mode
   */

  /**
   * Constructs a new ReqSetGainMode.
   * @exports ReqSetGainMode
   * @classdesc Represents a ReqSetGainMode.
   * @implements IReqSetGainMode
   * @constructor
   * @param {IReqSetGainMode=} [properties] Properties to set
   */
  function ReqSetGainMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetGainMode mode.
   * @member {number} mode
   * @memberof ReqSetGainMode
   * @instance
   */
  ReqSetGainMode.prototype.mode = 0;

  /**
   * Creates a new ReqSetGainMode instance using the specified properties.
   * @function create
   * @memberof ReqSetGainMode
   * @static
   * @param {IReqSetGainMode=} [properties] Properties to set
   * @returns {ReqSetGainMode} ReqSetGainMode instance
   */
  ReqSetGainMode.create = function create(properties) {
    return new ReqSetGainMode(properties);
  };

  /**
   * Encodes the specified ReqSetGainMode message. Does not implicitly {@link ReqSetGainMode.verify|verify} messages.
   * @function encode
   * @memberof ReqSetGainMode
   * @static
   * @param {IReqSetGainMode} message ReqSetGainMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetGainMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ReqSetGainMode message, length delimited. Does not implicitly {@link ReqSetGainMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetGainMode
   * @static
   * @param {IReqSetGainMode} message ReqSetGainMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetGainMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetGainMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetGainMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetGainMode} ReqSetGainMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetGainMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetGainMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetGainMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetGainMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetGainMode} ReqSetGainMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetGainMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetGainMode message.
   * @function verify
   * @memberof ReqSetGainMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetGainMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetGainMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetGainMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetGainMode} ReqSetGainMode
   */
  ReqSetGainMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetGainMode) return object;
    var message = new $root.ReqSetGainMode();
    if (object.mode != null) message.mode = object.mode | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetGainMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetGainMode
   * @static
   * @param {ReqSetGainMode} message ReqSetGainMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetGainMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ReqSetGainMode to JSON.
   * @function toJSON
   * @memberof ReqSetGainMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetGainMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetGainMode
   * @function getTypeUrl
   * @memberof ReqSetGainMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetGainMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetGainMode";
  };

  return ReqSetGainMode;
})();

$root.ReqGetGainMode = (function () {
  /**
   * Properties of a ReqGetGainMode.
   * @exports IReqGetGainMode
   * @interface IReqGetGainMode
   */

  /**
   * Constructs a new ReqGetGainMode.
   * @exports ReqGetGainMode
   * @classdesc Represents a ReqGetGainMode.
   * @implements IReqGetGainMode
   * @constructor
   * @param {IReqGetGainMode=} [properties] Properties to set
   */
  function ReqGetGainMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetGainMode instance using the specified properties.
   * @function create
   * @memberof ReqGetGainMode
   * @static
   * @param {IReqGetGainMode=} [properties] Properties to set
   * @returns {ReqGetGainMode} ReqGetGainMode instance
   */
  ReqGetGainMode.create = function create(properties) {
    return new ReqGetGainMode(properties);
  };

  /**
   * Encodes the specified ReqGetGainMode message. Does not implicitly {@link ReqGetGainMode.verify|verify} messages.
   * @function encode
   * @memberof ReqGetGainMode
   * @static
   * @param {IReqGetGainMode} message ReqGetGainMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetGainMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetGainMode message, length delimited. Does not implicitly {@link ReqGetGainMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetGainMode
   * @static
   * @param {IReqGetGainMode} message ReqGetGainMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetGainMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetGainMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetGainMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetGainMode} ReqGetGainMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetGainMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetGainMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetGainMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetGainMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetGainMode} ReqGetGainMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetGainMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetGainMode message.
   * @function verify
   * @memberof ReqGetGainMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetGainMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetGainMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetGainMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetGainMode} ReqGetGainMode
   */
  ReqGetGainMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetGainMode) return object;
    return new $root.ReqGetGainMode();
  };

  /**
   * Creates a plain object from a ReqGetGainMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetGainMode
   * @static
   * @param {ReqGetGainMode} message ReqGetGainMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetGainMode.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetGainMode to JSON.
   * @function toJSON
   * @memberof ReqGetGainMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetGainMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetGainMode
   * @function getTypeUrl
   * @memberof ReqGetGainMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetGainMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetGainMode";
  };

  return ReqGetGainMode;
})();

$root.ReqSetGain = (function () {
  /**
   * Properties of a ReqSetGain.
   * @exports IReqSetGain
   * @interface IReqSetGain
   * @property {number|null} [index] ReqSetGain index
   */

  /**
   * Constructs a new ReqSetGain.
   * @exports ReqSetGain
   * @classdesc Represents a ReqSetGain.
   * @implements IReqSetGain
   * @constructor
   * @param {IReqSetGain=} [properties] Properties to set
   */
  function ReqSetGain(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetGain index.
   * @member {number} index
   * @memberof ReqSetGain
   * @instance
   */
  ReqSetGain.prototype.index = 0;

  /**
   * Creates a new ReqSetGain instance using the specified properties.
   * @function create
   * @memberof ReqSetGain
   * @static
   * @param {IReqSetGain=} [properties] Properties to set
   * @returns {ReqSetGain} ReqSetGain instance
   */
  ReqSetGain.create = function create(properties) {
    return new ReqSetGain(properties);
  };

  /**
   * Encodes the specified ReqSetGain message. Does not implicitly {@link ReqSetGain.verify|verify} messages.
   * @function encode
   * @memberof ReqSetGain
   * @static
   * @param {IReqSetGain} message ReqSetGain message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetGain.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.index != null && Object.hasOwnProperty.call(message, "index"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.index);
    return writer;
  };

  /**
   * Encodes the specified ReqSetGain message, length delimited. Does not implicitly {@link ReqSetGain.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetGain
   * @static
   * @param {IReqSetGain} message ReqSetGain message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetGain.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetGain message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetGain
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetGain} ReqSetGain
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetGain.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetGain();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.index = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetGain message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetGain
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetGain} ReqSetGain
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetGain.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetGain message.
   * @function verify
   * @memberof ReqSetGain
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetGain.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.index != null && message.hasOwnProperty("index"))
      if (!$util.isInteger(message.index)) return "index: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetGain message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetGain
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetGain} ReqSetGain
   */
  ReqSetGain.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetGain) return object;
    var message = new $root.ReqSetGain();
    if (object.index != null) message.index = object.index | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetGain message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetGain
   * @static
   * @param {ReqSetGain} message ReqSetGain
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetGain.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.index = 0;
    if (message.index != null && message.hasOwnProperty("index"))
      object.index = message.index;
    return object;
  };

  /**
   * Converts this ReqSetGain to JSON.
   * @function toJSON
   * @memberof ReqSetGain
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetGain.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetGain
   * @function getTypeUrl
   * @memberof ReqSetGain
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetGain.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetGain";
  };

  return ReqSetGain;
})();

$root.ReqGetGain = (function () {
  /**
   * Properties of a ReqGetGain.
   * @exports IReqGetGain
   * @interface IReqGetGain
   */

  /**
   * Constructs a new ReqGetGain.
   * @exports ReqGetGain
   * @classdesc Represents a ReqGetGain.
   * @implements IReqGetGain
   * @constructor
   * @param {IReqGetGain=} [properties] Properties to set
   */
  function ReqGetGain(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetGain instance using the specified properties.
   * @function create
   * @memberof ReqGetGain
   * @static
   * @param {IReqGetGain=} [properties] Properties to set
   * @returns {ReqGetGain} ReqGetGain instance
   */
  ReqGetGain.create = function create(properties) {
    return new ReqGetGain(properties);
  };

  /**
   * Encodes the specified ReqGetGain message. Does not implicitly {@link ReqGetGain.verify|verify} messages.
   * @function encode
   * @memberof ReqGetGain
   * @static
   * @param {IReqGetGain} message ReqGetGain message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetGain.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetGain message, length delimited. Does not implicitly {@link ReqGetGain.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetGain
   * @static
   * @param {IReqGetGain} message ReqGetGain message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetGain.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetGain message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetGain
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetGain} ReqGetGain
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetGain.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetGain();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetGain message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetGain
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetGain} ReqGetGain
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetGain.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetGain message.
   * @function verify
   * @memberof ReqGetGain
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetGain.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetGain message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetGain
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetGain} ReqGetGain
   */
  ReqGetGain.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetGain) return object;
    return new $root.ReqGetGain();
  };

  /**
   * Creates a plain object from a ReqGetGain message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetGain
   * @static
   * @param {ReqGetGain} message ReqGetGain
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetGain.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetGain to JSON.
   * @function toJSON
   * @memberof ReqGetGain
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetGain.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetGain
   * @function getTypeUrl
   * @memberof ReqGetGain
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetGain.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetGain";
  };

  return ReqGetGain;
})();

$root.ReqSetBrightness = (function () {
  /**
   * Properties of a ReqSetBrightness.
   * @exports IReqSetBrightness
   * @interface IReqSetBrightness
   * @property {number|null} [value] ReqSetBrightness value
   */

  /**
   * Constructs a new ReqSetBrightness.
   * @exports ReqSetBrightness
   * @classdesc Represents a ReqSetBrightness.
   * @implements IReqSetBrightness
   * @constructor
   * @param {IReqSetBrightness=} [properties] Properties to set
   */
  function ReqSetBrightness(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetBrightness value.
   * @member {number} value
   * @memberof ReqSetBrightness
   * @instance
   */
  ReqSetBrightness.prototype.value = 0;

  /**
   * Creates a new ReqSetBrightness instance using the specified properties.
   * @function create
   * @memberof ReqSetBrightness
   * @static
   * @param {IReqSetBrightness=} [properties] Properties to set
   * @returns {ReqSetBrightness} ReqSetBrightness instance
   */
  ReqSetBrightness.create = function create(properties) {
    return new ReqSetBrightness(properties);
  };

  /**
   * Encodes the specified ReqSetBrightness message. Does not implicitly {@link ReqSetBrightness.verify|verify} messages.
   * @function encode
   * @memberof ReqSetBrightness
   * @static
   * @param {IReqSetBrightness} message ReqSetBrightness message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetBrightness.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.value);
    return writer;
  };

  /**
   * Encodes the specified ReqSetBrightness message, length delimited. Does not implicitly {@link ReqSetBrightness.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetBrightness
   * @static
   * @param {IReqSetBrightness} message ReqSetBrightness message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetBrightness.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetBrightness message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetBrightness
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetBrightness} ReqSetBrightness
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetBrightness.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetBrightness();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetBrightness message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetBrightness
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetBrightness} ReqSetBrightness
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetBrightness.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetBrightness message.
   * @function verify
   * @memberof ReqSetBrightness
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetBrightness.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isInteger(message.value)) return "value: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetBrightness message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetBrightness
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetBrightness} ReqSetBrightness
   */
  ReqSetBrightness.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetBrightness) return object;
    var message = new $root.ReqSetBrightness();
    if (object.value != null) message.value = object.value | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetBrightness message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetBrightness
   * @static
   * @param {ReqSetBrightness} message ReqSetBrightness
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetBrightness.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.value = 0;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ReqSetBrightness to JSON.
   * @function toJSON
   * @memberof ReqSetBrightness
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetBrightness.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetBrightness
   * @function getTypeUrl
   * @memberof ReqSetBrightness
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetBrightness.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetBrightness";
  };

  return ReqSetBrightness;
})();

$root.ReqGetBrightness = (function () {
  /**
   * Properties of a ReqGetBrightness.
   * @exports IReqGetBrightness
   * @interface IReqGetBrightness
   */

  /**
   * Constructs a new ReqGetBrightness.
   * @exports ReqGetBrightness
   * @classdesc Represents a ReqGetBrightness.
   * @implements IReqGetBrightness
   * @constructor
   * @param {IReqGetBrightness=} [properties] Properties to set
   */
  function ReqGetBrightness(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetBrightness instance using the specified properties.
   * @function create
   * @memberof ReqGetBrightness
   * @static
   * @param {IReqGetBrightness=} [properties] Properties to set
   * @returns {ReqGetBrightness} ReqGetBrightness instance
   */
  ReqGetBrightness.create = function create(properties) {
    return new ReqGetBrightness(properties);
  };

  /**
   * Encodes the specified ReqGetBrightness message. Does not implicitly {@link ReqGetBrightness.verify|verify} messages.
   * @function encode
   * @memberof ReqGetBrightness
   * @static
   * @param {IReqGetBrightness} message ReqGetBrightness message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetBrightness.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetBrightness message, length delimited. Does not implicitly {@link ReqGetBrightness.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetBrightness
   * @static
   * @param {IReqGetBrightness} message ReqGetBrightness message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetBrightness.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetBrightness message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetBrightness
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetBrightness} ReqGetBrightness
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetBrightness.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetBrightness();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetBrightness message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetBrightness
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetBrightness} ReqGetBrightness
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetBrightness.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetBrightness message.
   * @function verify
   * @memberof ReqGetBrightness
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetBrightness.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetBrightness message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetBrightness
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetBrightness} ReqGetBrightness
   */
  ReqGetBrightness.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetBrightness) return object;
    return new $root.ReqGetBrightness();
  };

  /**
   * Creates a plain object from a ReqGetBrightness message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetBrightness
   * @static
   * @param {ReqGetBrightness} message ReqGetBrightness
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetBrightness.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetBrightness to JSON.
   * @function toJSON
   * @memberof ReqGetBrightness
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetBrightness.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetBrightness
   * @function getTypeUrl
   * @memberof ReqGetBrightness
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetBrightness.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetBrightness";
  };

  return ReqGetBrightness;
})();

$root.ReqSetContrast = (function () {
  /**
   * Properties of a ReqSetContrast.
   * @exports IReqSetContrast
   * @interface IReqSetContrast
   * @property {number|null} [value] ReqSetContrast value
   */

  /**
   * Constructs a new ReqSetContrast.
   * @exports ReqSetContrast
   * @classdesc Represents a ReqSetContrast.
   * @implements IReqSetContrast
   * @constructor
   * @param {IReqSetContrast=} [properties] Properties to set
   */
  function ReqSetContrast(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetContrast value.
   * @member {number} value
   * @memberof ReqSetContrast
   * @instance
   */
  ReqSetContrast.prototype.value = 0;

  /**
   * Creates a new ReqSetContrast instance using the specified properties.
   * @function create
   * @memberof ReqSetContrast
   * @static
   * @param {IReqSetContrast=} [properties] Properties to set
   * @returns {ReqSetContrast} ReqSetContrast instance
   */
  ReqSetContrast.create = function create(properties) {
    return new ReqSetContrast(properties);
  };

  /**
   * Encodes the specified ReqSetContrast message. Does not implicitly {@link ReqSetContrast.verify|verify} messages.
   * @function encode
   * @memberof ReqSetContrast
   * @static
   * @param {IReqSetContrast} message ReqSetContrast message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetContrast.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.value);
    return writer;
  };

  /**
   * Encodes the specified ReqSetContrast message, length delimited. Does not implicitly {@link ReqSetContrast.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetContrast
   * @static
   * @param {IReqSetContrast} message ReqSetContrast message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetContrast.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetContrast message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetContrast
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetContrast} ReqSetContrast
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetContrast.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetContrast();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetContrast message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetContrast
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetContrast} ReqSetContrast
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetContrast.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetContrast message.
   * @function verify
   * @memberof ReqSetContrast
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetContrast.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isInteger(message.value)) return "value: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetContrast message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetContrast
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetContrast} ReqSetContrast
   */
  ReqSetContrast.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetContrast) return object;
    var message = new $root.ReqSetContrast();
    if (object.value != null) message.value = object.value | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetContrast message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetContrast
   * @static
   * @param {ReqSetContrast} message ReqSetContrast
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetContrast.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.value = 0;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ReqSetContrast to JSON.
   * @function toJSON
   * @memberof ReqSetContrast
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetContrast.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetContrast
   * @function getTypeUrl
   * @memberof ReqSetContrast
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetContrast.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetContrast";
  };

  return ReqSetContrast;
})();

$root.ReqGetContrast = (function () {
  /**
   * Properties of a ReqGetContrast.
   * @exports IReqGetContrast
   * @interface IReqGetContrast
   */

  /**
   * Constructs a new ReqGetContrast.
   * @exports ReqGetContrast
   * @classdesc Represents a ReqGetContrast.
   * @implements IReqGetContrast
   * @constructor
   * @param {IReqGetContrast=} [properties] Properties to set
   */
  function ReqGetContrast(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetContrast instance using the specified properties.
   * @function create
   * @memberof ReqGetContrast
   * @static
   * @param {IReqGetContrast=} [properties] Properties to set
   * @returns {ReqGetContrast} ReqGetContrast instance
   */
  ReqGetContrast.create = function create(properties) {
    return new ReqGetContrast(properties);
  };

  /**
   * Encodes the specified ReqGetContrast message. Does not implicitly {@link ReqGetContrast.verify|verify} messages.
   * @function encode
   * @memberof ReqGetContrast
   * @static
   * @param {IReqGetContrast} message ReqGetContrast message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetContrast.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetContrast message, length delimited. Does not implicitly {@link ReqGetContrast.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetContrast
   * @static
   * @param {IReqGetContrast} message ReqGetContrast message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetContrast.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetContrast message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetContrast
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetContrast} ReqGetContrast
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetContrast.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetContrast();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetContrast message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetContrast
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetContrast} ReqGetContrast
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetContrast.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetContrast message.
   * @function verify
   * @memberof ReqGetContrast
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetContrast.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetContrast message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetContrast
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetContrast} ReqGetContrast
   */
  ReqGetContrast.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetContrast) return object;
    return new $root.ReqGetContrast();
  };

  /**
   * Creates a plain object from a ReqGetContrast message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetContrast
   * @static
   * @param {ReqGetContrast} message ReqGetContrast
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetContrast.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetContrast to JSON.
   * @function toJSON
   * @memberof ReqGetContrast
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetContrast.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetContrast
   * @function getTypeUrl
   * @memberof ReqGetContrast
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetContrast.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetContrast";
  };

  return ReqGetContrast;
})();

$root.ReqSetHue = (function () {
  /**
   * Properties of a ReqSetHue.
   * @exports IReqSetHue
   * @interface IReqSetHue
   * @property {number|null} [value] ReqSetHue value
   */

  /**
   * Constructs a new ReqSetHue.
   * @exports ReqSetHue
   * @classdesc Represents a ReqSetHue.
   * @implements IReqSetHue
   * @constructor
   * @param {IReqSetHue=} [properties] Properties to set
   */
  function ReqSetHue(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetHue value.
   * @member {number} value
   * @memberof ReqSetHue
   * @instance
   */
  ReqSetHue.prototype.value = 0;

  /**
   * Creates a new ReqSetHue instance using the specified properties.
   * @function create
   * @memberof ReqSetHue
   * @static
   * @param {IReqSetHue=} [properties] Properties to set
   * @returns {ReqSetHue} ReqSetHue instance
   */
  ReqSetHue.create = function create(properties) {
    return new ReqSetHue(properties);
  };

  /**
   * Encodes the specified ReqSetHue message. Does not implicitly {@link ReqSetHue.verify|verify} messages.
   * @function encode
   * @memberof ReqSetHue
   * @static
   * @param {IReqSetHue} message ReqSetHue message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetHue.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.value);
    return writer;
  };

  /**
   * Encodes the specified ReqSetHue message, length delimited. Does not implicitly {@link ReqSetHue.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetHue
   * @static
   * @param {IReqSetHue} message ReqSetHue message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetHue.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetHue message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetHue
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetHue} ReqSetHue
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetHue.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetHue();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetHue message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetHue
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetHue} ReqSetHue
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetHue.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetHue message.
   * @function verify
   * @memberof ReqSetHue
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetHue.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isInteger(message.value)) return "value: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetHue message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetHue
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetHue} ReqSetHue
   */
  ReqSetHue.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetHue) return object;
    var message = new $root.ReqSetHue();
    if (object.value != null) message.value = object.value | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetHue message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetHue
   * @static
   * @param {ReqSetHue} message ReqSetHue
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetHue.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.value = 0;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ReqSetHue to JSON.
   * @function toJSON
   * @memberof ReqSetHue
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetHue.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetHue
   * @function getTypeUrl
   * @memberof ReqSetHue
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetHue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetHue";
  };

  return ReqSetHue;
})();

$root.ReqGetHue = (function () {
  /**
   * Properties of a ReqGetHue.
   * @exports IReqGetHue
   * @interface IReqGetHue
   */

  /**
   * Constructs a new ReqGetHue.
   * @exports ReqGetHue
   * @classdesc Represents a ReqGetHue.
   * @implements IReqGetHue
   * @constructor
   * @param {IReqGetHue=} [properties] Properties to set
   */
  function ReqGetHue(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetHue instance using the specified properties.
   * @function create
   * @memberof ReqGetHue
   * @static
   * @param {IReqGetHue=} [properties] Properties to set
   * @returns {ReqGetHue} ReqGetHue instance
   */
  ReqGetHue.create = function create(properties) {
    return new ReqGetHue(properties);
  };

  /**
   * Encodes the specified ReqGetHue message. Does not implicitly {@link ReqGetHue.verify|verify} messages.
   * @function encode
   * @memberof ReqGetHue
   * @static
   * @param {IReqGetHue} message ReqGetHue message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetHue.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetHue message, length delimited. Does not implicitly {@link ReqGetHue.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetHue
   * @static
   * @param {IReqGetHue} message ReqGetHue message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetHue.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetHue message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetHue
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetHue} ReqGetHue
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetHue.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetHue();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetHue message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetHue
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetHue} ReqGetHue
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetHue.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetHue message.
   * @function verify
   * @memberof ReqGetHue
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetHue.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetHue message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetHue
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetHue} ReqGetHue
   */
  ReqGetHue.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetHue) return object;
    return new $root.ReqGetHue();
  };

  /**
   * Creates a plain object from a ReqGetHue message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetHue
   * @static
   * @param {ReqGetHue} message ReqGetHue
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetHue.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetHue to JSON.
   * @function toJSON
   * @memberof ReqGetHue
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetHue.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetHue
   * @function getTypeUrl
   * @memberof ReqGetHue
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetHue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetHue";
  };

  return ReqGetHue;
})();

$root.ReqSetSaturation = (function () {
  /**
   * Properties of a ReqSetSaturation.
   * @exports IReqSetSaturation
   * @interface IReqSetSaturation
   * @property {number|null} [value] ReqSetSaturation value
   */

  /**
   * Constructs a new ReqSetSaturation.
   * @exports ReqSetSaturation
   * @classdesc Represents a ReqSetSaturation.
   * @implements IReqSetSaturation
   * @constructor
   * @param {IReqSetSaturation=} [properties] Properties to set
   */
  function ReqSetSaturation(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetSaturation value.
   * @member {number} value
   * @memberof ReqSetSaturation
   * @instance
   */
  ReqSetSaturation.prototype.value = 0;

  /**
   * Creates a new ReqSetSaturation instance using the specified properties.
   * @function create
   * @memberof ReqSetSaturation
   * @static
   * @param {IReqSetSaturation=} [properties] Properties to set
   * @returns {ReqSetSaturation} ReqSetSaturation instance
   */
  ReqSetSaturation.create = function create(properties) {
    return new ReqSetSaturation(properties);
  };

  /**
   * Encodes the specified ReqSetSaturation message. Does not implicitly {@link ReqSetSaturation.verify|verify} messages.
   * @function encode
   * @memberof ReqSetSaturation
   * @static
   * @param {IReqSetSaturation} message ReqSetSaturation message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetSaturation.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.value);
    return writer;
  };

  /**
   * Encodes the specified ReqSetSaturation message, length delimited. Does not implicitly {@link ReqSetSaturation.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetSaturation
   * @static
   * @param {IReqSetSaturation} message ReqSetSaturation message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetSaturation.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetSaturation message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetSaturation
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetSaturation} ReqSetSaturation
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetSaturation.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetSaturation();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetSaturation message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetSaturation
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetSaturation} ReqSetSaturation
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetSaturation.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetSaturation message.
   * @function verify
   * @memberof ReqSetSaturation
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetSaturation.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isInteger(message.value)) return "value: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetSaturation message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetSaturation
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetSaturation} ReqSetSaturation
   */
  ReqSetSaturation.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetSaturation) return object;
    var message = new $root.ReqSetSaturation();
    if (object.value != null) message.value = object.value | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetSaturation message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetSaturation
   * @static
   * @param {ReqSetSaturation} message ReqSetSaturation
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetSaturation.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.value = 0;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ReqSetSaturation to JSON.
   * @function toJSON
   * @memberof ReqSetSaturation
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetSaturation.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetSaturation
   * @function getTypeUrl
   * @memberof ReqSetSaturation
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetSaturation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetSaturation";
  };

  return ReqSetSaturation;
})();

$root.ReqGetSaturation = (function () {
  /**
   * Properties of a ReqGetSaturation.
   * @exports IReqGetSaturation
   * @interface IReqGetSaturation
   */

  /**
   * Constructs a new ReqGetSaturation.
   * @exports ReqGetSaturation
   * @classdesc Represents a ReqGetSaturation.
   * @implements IReqGetSaturation
   * @constructor
   * @param {IReqGetSaturation=} [properties] Properties to set
   */
  function ReqGetSaturation(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetSaturation instance using the specified properties.
   * @function create
   * @memberof ReqGetSaturation
   * @static
   * @param {IReqGetSaturation=} [properties] Properties to set
   * @returns {ReqGetSaturation} ReqGetSaturation instance
   */
  ReqGetSaturation.create = function create(properties) {
    return new ReqGetSaturation(properties);
  };

  /**
   * Encodes the specified ReqGetSaturation message. Does not implicitly {@link ReqGetSaturation.verify|verify} messages.
   * @function encode
   * @memberof ReqGetSaturation
   * @static
   * @param {IReqGetSaturation} message ReqGetSaturation message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetSaturation.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetSaturation message, length delimited. Does not implicitly {@link ReqGetSaturation.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetSaturation
   * @static
   * @param {IReqGetSaturation} message ReqGetSaturation message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetSaturation.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetSaturation message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetSaturation
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetSaturation} ReqGetSaturation
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetSaturation.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetSaturation();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetSaturation message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetSaturation
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetSaturation} ReqGetSaturation
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetSaturation.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetSaturation message.
   * @function verify
   * @memberof ReqGetSaturation
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetSaturation.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetSaturation message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetSaturation
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetSaturation} ReqGetSaturation
   */
  ReqGetSaturation.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetSaturation) return object;
    return new $root.ReqGetSaturation();
  };

  /**
   * Creates a plain object from a ReqGetSaturation message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetSaturation
   * @static
   * @param {ReqGetSaturation} message ReqGetSaturation
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetSaturation.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetSaturation to JSON.
   * @function toJSON
   * @memberof ReqGetSaturation
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetSaturation.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetSaturation
   * @function getTypeUrl
   * @memberof ReqGetSaturation
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetSaturation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetSaturation";
  };

  return ReqGetSaturation;
})();

$root.ReqSetSharpness = (function () {
  /**
   * Properties of a ReqSetSharpness.
   * @exports IReqSetSharpness
   * @interface IReqSetSharpness
   * @property {number|null} [value] ReqSetSharpness value
   */

  /**
   * Constructs a new ReqSetSharpness.
   * @exports ReqSetSharpness
   * @classdesc Represents a ReqSetSharpness.
   * @implements IReqSetSharpness
   * @constructor
   * @param {IReqSetSharpness=} [properties] Properties to set
   */
  function ReqSetSharpness(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetSharpness value.
   * @member {number} value
   * @memberof ReqSetSharpness
   * @instance
   */
  ReqSetSharpness.prototype.value = 0;

  /**
   * Creates a new ReqSetSharpness instance using the specified properties.
   * @function create
   * @memberof ReqSetSharpness
   * @static
   * @param {IReqSetSharpness=} [properties] Properties to set
   * @returns {ReqSetSharpness} ReqSetSharpness instance
   */
  ReqSetSharpness.create = function create(properties) {
    return new ReqSetSharpness(properties);
  };

  /**
   * Encodes the specified ReqSetSharpness message. Does not implicitly {@link ReqSetSharpness.verify|verify} messages.
   * @function encode
   * @memberof ReqSetSharpness
   * @static
   * @param {IReqSetSharpness} message ReqSetSharpness message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetSharpness.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.value);
    return writer;
  };

  /**
   * Encodes the specified ReqSetSharpness message, length delimited. Does not implicitly {@link ReqSetSharpness.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetSharpness
   * @static
   * @param {IReqSetSharpness} message ReqSetSharpness message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetSharpness.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetSharpness message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetSharpness
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetSharpness} ReqSetSharpness
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetSharpness.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetSharpness();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetSharpness message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetSharpness
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetSharpness} ReqSetSharpness
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetSharpness.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetSharpness message.
   * @function verify
   * @memberof ReqSetSharpness
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetSharpness.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isInteger(message.value)) return "value: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetSharpness message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetSharpness
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetSharpness} ReqSetSharpness
   */
  ReqSetSharpness.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetSharpness) return object;
    var message = new $root.ReqSetSharpness();
    if (object.value != null) message.value = object.value | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetSharpness message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetSharpness
   * @static
   * @param {ReqSetSharpness} message ReqSetSharpness
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetSharpness.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.value = 0;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ReqSetSharpness to JSON.
   * @function toJSON
   * @memberof ReqSetSharpness
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetSharpness.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetSharpness
   * @function getTypeUrl
   * @memberof ReqSetSharpness
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetSharpness.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetSharpness";
  };

  return ReqSetSharpness;
})();

$root.ReqGetSharpness = (function () {
  /**
   * Properties of a ReqGetSharpness.
   * @exports IReqGetSharpness
   * @interface IReqGetSharpness
   */

  /**
   * Constructs a new ReqGetSharpness.
   * @exports ReqGetSharpness
   * @classdesc Represents a ReqGetSharpness.
   * @implements IReqGetSharpness
   * @constructor
   * @param {IReqGetSharpness=} [properties] Properties to set
   */
  function ReqGetSharpness(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetSharpness instance using the specified properties.
   * @function create
   * @memberof ReqGetSharpness
   * @static
   * @param {IReqGetSharpness=} [properties] Properties to set
   * @returns {ReqGetSharpness} ReqGetSharpness instance
   */
  ReqGetSharpness.create = function create(properties) {
    return new ReqGetSharpness(properties);
  };

  /**
   * Encodes the specified ReqGetSharpness message. Does not implicitly {@link ReqGetSharpness.verify|verify} messages.
   * @function encode
   * @memberof ReqGetSharpness
   * @static
   * @param {IReqGetSharpness} message ReqGetSharpness message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetSharpness.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetSharpness message, length delimited. Does not implicitly {@link ReqGetSharpness.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetSharpness
   * @static
   * @param {IReqGetSharpness} message ReqGetSharpness message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetSharpness.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetSharpness message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetSharpness
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetSharpness} ReqGetSharpness
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetSharpness.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetSharpness();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetSharpness message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetSharpness
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetSharpness} ReqGetSharpness
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetSharpness.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetSharpness message.
   * @function verify
   * @memberof ReqGetSharpness
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetSharpness.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetSharpness message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetSharpness
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetSharpness} ReqGetSharpness
   */
  ReqGetSharpness.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetSharpness) return object;
    return new $root.ReqGetSharpness();
  };

  /**
   * Creates a plain object from a ReqGetSharpness message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetSharpness
   * @static
   * @param {ReqGetSharpness} message ReqGetSharpness
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetSharpness.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetSharpness to JSON.
   * @function toJSON
   * @memberof ReqGetSharpness
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetSharpness.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetSharpness
   * @function getTypeUrl
   * @memberof ReqGetSharpness
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetSharpness.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetSharpness";
  };

  return ReqGetSharpness;
})();

$root.ReqSetWBMode = (function () {
  /**
   * Properties of a ReqSetWBMode.
   * @exports IReqSetWBMode
   * @interface IReqSetWBMode
   * @property {number|null} [mode] ReqSetWBMode mode
   */

  /**
   * Constructs a new ReqSetWBMode.
   * @exports ReqSetWBMode
   * @classdesc Represents a ReqSetWBMode.
   * @implements IReqSetWBMode
   * @constructor
   * @param {IReqSetWBMode=} [properties] Properties to set
   */
  function ReqSetWBMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetWBMode mode.
   * @member {number} mode
   * @memberof ReqSetWBMode
   * @instance
   */
  ReqSetWBMode.prototype.mode = 0;

  /**
   * Creates a new ReqSetWBMode instance using the specified properties.
   * @function create
   * @memberof ReqSetWBMode
   * @static
   * @param {IReqSetWBMode=} [properties] Properties to set
   * @returns {ReqSetWBMode} ReqSetWBMode instance
   */
  ReqSetWBMode.create = function create(properties) {
    return new ReqSetWBMode(properties);
  };

  /**
   * Encodes the specified ReqSetWBMode message. Does not implicitly {@link ReqSetWBMode.verify|verify} messages.
   * @function encode
   * @memberof ReqSetWBMode
   * @static
   * @param {IReqSetWBMode} message ReqSetWBMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetWBMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ReqSetWBMode message, length delimited. Does not implicitly {@link ReqSetWBMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetWBMode
   * @static
   * @param {IReqSetWBMode} message ReqSetWBMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetWBMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetWBMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetWBMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetWBMode} ReqSetWBMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetWBMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetWBMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetWBMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetWBMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetWBMode} ReqSetWBMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetWBMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetWBMode message.
   * @function verify
   * @memberof ReqSetWBMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetWBMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetWBMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetWBMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetWBMode} ReqSetWBMode
   */
  ReqSetWBMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetWBMode) return object;
    var message = new $root.ReqSetWBMode();
    if (object.mode != null) message.mode = object.mode | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetWBMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetWBMode
   * @static
   * @param {ReqSetWBMode} message ReqSetWBMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetWBMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ReqSetWBMode to JSON.
   * @function toJSON
   * @memberof ReqSetWBMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetWBMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetWBMode
   * @function getTypeUrl
   * @memberof ReqSetWBMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetWBMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetWBMode";
  };

  return ReqSetWBMode;
})();

$root.ReqGetWBMode = (function () {
  /**
   * Properties of a ReqGetWBMode.
   * @exports IReqGetWBMode
   * @interface IReqGetWBMode
   */

  /**
   * Constructs a new ReqGetWBMode.
   * @exports ReqGetWBMode
   * @classdesc Represents a ReqGetWBMode.
   * @implements IReqGetWBMode
   * @constructor
   * @param {IReqGetWBMode=} [properties] Properties to set
   */
  function ReqGetWBMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetWBMode instance using the specified properties.
   * @function create
   * @memberof ReqGetWBMode
   * @static
   * @param {IReqGetWBMode=} [properties] Properties to set
   * @returns {ReqGetWBMode} ReqGetWBMode instance
   */
  ReqGetWBMode.create = function create(properties) {
    return new ReqGetWBMode(properties);
  };

  /**
   * Encodes the specified ReqGetWBMode message. Does not implicitly {@link ReqGetWBMode.verify|verify} messages.
   * @function encode
   * @memberof ReqGetWBMode
   * @static
   * @param {IReqGetWBMode} message ReqGetWBMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetWBMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetWBMode message, length delimited. Does not implicitly {@link ReqGetWBMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetWBMode
   * @static
   * @param {IReqGetWBMode} message ReqGetWBMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetWBMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetWBMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetWBMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetWBMode} ReqGetWBMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetWBMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetWBMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetWBMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetWBMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetWBMode} ReqGetWBMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetWBMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetWBMode message.
   * @function verify
   * @memberof ReqGetWBMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetWBMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetWBMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetWBMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetWBMode} ReqGetWBMode
   */
  ReqGetWBMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetWBMode) return object;
    return new $root.ReqGetWBMode();
  };

  /**
   * Creates a plain object from a ReqGetWBMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetWBMode
   * @static
   * @param {ReqGetWBMode} message ReqGetWBMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetWBMode.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetWBMode to JSON.
   * @function toJSON
   * @memberof ReqGetWBMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetWBMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetWBMode
   * @function getTypeUrl
   * @memberof ReqGetWBMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetWBMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetWBMode";
  };

  return ReqGetWBMode;
})();

$root.ReqSetWBSence = (function () {
  /**
   * Properties of a ReqSetWBSence.
   * @exports IReqSetWBSence
   * @interface IReqSetWBSence
   * @property {number|null} [value] ReqSetWBSence value
   */

  /**
   * Constructs a new ReqSetWBSence.
   * @exports ReqSetWBSence
   * @classdesc Represents a ReqSetWBSence.
   * @implements IReqSetWBSence
   * @constructor
   * @param {IReqSetWBSence=} [properties] Properties to set
   */
  function ReqSetWBSence(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetWBSence value.
   * @member {number} value
   * @memberof ReqSetWBSence
   * @instance
   */
  ReqSetWBSence.prototype.value = 0;

  /**
   * Creates a new ReqSetWBSence instance using the specified properties.
   * @function create
   * @memberof ReqSetWBSence
   * @static
   * @param {IReqSetWBSence=} [properties] Properties to set
   * @returns {ReqSetWBSence} ReqSetWBSence instance
   */
  ReqSetWBSence.create = function create(properties) {
    return new ReqSetWBSence(properties);
  };

  /**
   * Encodes the specified ReqSetWBSence message. Does not implicitly {@link ReqSetWBSence.verify|verify} messages.
   * @function encode
   * @memberof ReqSetWBSence
   * @static
   * @param {IReqSetWBSence} message ReqSetWBSence message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetWBSence.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.value);
    return writer;
  };

  /**
   * Encodes the specified ReqSetWBSence message, length delimited. Does not implicitly {@link ReqSetWBSence.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetWBSence
   * @static
   * @param {IReqSetWBSence} message ReqSetWBSence message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetWBSence.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetWBSence message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetWBSence
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetWBSence} ReqSetWBSence
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetWBSence.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetWBSence();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetWBSence message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetWBSence
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetWBSence} ReqSetWBSence
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetWBSence.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetWBSence message.
   * @function verify
   * @memberof ReqSetWBSence
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetWBSence.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isInteger(message.value)) return "value: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetWBSence message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetWBSence
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetWBSence} ReqSetWBSence
   */
  ReqSetWBSence.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetWBSence) return object;
    var message = new $root.ReqSetWBSence();
    if (object.value != null) message.value = object.value | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetWBSence message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetWBSence
   * @static
   * @param {ReqSetWBSence} message ReqSetWBSence
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetWBSence.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.value = 0;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ReqSetWBSence to JSON.
   * @function toJSON
   * @memberof ReqSetWBSence
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetWBSence.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetWBSence
   * @function getTypeUrl
   * @memberof ReqSetWBSence
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetWBSence.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetWBSence";
  };

  return ReqSetWBSence;
})();

$root.ReqGetWBSence = (function () {
  /**
   * Properties of a ReqGetWBSence.
   * @exports IReqGetWBSence
   * @interface IReqGetWBSence
   */

  /**
   * Constructs a new ReqGetWBSence.
   * @exports ReqGetWBSence
   * @classdesc Represents a ReqGetWBSence.
   * @implements IReqGetWBSence
   * @constructor
   * @param {IReqGetWBSence=} [properties] Properties to set
   */
  function ReqGetWBSence(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetWBSence instance using the specified properties.
   * @function create
   * @memberof ReqGetWBSence
   * @static
   * @param {IReqGetWBSence=} [properties] Properties to set
   * @returns {ReqGetWBSence} ReqGetWBSence instance
   */
  ReqGetWBSence.create = function create(properties) {
    return new ReqGetWBSence(properties);
  };

  /**
   * Encodes the specified ReqGetWBSence message. Does not implicitly {@link ReqGetWBSence.verify|verify} messages.
   * @function encode
   * @memberof ReqGetWBSence
   * @static
   * @param {IReqGetWBSence} message ReqGetWBSence message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetWBSence.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetWBSence message, length delimited. Does not implicitly {@link ReqGetWBSence.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetWBSence
   * @static
   * @param {IReqGetWBSence} message ReqGetWBSence message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetWBSence.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetWBSence message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetWBSence
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetWBSence} ReqGetWBSence
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetWBSence.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetWBSence();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetWBSence message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetWBSence
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetWBSence} ReqGetWBSence
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetWBSence.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetWBSence message.
   * @function verify
   * @memberof ReqGetWBSence
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetWBSence.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetWBSence message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetWBSence
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetWBSence} ReqGetWBSence
   */
  ReqGetWBSence.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetWBSence) return object;
    return new $root.ReqGetWBSence();
  };

  /**
   * Creates a plain object from a ReqGetWBSence message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetWBSence
   * @static
   * @param {ReqGetWBSence} message ReqGetWBSence
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetWBSence.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetWBSence to JSON.
   * @function toJSON
   * @memberof ReqGetWBSence
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetWBSence.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetWBSence
   * @function getTypeUrl
   * @memberof ReqGetWBSence
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetWBSence.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetWBSence";
  };

  return ReqGetWBSence;
})();

$root.ReqSetWBCT = (function () {
  /**
   * Properties of a ReqSetWBCT.
   * @exports IReqSetWBCT
   * @interface IReqSetWBCT
   * @property {number|null} [index] ReqSetWBCT index
   */

  /**
   * Constructs a new ReqSetWBCT.
   * @exports ReqSetWBCT
   * @classdesc Represents a ReqSetWBCT.
   * @implements IReqSetWBCT
   * @constructor
   * @param {IReqSetWBCT=} [properties] Properties to set
   */
  function ReqSetWBCT(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetWBCT index.
   * @member {number} index
   * @memberof ReqSetWBCT
   * @instance
   */
  ReqSetWBCT.prototype.index = 0;

  /**
   * Creates a new ReqSetWBCT instance using the specified properties.
   * @function create
   * @memberof ReqSetWBCT
   * @static
   * @param {IReqSetWBCT=} [properties] Properties to set
   * @returns {ReqSetWBCT} ReqSetWBCT instance
   */
  ReqSetWBCT.create = function create(properties) {
    return new ReqSetWBCT(properties);
  };

  /**
   * Encodes the specified ReqSetWBCT message. Does not implicitly {@link ReqSetWBCT.verify|verify} messages.
   * @function encode
   * @memberof ReqSetWBCT
   * @static
   * @param {IReqSetWBCT} message ReqSetWBCT message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetWBCT.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.index != null && Object.hasOwnProperty.call(message, "index"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.index);
    return writer;
  };

  /**
   * Encodes the specified ReqSetWBCT message, length delimited. Does not implicitly {@link ReqSetWBCT.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetWBCT
   * @static
   * @param {IReqSetWBCT} message ReqSetWBCT message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetWBCT.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetWBCT message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetWBCT
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetWBCT} ReqSetWBCT
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetWBCT.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetWBCT();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.index = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetWBCT message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetWBCT
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetWBCT} ReqSetWBCT
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetWBCT.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetWBCT message.
   * @function verify
   * @memberof ReqSetWBCT
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetWBCT.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.index != null && message.hasOwnProperty("index"))
      if (!$util.isInteger(message.index)) return "index: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetWBCT message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetWBCT
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetWBCT} ReqSetWBCT
   */
  ReqSetWBCT.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetWBCT) return object;
    var message = new $root.ReqSetWBCT();
    if (object.index != null) message.index = object.index | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetWBCT message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetWBCT
   * @static
   * @param {ReqSetWBCT} message ReqSetWBCT
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetWBCT.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.index = 0;
    if (message.index != null && message.hasOwnProperty("index"))
      object.index = message.index;
    return object;
  };

  /**
   * Converts this ReqSetWBCT to JSON.
   * @function toJSON
   * @memberof ReqSetWBCT
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetWBCT.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetWBCT
   * @function getTypeUrl
   * @memberof ReqSetWBCT
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetWBCT.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetWBCT";
  };

  return ReqSetWBCT;
})();

$root.ReqGetWBCT = (function () {
  /**
   * Properties of a ReqGetWBCT.
   * @exports IReqGetWBCT
   * @interface IReqGetWBCT
   */

  /**
   * Constructs a new ReqGetWBCT.
   * @exports ReqGetWBCT
   * @classdesc Represents a ReqGetWBCT.
   * @implements IReqGetWBCT
   * @constructor
   * @param {IReqGetWBCT=} [properties] Properties to set
   */
  function ReqGetWBCT(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetWBCT instance using the specified properties.
   * @function create
   * @memberof ReqGetWBCT
   * @static
   * @param {IReqGetWBCT=} [properties] Properties to set
   * @returns {ReqGetWBCT} ReqGetWBCT instance
   */
  ReqGetWBCT.create = function create(properties) {
    return new ReqGetWBCT(properties);
  };

  /**
   * Encodes the specified ReqGetWBCT message. Does not implicitly {@link ReqGetWBCT.verify|verify} messages.
   * @function encode
   * @memberof ReqGetWBCT
   * @static
   * @param {IReqGetWBCT} message ReqGetWBCT message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetWBCT.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetWBCT message, length delimited. Does not implicitly {@link ReqGetWBCT.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetWBCT
   * @static
   * @param {IReqGetWBCT} message ReqGetWBCT message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetWBCT.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetWBCT message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetWBCT
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetWBCT} ReqGetWBCT
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetWBCT.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetWBCT();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetWBCT message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetWBCT
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetWBCT} ReqGetWBCT
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetWBCT.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetWBCT message.
   * @function verify
   * @memberof ReqGetWBCT
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetWBCT.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetWBCT message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetWBCT
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetWBCT} ReqGetWBCT
   */
  ReqGetWBCT.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetWBCT) return object;
    return new $root.ReqGetWBCT();
  };

  /**
   * Creates a plain object from a ReqGetWBCT message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetWBCT
   * @static
   * @param {ReqGetWBCT} message ReqGetWBCT
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetWBCT.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetWBCT to JSON.
   * @function toJSON
   * @memberof ReqGetWBCT
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetWBCT.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetWBCT
   * @function getTypeUrl
   * @memberof ReqGetWBCT
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetWBCT.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetWBCT";
  };

  return ReqGetWBCT;
})();

$root.ReqSetIrCut = (function () {
  /**
   * Properties of a ReqSetIrCut.
   * @exports IReqSetIrCut
   * @interface IReqSetIrCut
   * @property {number|null} [value] ReqSetIrCut value
   */

  /**
   * Constructs a new ReqSetIrCut.
   * @exports ReqSetIrCut
   * @classdesc Represents a ReqSetIrCut.
   * @implements IReqSetIrCut
   * @constructor
   * @param {IReqSetIrCut=} [properties] Properties to set
   */
  function ReqSetIrCut(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetIrCut value.
   * @member {number} value
   * @memberof ReqSetIrCut
   * @instance
   */
  ReqSetIrCut.prototype.value = 0;

  /**
   * Creates a new ReqSetIrCut instance using the specified properties.
   * @function create
   * @memberof ReqSetIrCut
   * @static
   * @param {IReqSetIrCut=} [properties] Properties to set
   * @returns {ReqSetIrCut} ReqSetIrCut instance
   */
  ReqSetIrCut.create = function create(properties) {
    return new ReqSetIrCut(properties);
  };

  /**
   * Encodes the specified ReqSetIrCut message. Does not implicitly {@link ReqSetIrCut.verify|verify} messages.
   * @function encode
   * @memberof ReqSetIrCut
   * @static
   * @param {IReqSetIrCut} message ReqSetIrCut message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetIrCut.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.value);
    return writer;
  };

  /**
   * Encodes the specified ReqSetIrCut message, length delimited. Does not implicitly {@link ReqSetIrCut.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetIrCut
   * @static
   * @param {IReqSetIrCut} message ReqSetIrCut message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetIrCut.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetIrCut message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetIrCut
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetIrCut} ReqSetIrCut
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetIrCut.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetIrCut();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.value = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetIrCut message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetIrCut
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetIrCut} ReqSetIrCut
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetIrCut.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetIrCut message.
   * @function verify
   * @memberof ReqSetIrCut
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetIrCut.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (!$util.isInteger(message.value)) return "value: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetIrCut message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetIrCut
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetIrCut} ReqSetIrCut
   */
  ReqSetIrCut.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetIrCut) return object;
    var message = new $root.ReqSetIrCut();
    if (object.value != null) message.value = object.value | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetIrCut message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetIrCut
   * @static
   * @param {ReqSetIrCut} message ReqSetIrCut
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetIrCut.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.value = 0;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value = message.value;
    return object;
  };

  /**
   * Converts this ReqSetIrCut to JSON.
   * @function toJSON
   * @memberof ReqSetIrCut
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetIrCut.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetIrCut
   * @function getTypeUrl
   * @memberof ReqSetIrCut
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetIrCut.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetIrCut";
  };

  return ReqSetIrCut;
})();

$root.ReqGetIrcut = (function () {
  /**
   * Properties of a ReqGetIrcut.
   * @exports IReqGetIrcut
   * @interface IReqGetIrcut
   */

  /**
   * Constructs a new ReqGetIrcut.
   * @exports ReqGetIrcut
   * @classdesc Represents a ReqGetIrcut.
   * @implements IReqGetIrcut
   * @constructor
   * @param {IReqGetIrcut=} [properties] Properties to set
   */
  function ReqGetIrcut(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetIrcut instance using the specified properties.
   * @function create
   * @memberof ReqGetIrcut
   * @static
   * @param {IReqGetIrcut=} [properties] Properties to set
   * @returns {ReqGetIrcut} ReqGetIrcut instance
   */
  ReqGetIrcut.create = function create(properties) {
    return new ReqGetIrcut(properties);
  };

  /**
   * Encodes the specified ReqGetIrcut message. Does not implicitly {@link ReqGetIrcut.verify|verify} messages.
   * @function encode
   * @memberof ReqGetIrcut
   * @static
   * @param {IReqGetIrcut} message ReqGetIrcut message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetIrcut.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetIrcut message, length delimited. Does not implicitly {@link ReqGetIrcut.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetIrcut
   * @static
   * @param {IReqGetIrcut} message ReqGetIrcut message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetIrcut.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetIrcut message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetIrcut
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetIrcut} ReqGetIrcut
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetIrcut.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetIrcut();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetIrcut message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetIrcut
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetIrcut} ReqGetIrcut
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetIrcut.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetIrcut message.
   * @function verify
   * @memberof ReqGetIrcut
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetIrcut.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetIrcut message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetIrcut
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetIrcut} ReqGetIrcut
   */
  ReqGetIrcut.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetIrcut) return object;
    return new $root.ReqGetIrcut();
  };

  /**
   * Creates a plain object from a ReqGetIrcut message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetIrcut
   * @static
   * @param {ReqGetIrcut} message ReqGetIrcut
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetIrcut.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetIrcut to JSON.
   * @function toJSON
   * @memberof ReqGetIrcut
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetIrcut.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetIrcut
   * @function getTypeUrl
   * @memberof ReqGetIrcut
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetIrcut.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetIrcut";
  };

  return ReqGetIrcut;
})();

$root.ReqStartTimeLapse = (function () {
  /**
   * Properties of a ReqStartTimeLapse.
   * @exports IReqStartTimeLapse
   * @interface IReqStartTimeLapse
   */

  /**
   * Constructs a new ReqStartTimeLapse.
   * @exports ReqStartTimeLapse
   * @classdesc Represents a ReqStartTimeLapse.
   * @implements IReqStartTimeLapse
   * @constructor
   * @param {IReqStartTimeLapse=} [properties] Properties to set
   */
  function ReqStartTimeLapse(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStartTimeLapse instance using the specified properties.
   * @function create
   * @memberof ReqStartTimeLapse
   * @static
   * @param {IReqStartTimeLapse=} [properties] Properties to set
   * @returns {ReqStartTimeLapse} ReqStartTimeLapse instance
   */
  ReqStartTimeLapse.create = function create(properties) {
    return new ReqStartTimeLapse(properties);
  };

  /**
   * Encodes the specified ReqStartTimeLapse message. Does not implicitly {@link ReqStartTimeLapse.verify|verify} messages.
   * @function encode
   * @memberof ReqStartTimeLapse
   * @static
   * @param {IReqStartTimeLapse} message ReqStartTimeLapse message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartTimeLapse.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStartTimeLapse message, length delimited. Does not implicitly {@link ReqStartTimeLapse.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartTimeLapse
   * @static
   * @param {IReqStartTimeLapse} message ReqStartTimeLapse message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartTimeLapse.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartTimeLapse message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartTimeLapse
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartTimeLapse} ReqStartTimeLapse
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartTimeLapse.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartTimeLapse();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartTimeLapse message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartTimeLapse
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartTimeLapse} ReqStartTimeLapse
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartTimeLapse.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartTimeLapse message.
   * @function verify
   * @memberof ReqStartTimeLapse
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartTimeLapse.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStartTimeLapse message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartTimeLapse
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartTimeLapse} ReqStartTimeLapse
   */
  ReqStartTimeLapse.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartTimeLapse) return object;
    return new $root.ReqStartTimeLapse();
  };

  /**
   * Creates a plain object from a ReqStartTimeLapse message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartTimeLapse
   * @static
   * @param {ReqStartTimeLapse} message ReqStartTimeLapse
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartTimeLapse.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStartTimeLapse to JSON.
   * @function toJSON
   * @memberof ReqStartTimeLapse
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartTimeLapse.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartTimeLapse
   * @function getTypeUrl
   * @memberof ReqStartTimeLapse
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartTimeLapse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartTimeLapse";
  };

  return ReqStartTimeLapse;
})();

$root.ReqStopTimeLapse = (function () {
  /**
   * Properties of a ReqStopTimeLapse.
   * @exports IReqStopTimeLapse
   * @interface IReqStopTimeLapse
   */

  /**
   * Constructs a new ReqStopTimeLapse.
   * @exports ReqStopTimeLapse
   * @classdesc Represents a ReqStopTimeLapse.
   * @implements IReqStopTimeLapse
   * @constructor
   * @param {IReqStopTimeLapse=} [properties] Properties to set
   */
  function ReqStopTimeLapse(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopTimeLapse instance using the specified properties.
   * @function create
   * @memberof ReqStopTimeLapse
   * @static
   * @param {IReqStopTimeLapse=} [properties] Properties to set
   * @returns {ReqStopTimeLapse} ReqStopTimeLapse instance
   */
  ReqStopTimeLapse.create = function create(properties) {
    return new ReqStopTimeLapse(properties);
  };

  /**
   * Encodes the specified ReqStopTimeLapse message. Does not implicitly {@link ReqStopTimeLapse.verify|verify} messages.
   * @function encode
   * @memberof ReqStopTimeLapse
   * @static
   * @param {IReqStopTimeLapse} message ReqStopTimeLapse message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopTimeLapse.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopTimeLapse message, length delimited. Does not implicitly {@link ReqStopTimeLapse.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopTimeLapse
   * @static
   * @param {IReqStopTimeLapse} message ReqStopTimeLapse message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopTimeLapse.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopTimeLapse message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopTimeLapse
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopTimeLapse} ReqStopTimeLapse
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopTimeLapse.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopTimeLapse();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopTimeLapse message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopTimeLapse
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopTimeLapse} ReqStopTimeLapse
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopTimeLapse.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopTimeLapse message.
   * @function verify
   * @memberof ReqStopTimeLapse
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopTimeLapse.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopTimeLapse message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopTimeLapse
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopTimeLapse} ReqStopTimeLapse
   */
  ReqStopTimeLapse.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopTimeLapse) return object;
    return new $root.ReqStopTimeLapse();
  };

  /**
   * Creates a plain object from a ReqStopTimeLapse message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopTimeLapse
   * @static
   * @param {ReqStopTimeLapse} message ReqStopTimeLapse
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopTimeLapse.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopTimeLapse to JSON.
   * @function toJSON
   * @memberof ReqStopTimeLapse
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopTimeLapse.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopTimeLapse
   * @function getTypeUrl
   * @memberof ReqStopTimeLapse
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopTimeLapse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopTimeLapse";
  };

  return ReqStopTimeLapse;
})();

$root.ReqSetAllParams = (function () {
  /**
   * Properties of a ReqSetAllParams.
   * @exports IReqSetAllParams
   * @interface IReqSetAllParams
   * @property {number|null} [expMode] ReqSetAllParams expMode
   * @property {number|null} [expIndex] ReqSetAllParams expIndex
   * @property {number|null} [gainMode] ReqSetAllParams gainMode
   * @property {number|null} [gainIndex] ReqSetAllParams gainIndex
   * @property {number|null} [ircutValue] ReqSetAllParams ircutValue
   * @property {number|null} [wbMode] ReqSetAllParams wbMode
   * @property {number|null} [wbIndexType] ReqSetAllParams wbIndexType
   * @property {number|null} [wbIndex] ReqSetAllParams wbIndex
   * @property {number|null} [brightness] ReqSetAllParams brightness
   * @property {number|null} [contrast] ReqSetAllParams contrast
   * @property {number|null} [hue] ReqSetAllParams hue
   * @property {number|null} [saturation] ReqSetAllParams saturation
   * @property {number|null} [sharpness] ReqSetAllParams sharpness
   * @property {number|null} [jpgQuality] ReqSetAllParams jpgQuality
   */

  /**
   * Constructs a new ReqSetAllParams.
   * @exports ReqSetAllParams
   * @classdesc Represents a ReqSetAllParams.
   * @implements IReqSetAllParams
   * @constructor
   * @param {IReqSetAllParams=} [properties] Properties to set
   */
  function ReqSetAllParams(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetAllParams expMode.
   * @member {number} expMode
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.expMode = 0;

  /**
   * ReqSetAllParams expIndex.
   * @member {number} expIndex
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.expIndex = 0;

  /**
   * ReqSetAllParams gainMode.
   * @member {number} gainMode
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.gainMode = 0;

  /**
   * ReqSetAllParams gainIndex.
   * @member {number} gainIndex
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.gainIndex = 0;

  /**
   * ReqSetAllParams ircutValue.
   * @member {number} ircutValue
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.ircutValue = 0;

  /**
   * ReqSetAllParams wbMode.
   * @member {number} wbMode
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.wbMode = 0;

  /**
   * ReqSetAllParams wbIndexType.
   * @member {number} wbIndexType
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.wbIndexType = 0;

  /**
   * ReqSetAllParams wbIndex.
   * @member {number} wbIndex
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.wbIndex = 0;

  /**
   * ReqSetAllParams brightness.
   * @member {number} brightness
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.brightness = 0;

  /**
   * ReqSetAllParams contrast.
   * @member {number} contrast
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.contrast = 0;

  /**
   * ReqSetAllParams hue.
   * @member {number} hue
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.hue = 0;

  /**
   * ReqSetAllParams saturation.
   * @member {number} saturation
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.saturation = 0;

  /**
   * ReqSetAllParams sharpness.
   * @member {number} sharpness
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.sharpness = 0;

  /**
   * ReqSetAllParams jpgQuality.
   * @member {number} jpgQuality
   * @memberof ReqSetAllParams
   * @instance
   */
  ReqSetAllParams.prototype.jpgQuality = 0;

  /**
   * Creates a new ReqSetAllParams instance using the specified properties.
   * @function create
   * @memberof ReqSetAllParams
   * @static
   * @param {IReqSetAllParams=} [properties] Properties to set
   * @returns {ReqSetAllParams} ReqSetAllParams instance
   */
  ReqSetAllParams.create = function create(properties) {
    return new ReqSetAllParams(properties);
  };

  /**
   * Encodes the specified ReqSetAllParams message. Does not implicitly {@link ReqSetAllParams.verify|verify} messages.
   * @function encode
   * @memberof ReqSetAllParams
   * @static
   * @param {IReqSetAllParams} message ReqSetAllParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetAllParams.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.expMode != null &&
      Object.hasOwnProperty.call(message, "expMode")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.expMode);
    if (
      message.expIndex != null &&
      Object.hasOwnProperty.call(message, "expIndex")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.expIndex);
    if (
      message.gainMode != null &&
      Object.hasOwnProperty.call(message, "gainMode")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.gainMode);
    if (
      message.gainIndex != null &&
      Object.hasOwnProperty.call(message, "gainIndex")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.gainIndex);
    if (
      message.ircutValue != null &&
      Object.hasOwnProperty.call(message, "ircutValue")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).int32(message.ircutValue);
    if (message.wbMode != null && Object.hasOwnProperty.call(message, "wbMode"))
      writer.uint32(/* id 6, wireType 0 =*/ 48).int32(message.wbMode);
    if (
      message.wbIndexType != null &&
      Object.hasOwnProperty.call(message, "wbIndexType")
    )
      writer.uint32(/* id 7, wireType 0 =*/ 56).int32(message.wbIndexType);
    if (
      message.wbIndex != null &&
      Object.hasOwnProperty.call(message, "wbIndex")
    )
      writer.uint32(/* id 8, wireType 0 =*/ 64).int32(message.wbIndex);
    if (
      message.brightness != null &&
      Object.hasOwnProperty.call(message, "brightness")
    )
      writer.uint32(/* id 9, wireType 0 =*/ 72).int32(message.brightness);
    if (
      message.contrast != null &&
      Object.hasOwnProperty.call(message, "contrast")
    )
      writer.uint32(/* id 10, wireType 0 =*/ 80).int32(message.contrast);
    if (message.hue != null && Object.hasOwnProperty.call(message, "hue"))
      writer.uint32(/* id 11, wireType 0 =*/ 88).int32(message.hue);
    if (
      message.saturation != null &&
      Object.hasOwnProperty.call(message, "saturation")
    )
      writer.uint32(/* id 12, wireType 0 =*/ 96).int32(message.saturation);
    if (
      message.sharpness != null &&
      Object.hasOwnProperty.call(message, "sharpness")
    )
      writer.uint32(/* id 13, wireType 0 =*/ 104).int32(message.sharpness);
    if (
      message.jpgQuality != null &&
      Object.hasOwnProperty.call(message, "jpgQuality")
    )
      writer.uint32(/* id 14, wireType 0 =*/ 112).int32(message.jpgQuality);
    return writer;
  };

  /**
   * Encodes the specified ReqSetAllParams message, length delimited. Does not implicitly {@link ReqSetAllParams.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetAllParams
   * @static
   * @param {IReqSetAllParams} message ReqSetAllParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetAllParams.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetAllParams message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetAllParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetAllParams} ReqSetAllParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetAllParams.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetAllParams();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.expMode = reader.int32();
          break;
        }
        case 2: {
          message.expIndex = reader.int32();
          break;
        }
        case 3: {
          message.gainMode = reader.int32();
          break;
        }
        case 4: {
          message.gainIndex = reader.int32();
          break;
        }
        case 5: {
          message.ircutValue = reader.int32();
          break;
        }
        case 6: {
          message.wbMode = reader.int32();
          break;
        }
        case 7: {
          message.wbIndexType = reader.int32();
          break;
        }
        case 8: {
          message.wbIndex = reader.int32();
          break;
        }
        case 9: {
          message.brightness = reader.int32();
          break;
        }
        case 10: {
          message.contrast = reader.int32();
          break;
        }
        case 11: {
          message.hue = reader.int32();
          break;
        }
        case 12: {
          message.saturation = reader.int32();
          break;
        }
        case 13: {
          message.sharpness = reader.int32();
          break;
        }
        case 14: {
          message.jpgQuality = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetAllParams message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetAllParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetAllParams} ReqSetAllParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetAllParams.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetAllParams message.
   * @function verify
   * @memberof ReqSetAllParams
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetAllParams.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.expMode != null && message.hasOwnProperty("expMode"))
      if (!$util.isInteger(message.expMode)) return "expMode: integer expected";
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      if (!$util.isInteger(message.expIndex))
        return "expIndex: integer expected";
    if (message.gainMode != null && message.hasOwnProperty("gainMode"))
      if (!$util.isInteger(message.gainMode))
        return "gainMode: integer expected";
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      if (!$util.isInteger(message.gainIndex))
        return "gainIndex: integer expected";
    if (message.ircutValue != null && message.hasOwnProperty("ircutValue"))
      if (!$util.isInteger(message.ircutValue))
        return "ircutValue: integer expected";
    if (message.wbMode != null && message.hasOwnProperty("wbMode"))
      if (!$util.isInteger(message.wbMode)) return "wbMode: integer expected";
    if (message.wbIndexType != null && message.hasOwnProperty("wbIndexType"))
      if (!$util.isInteger(message.wbIndexType))
        return "wbIndexType: integer expected";
    if (message.wbIndex != null && message.hasOwnProperty("wbIndex"))
      if (!$util.isInteger(message.wbIndex)) return "wbIndex: integer expected";
    if (message.brightness != null && message.hasOwnProperty("brightness"))
      if (!$util.isInteger(message.brightness))
        return "brightness: integer expected";
    if (message.contrast != null && message.hasOwnProperty("contrast"))
      if (!$util.isInteger(message.contrast))
        return "contrast: integer expected";
    if (message.hue != null && message.hasOwnProperty("hue"))
      if (!$util.isInteger(message.hue)) return "hue: integer expected";
    if (message.saturation != null && message.hasOwnProperty("saturation"))
      if (!$util.isInteger(message.saturation))
        return "saturation: integer expected";
    if (message.sharpness != null && message.hasOwnProperty("sharpness"))
      if (!$util.isInteger(message.sharpness))
        return "sharpness: integer expected";
    if (message.jpgQuality != null && message.hasOwnProperty("jpgQuality"))
      if (!$util.isInteger(message.jpgQuality))
        return "jpgQuality: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetAllParams message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetAllParams
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetAllParams} ReqSetAllParams
   */
  ReqSetAllParams.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetAllParams) return object;
    var message = new $root.ReqSetAllParams();
    if (object.expMode != null) message.expMode = object.expMode | 0;
    if (object.expIndex != null) message.expIndex = object.expIndex | 0;
    if (object.gainMode != null) message.gainMode = object.gainMode | 0;
    if (object.gainIndex != null) message.gainIndex = object.gainIndex | 0;
    if (object.ircutValue != null) message.ircutValue = object.ircutValue | 0;
    if (object.wbMode != null) message.wbMode = object.wbMode | 0;
    if (object.wbIndexType != null)
      message.wbIndexType = object.wbIndexType | 0;
    if (object.wbIndex != null) message.wbIndex = object.wbIndex | 0;
    if (object.brightness != null) message.brightness = object.brightness | 0;
    if (object.contrast != null) message.contrast = object.contrast | 0;
    if (object.hue != null) message.hue = object.hue | 0;
    if (object.saturation != null) message.saturation = object.saturation | 0;
    if (object.sharpness != null) message.sharpness = object.sharpness | 0;
    if (object.jpgQuality != null) message.jpgQuality = object.jpgQuality | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetAllParams message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetAllParams
   * @static
   * @param {ReqSetAllParams} message ReqSetAllParams
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetAllParams.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.expMode = 0;
      object.expIndex = 0;
      object.gainMode = 0;
      object.gainIndex = 0;
      object.ircutValue = 0;
      object.wbMode = 0;
      object.wbIndexType = 0;
      object.wbIndex = 0;
      object.brightness = 0;
      object.contrast = 0;
      object.hue = 0;
      object.saturation = 0;
      object.sharpness = 0;
      object.jpgQuality = 0;
    }
    if (message.expMode != null && message.hasOwnProperty("expMode"))
      object.expMode = message.expMode;
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      object.expIndex = message.expIndex;
    if (message.gainMode != null && message.hasOwnProperty("gainMode"))
      object.gainMode = message.gainMode;
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      object.gainIndex = message.gainIndex;
    if (message.ircutValue != null && message.hasOwnProperty("ircutValue"))
      object.ircutValue = message.ircutValue;
    if (message.wbMode != null && message.hasOwnProperty("wbMode"))
      object.wbMode = message.wbMode;
    if (message.wbIndexType != null && message.hasOwnProperty("wbIndexType"))
      object.wbIndexType = message.wbIndexType;
    if (message.wbIndex != null && message.hasOwnProperty("wbIndex"))
      object.wbIndex = message.wbIndex;
    if (message.brightness != null && message.hasOwnProperty("brightness"))
      object.brightness = message.brightness;
    if (message.contrast != null && message.hasOwnProperty("contrast"))
      object.contrast = message.contrast;
    if (message.hue != null && message.hasOwnProperty("hue"))
      object.hue = message.hue;
    if (message.saturation != null && message.hasOwnProperty("saturation"))
      object.saturation = message.saturation;
    if (message.sharpness != null && message.hasOwnProperty("sharpness"))
      object.sharpness = message.sharpness;
    if (message.jpgQuality != null && message.hasOwnProperty("jpgQuality"))
      object.jpgQuality = message.jpgQuality;
    return object;
  };

  /**
   * Converts this ReqSetAllParams to JSON.
   * @function toJSON
   * @memberof ReqSetAllParams
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetAllParams.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetAllParams
   * @function getTypeUrl
   * @memberof ReqSetAllParams
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetAllParams.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetAllParams";
  };

  return ReqSetAllParams;
})();

$root.ReqGetAllParams = (function () {
  /**
   * Properties of a ReqGetAllParams.
   * @exports IReqGetAllParams
   * @interface IReqGetAllParams
   */

  /**
   * Constructs a new ReqGetAllParams.
   * @exports ReqGetAllParams
   * @classdesc Represents a ReqGetAllParams.
   * @implements IReqGetAllParams
   * @constructor
   * @param {IReqGetAllParams=} [properties] Properties to set
   */
  function ReqGetAllParams(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetAllParams instance using the specified properties.
   * @function create
   * @memberof ReqGetAllParams
   * @static
   * @param {IReqGetAllParams=} [properties] Properties to set
   * @returns {ReqGetAllParams} ReqGetAllParams instance
   */
  ReqGetAllParams.create = function create(properties) {
    return new ReqGetAllParams(properties);
  };

  /**
   * Encodes the specified ReqGetAllParams message. Does not implicitly {@link ReqGetAllParams.verify|verify} messages.
   * @function encode
   * @memberof ReqGetAllParams
   * @static
   * @param {IReqGetAllParams} message ReqGetAllParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetAllParams.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetAllParams message, length delimited. Does not implicitly {@link ReqGetAllParams.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetAllParams
   * @static
   * @param {IReqGetAllParams} message ReqGetAllParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetAllParams.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetAllParams message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetAllParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetAllParams} ReqGetAllParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetAllParams.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetAllParams();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetAllParams message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetAllParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetAllParams} ReqGetAllParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetAllParams.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetAllParams message.
   * @function verify
   * @memberof ReqGetAllParams
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetAllParams.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetAllParams message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetAllParams
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetAllParams} ReqGetAllParams
   */
  ReqGetAllParams.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetAllParams) return object;
    return new $root.ReqGetAllParams();
  };

  /**
   * Creates a plain object from a ReqGetAllParams message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetAllParams
   * @static
   * @param {ReqGetAllParams} message ReqGetAllParams
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetAllParams.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetAllParams to JSON.
   * @function toJSON
   * @memberof ReqGetAllParams
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetAllParams.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetAllParams
   * @function getTypeUrl
   * @memberof ReqGetAllParams
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetAllParams.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetAllParams";
  };

  return ReqGetAllParams;
})();

$root.ResGetAllParams = (function () {
  /**
   * Properties of a ResGetAllParams.
   * @exports IResGetAllParams
   * @interface IResGetAllParams
   * @property {Array.<ICommonParam>|null} [allParams] ResGetAllParams allParams
   * @property {number|null} [code] ResGetAllParams code
   */

  /**
   * Constructs a new ResGetAllParams.
   * @exports ResGetAllParams
   * @classdesc Represents a ResGetAllParams.
   * @implements IResGetAllParams
   * @constructor
   * @param {IResGetAllParams=} [properties] Properties to set
   */
  function ResGetAllParams(properties) {
    this.allParams = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetAllParams allParams.
   * @member {Array.<ICommonParam>} allParams
   * @memberof ResGetAllParams
   * @instance
   */
  ResGetAllParams.prototype.allParams = $util.emptyArray;

  /**
   * ResGetAllParams code.
   * @member {number} code
   * @memberof ResGetAllParams
   * @instance
   */
  ResGetAllParams.prototype.code = 0;

  /**
   * Creates a new ResGetAllParams instance using the specified properties.
   * @function create
   * @memberof ResGetAllParams
   * @static
   * @param {IResGetAllParams=} [properties] Properties to set
   * @returns {ResGetAllParams} ResGetAllParams instance
   */
  ResGetAllParams.create = function create(properties) {
    return new ResGetAllParams(properties);
  };

  /**
   * Encodes the specified ResGetAllParams message. Does not implicitly {@link ResGetAllParams.verify|verify} messages.
   * @function encode
   * @memberof ResGetAllParams
   * @static
   * @param {IResGetAllParams} message ResGetAllParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetAllParams.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.allParams != null && message.allParams.length)
      for (var i = 0; i < message.allParams.length; ++i)
        $root.CommonParam.encode(
          message.allParams[i],
          writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
        ).ldelim();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResGetAllParams message, length delimited. Does not implicitly {@link ResGetAllParams.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetAllParams
   * @static
   * @param {IResGetAllParams} message ResGetAllParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetAllParams.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetAllParams message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetAllParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetAllParams} ResGetAllParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetAllParams.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetAllParams();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          if (!(message.allParams && message.allParams.length))
            message.allParams = [];
          message.allParams.push(
            $root.CommonParam.decode(reader, reader.uint32())
          );
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetAllParams message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetAllParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetAllParams} ResGetAllParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetAllParams.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetAllParams message.
   * @function verify
   * @memberof ResGetAllParams
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetAllParams.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.allParams != null && message.hasOwnProperty("allParams")) {
      if (!Array.isArray(message.allParams)) return "allParams: array expected";
      for (var i = 0; i < message.allParams.length; ++i) {
        var error = $root.CommonParam.verify(message.allParams[i]);
        if (error) return "allParams." + error;
      }
    }
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResGetAllParams message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetAllParams
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetAllParams} ResGetAllParams
   */
  ResGetAllParams.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetAllParams) return object;
    var message = new $root.ResGetAllParams();
    if (object.allParams) {
      if (!Array.isArray(object.allParams))
        throw TypeError(".ResGetAllParams.allParams: array expected");
      message.allParams = [];
      for (var i = 0; i < object.allParams.length; ++i) {
        if (typeof object.allParams[i] !== "object")
          throw TypeError(".ResGetAllParams.allParams: object expected");
        message.allParams[i] = $root.CommonParam.fromObject(
          object.allParams[i]
        );
      }
    }
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResGetAllParams message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetAllParams
   * @static
   * @param {ResGetAllParams} message ResGetAllParams
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetAllParams.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.allParams = [];
    if (options.defaults) object.code = 0;
    if (message.allParams && message.allParams.length) {
      object.allParams = [];
      for (var j = 0; j < message.allParams.length; ++j)
        object.allParams[j] = $root.CommonParam.toObject(
          message.allParams[j],
          options
        );
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResGetAllParams to JSON.
   * @function toJSON
   * @memberof ResGetAllParams
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetAllParams.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetAllParams
   * @function getTypeUrl
   * @memberof ResGetAllParams
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetAllParams.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetAllParams";
  };

  return ResGetAllParams;
})();

$root.ReqSetFeatureParams = (function () {
  /**
   * Properties of a ReqSetFeatureParams.
   * @exports IReqSetFeatureParams
   * @interface IReqSetFeatureParams
   * @property {ICommonParam|null} [param] ReqSetFeatureParams param
   */

  /**
   * Constructs a new ReqSetFeatureParams.
   * @exports ReqSetFeatureParams
   * @classdesc Represents a ReqSetFeatureParams.
   * @implements IReqSetFeatureParams
   * @constructor
   * @param {IReqSetFeatureParams=} [properties] Properties to set
   */
  function ReqSetFeatureParams(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetFeatureParams param.
   * @member {ICommonParam|null|undefined} param
   * @memberof ReqSetFeatureParams
   * @instance
   */
  ReqSetFeatureParams.prototype.param = null;

  /**
   * Creates a new ReqSetFeatureParams instance using the specified properties.
   * @function create
   * @memberof ReqSetFeatureParams
   * @static
   * @param {IReqSetFeatureParams=} [properties] Properties to set
   * @returns {ReqSetFeatureParams} ReqSetFeatureParams instance
   */
  ReqSetFeatureParams.create = function create(properties) {
    return new ReqSetFeatureParams(properties);
  };

  /**
   * Encodes the specified ReqSetFeatureParams message. Does not implicitly {@link ReqSetFeatureParams.verify|verify} messages.
   * @function encode
   * @memberof ReqSetFeatureParams
   * @static
   * @param {IReqSetFeatureParams} message ReqSetFeatureParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetFeatureParams.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.param != null && Object.hasOwnProperty.call(message, "param"))
      $root.CommonParam.encode(
        message.param,
        writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
      ).ldelim();
    return writer;
  };

  /**
   * Encodes the specified ReqSetFeatureParams message, length delimited. Does not implicitly {@link ReqSetFeatureParams.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetFeatureParams
   * @static
   * @param {IReqSetFeatureParams} message ReqSetFeatureParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetFeatureParams.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetFeatureParams message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetFeatureParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetFeatureParams} ReqSetFeatureParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetFeatureParams.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetFeatureParams();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.param = $root.CommonParam.decode(reader, reader.uint32());
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetFeatureParams message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetFeatureParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetFeatureParams} ReqSetFeatureParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetFeatureParams.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetFeatureParams message.
   * @function verify
   * @memberof ReqSetFeatureParams
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetFeatureParams.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.param != null && message.hasOwnProperty("param")) {
      var error = $root.CommonParam.verify(message.param);
      if (error) return "param." + error;
    }
    return null;
  };

  /**
   * Creates a ReqSetFeatureParams message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetFeatureParams
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetFeatureParams} ReqSetFeatureParams
   */
  ReqSetFeatureParams.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetFeatureParams) return object;
    var message = new $root.ReqSetFeatureParams();
    if (object.param != null) {
      if (typeof object.param !== "object")
        throw TypeError(".ReqSetFeatureParams.param: object expected");
      message.param = $root.CommonParam.fromObject(object.param);
    }
    return message;
  };

  /**
   * Creates a plain object from a ReqSetFeatureParams message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetFeatureParams
   * @static
   * @param {ReqSetFeatureParams} message ReqSetFeatureParams
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetFeatureParams.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.param = null;
    if (message.param != null && message.hasOwnProperty("param"))
      object.param = $root.CommonParam.toObject(message.param, options);
    return object;
  };

  /**
   * Converts this ReqSetFeatureParams to JSON.
   * @function toJSON
   * @memberof ReqSetFeatureParams
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetFeatureParams.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetFeatureParams
   * @function getTypeUrl
   * @memberof ReqSetFeatureParams
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetFeatureParams.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetFeatureParams";
  };

  return ReqSetFeatureParams;
})();

$root.ReqGetAllFeatureParams = (function () {
  /**
   * Properties of a ReqGetAllFeatureParams.
   * @exports IReqGetAllFeatureParams
   * @interface IReqGetAllFeatureParams
   */

  /**
   * Constructs a new ReqGetAllFeatureParams.
   * @exports ReqGetAllFeatureParams
   * @classdesc Represents a ReqGetAllFeatureParams.
   * @implements IReqGetAllFeatureParams
   * @constructor
   * @param {IReqGetAllFeatureParams=} [properties] Properties to set
   */
  function ReqGetAllFeatureParams(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetAllFeatureParams instance using the specified properties.
   * @function create
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {IReqGetAllFeatureParams=} [properties] Properties to set
   * @returns {ReqGetAllFeatureParams} ReqGetAllFeatureParams instance
   */
  ReqGetAllFeatureParams.create = function create(properties) {
    return new ReqGetAllFeatureParams(properties);
  };

  /**
   * Encodes the specified ReqGetAllFeatureParams message. Does not implicitly {@link ReqGetAllFeatureParams.verify|verify} messages.
   * @function encode
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {IReqGetAllFeatureParams} message ReqGetAllFeatureParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetAllFeatureParams.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetAllFeatureParams message, length delimited. Does not implicitly {@link ReqGetAllFeatureParams.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {IReqGetAllFeatureParams} message ReqGetAllFeatureParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetAllFeatureParams.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetAllFeatureParams message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetAllFeatureParams} ReqGetAllFeatureParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetAllFeatureParams.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetAllFeatureParams();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetAllFeatureParams message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetAllFeatureParams} ReqGetAllFeatureParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetAllFeatureParams.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetAllFeatureParams message.
   * @function verify
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetAllFeatureParams.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetAllFeatureParams message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetAllFeatureParams} ReqGetAllFeatureParams
   */
  ReqGetAllFeatureParams.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetAllFeatureParams) return object;
    return new $root.ReqGetAllFeatureParams();
  };

  /**
   * Creates a plain object from a ReqGetAllFeatureParams message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {ReqGetAllFeatureParams} message ReqGetAllFeatureParams
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetAllFeatureParams.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetAllFeatureParams to JSON.
   * @function toJSON
   * @memberof ReqGetAllFeatureParams
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetAllFeatureParams.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetAllFeatureParams
   * @function getTypeUrl
   * @memberof ReqGetAllFeatureParams
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetAllFeatureParams.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetAllFeatureParams";
  };

  return ReqGetAllFeatureParams;
})();

$root.ResGetAllFeatureParams = (function () {
  /**
   * Properties of a ResGetAllFeatureParams.
   * @exports IResGetAllFeatureParams
   * @interface IResGetAllFeatureParams
   * @property {Array.<ICommonParam>|null} [allFeatureParams] ResGetAllFeatureParams allFeatureParams
   * @property {number|null} [code] ResGetAllFeatureParams code
   */

  /**
   * Constructs a new ResGetAllFeatureParams.
   * @exports ResGetAllFeatureParams
   * @classdesc Represents a ResGetAllFeatureParams.
   * @implements IResGetAllFeatureParams
   * @constructor
   * @param {IResGetAllFeatureParams=} [properties] Properties to set
   */
  function ResGetAllFeatureParams(properties) {
    this.allFeatureParams = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetAllFeatureParams allFeatureParams.
   * @member {Array.<ICommonParam>} allFeatureParams
   * @memberof ResGetAllFeatureParams
   * @instance
   */
  ResGetAllFeatureParams.prototype.allFeatureParams = $util.emptyArray;

  /**
   * ResGetAllFeatureParams code.
   * @member {number} code
   * @memberof ResGetAllFeatureParams
   * @instance
   */
  ResGetAllFeatureParams.prototype.code = 0;

  /**
   * Creates a new ResGetAllFeatureParams instance using the specified properties.
   * @function create
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {IResGetAllFeatureParams=} [properties] Properties to set
   * @returns {ResGetAllFeatureParams} ResGetAllFeatureParams instance
   */
  ResGetAllFeatureParams.create = function create(properties) {
    return new ResGetAllFeatureParams(properties);
  };

  /**
   * Encodes the specified ResGetAllFeatureParams message. Does not implicitly {@link ResGetAllFeatureParams.verify|verify} messages.
   * @function encode
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {IResGetAllFeatureParams} message ResGetAllFeatureParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetAllFeatureParams.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.allFeatureParams != null && message.allFeatureParams.length)
      for (var i = 0; i < message.allFeatureParams.length; ++i)
        $root.CommonParam.encode(
          message.allFeatureParams[i],
          writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
        ).ldelim();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResGetAllFeatureParams message, length delimited. Does not implicitly {@link ResGetAllFeatureParams.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {IResGetAllFeatureParams} message ResGetAllFeatureParams message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetAllFeatureParams.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetAllFeatureParams message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetAllFeatureParams} ResGetAllFeatureParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetAllFeatureParams.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetAllFeatureParams();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          if (!(message.allFeatureParams && message.allFeatureParams.length))
            message.allFeatureParams = [];
          message.allFeatureParams.push(
            $root.CommonParam.decode(reader, reader.uint32())
          );
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetAllFeatureParams message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetAllFeatureParams} ResGetAllFeatureParams
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetAllFeatureParams.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetAllFeatureParams message.
   * @function verify
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetAllFeatureParams.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.allFeatureParams != null &&
      message.hasOwnProperty("allFeatureParams")
    ) {
      if (!Array.isArray(message.allFeatureParams))
        return "allFeatureParams: array expected";
      for (var i = 0; i < message.allFeatureParams.length; ++i) {
        var error = $root.CommonParam.verify(message.allFeatureParams[i]);
        if (error) return "allFeatureParams." + error;
      }
    }
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResGetAllFeatureParams message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetAllFeatureParams} ResGetAllFeatureParams
   */
  ResGetAllFeatureParams.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetAllFeatureParams) return object;
    var message = new $root.ResGetAllFeatureParams();
    if (object.allFeatureParams) {
      if (!Array.isArray(object.allFeatureParams))
        throw TypeError(
          ".ResGetAllFeatureParams.allFeatureParams: array expected"
        );
      message.allFeatureParams = [];
      for (var i = 0; i < object.allFeatureParams.length; ++i) {
        if (typeof object.allFeatureParams[i] !== "object")
          throw TypeError(
            ".ResGetAllFeatureParams.allFeatureParams: object expected"
          );
        message.allFeatureParams[i] = $root.CommonParam.fromObject(
          object.allFeatureParams[i]
        );
      }
    }
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResGetAllFeatureParams message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {ResGetAllFeatureParams} message ResGetAllFeatureParams
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetAllFeatureParams.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.allFeatureParams = [];
    if (options.defaults) object.code = 0;
    if (message.allFeatureParams && message.allFeatureParams.length) {
      object.allFeatureParams = [];
      for (var j = 0; j < message.allFeatureParams.length; ++j)
        object.allFeatureParams[j] = $root.CommonParam.toObject(
          message.allFeatureParams[j],
          options
        );
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResGetAllFeatureParams to JSON.
   * @function toJSON
   * @memberof ResGetAllFeatureParams
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetAllFeatureParams.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetAllFeatureParams
   * @function getTypeUrl
   * @memberof ResGetAllFeatureParams
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetAllFeatureParams.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetAllFeatureParams";
  };

  return ResGetAllFeatureParams;
})();

$root.ReqGetSystemWorkingState = (function () {
  /**
   * Properties of a ReqGetSystemWorkingState.
   * @exports IReqGetSystemWorkingState
   * @interface IReqGetSystemWorkingState
   */

  /**
   * Constructs a new ReqGetSystemWorkingState.
   * @exports ReqGetSystemWorkingState
   * @classdesc Represents a ReqGetSystemWorkingState.
   * @implements IReqGetSystemWorkingState
   * @constructor
   * @param {IReqGetSystemWorkingState=} [properties] Properties to set
   */
  function ReqGetSystemWorkingState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetSystemWorkingState instance using the specified properties.
   * @function create
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {IReqGetSystemWorkingState=} [properties] Properties to set
   * @returns {ReqGetSystemWorkingState} ReqGetSystemWorkingState instance
   */
  ReqGetSystemWorkingState.create = function create(properties) {
    return new ReqGetSystemWorkingState(properties);
  };

  /**
   * Encodes the specified ReqGetSystemWorkingState message. Does not implicitly {@link ReqGetSystemWorkingState.verify|verify} messages.
   * @function encode
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {IReqGetSystemWorkingState} message ReqGetSystemWorkingState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetSystemWorkingState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetSystemWorkingState message, length delimited. Does not implicitly {@link ReqGetSystemWorkingState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {IReqGetSystemWorkingState} message ReqGetSystemWorkingState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetSystemWorkingState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetSystemWorkingState message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetSystemWorkingState} ReqGetSystemWorkingState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetSystemWorkingState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetSystemWorkingState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetSystemWorkingState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetSystemWorkingState} ReqGetSystemWorkingState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetSystemWorkingState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetSystemWorkingState message.
   * @function verify
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetSystemWorkingState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetSystemWorkingState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetSystemWorkingState} ReqGetSystemWorkingState
   */
  ReqGetSystemWorkingState.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetSystemWorkingState) return object;
    return new $root.ReqGetSystemWorkingState();
  };

  /**
   * Creates a plain object from a ReqGetSystemWorkingState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {ReqGetSystemWorkingState} message ReqGetSystemWorkingState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetSystemWorkingState.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetSystemWorkingState to JSON.
   * @function toJSON
   * @memberof ReqGetSystemWorkingState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetSystemWorkingState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetSystemWorkingState
   * @function getTypeUrl
   * @memberof ReqGetSystemWorkingState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetSystemWorkingState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetSystemWorkingState";
  };

  return ReqGetSystemWorkingState;
})();

$root.ReqSetJpgQuality = (function () {
  /**
   * Properties of a ReqSetJpgQuality.
   * @exports IReqSetJpgQuality
   * @interface IReqSetJpgQuality
   * @property {number|null} [quality] ReqSetJpgQuality quality
   */

  /**
   * Constructs a new ReqSetJpgQuality.
   * @exports ReqSetJpgQuality
   * @classdesc Represents a ReqSetJpgQuality.
   * @implements IReqSetJpgQuality
   * @constructor
   * @param {IReqSetJpgQuality=} [properties] Properties to set
   */
  function ReqSetJpgQuality(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetJpgQuality quality.
   * @member {number} quality
   * @memberof ReqSetJpgQuality
   * @instance
   */
  ReqSetJpgQuality.prototype.quality = 0;

  /**
   * Creates a new ReqSetJpgQuality instance using the specified properties.
   * @function create
   * @memberof ReqSetJpgQuality
   * @static
   * @param {IReqSetJpgQuality=} [properties] Properties to set
   * @returns {ReqSetJpgQuality} ReqSetJpgQuality instance
   */
  ReqSetJpgQuality.create = function create(properties) {
    return new ReqSetJpgQuality(properties);
  };

  /**
   * Encodes the specified ReqSetJpgQuality message. Does not implicitly {@link ReqSetJpgQuality.verify|verify} messages.
   * @function encode
   * @memberof ReqSetJpgQuality
   * @static
   * @param {IReqSetJpgQuality} message ReqSetJpgQuality message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetJpgQuality.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.quality != null &&
      Object.hasOwnProperty.call(message, "quality")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.quality);
    return writer;
  };

  /**
   * Encodes the specified ReqSetJpgQuality message, length delimited. Does not implicitly {@link ReqSetJpgQuality.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetJpgQuality
   * @static
   * @param {IReqSetJpgQuality} message ReqSetJpgQuality message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetJpgQuality.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetJpgQuality message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetJpgQuality
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetJpgQuality} ReqSetJpgQuality
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetJpgQuality.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetJpgQuality();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.quality = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetJpgQuality message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetJpgQuality
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetJpgQuality} ReqSetJpgQuality
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetJpgQuality.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetJpgQuality message.
   * @function verify
   * @memberof ReqSetJpgQuality
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetJpgQuality.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.quality != null && message.hasOwnProperty("quality"))
      if (!$util.isInteger(message.quality)) return "quality: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetJpgQuality message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetJpgQuality
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetJpgQuality} ReqSetJpgQuality
   */
  ReqSetJpgQuality.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetJpgQuality) return object;
    var message = new $root.ReqSetJpgQuality();
    if (object.quality != null) message.quality = object.quality | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetJpgQuality message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetJpgQuality
   * @static
   * @param {ReqSetJpgQuality} message ReqSetJpgQuality
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetJpgQuality.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.quality = 0;
    if (message.quality != null && message.hasOwnProperty("quality"))
      object.quality = message.quality;
    return object;
  };

  /**
   * Converts this ReqSetJpgQuality to JSON.
   * @function toJSON
   * @memberof ReqSetJpgQuality
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetJpgQuality.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetJpgQuality
   * @function getTypeUrl
   * @memberof ReqSetJpgQuality
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetJpgQuality.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetJpgQuality";
  };

  return ReqSetJpgQuality;
})();

$root.ReqGetJpgQuality = (function () {
  /**
   * Properties of a ReqGetJpgQuality.
   * @exports IReqGetJpgQuality
   * @interface IReqGetJpgQuality
   */

  /**
   * Constructs a new ReqGetJpgQuality.
   * @exports ReqGetJpgQuality
   * @classdesc Represents a ReqGetJpgQuality.
   * @implements IReqGetJpgQuality
   * @constructor
   * @param {IReqGetJpgQuality=} [properties] Properties to set
   */
  function ReqGetJpgQuality(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetJpgQuality instance using the specified properties.
   * @function create
   * @memberof ReqGetJpgQuality
   * @static
   * @param {IReqGetJpgQuality=} [properties] Properties to set
   * @returns {ReqGetJpgQuality} ReqGetJpgQuality instance
   */
  ReqGetJpgQuality.create = function create(properties) {
    return new ReqGetJpgQuality(properties);
  };

  /**
   * Encodes the specified ReqGetJpgQuality message. Does not implicitly {@link ReqGetJpgQuality.verify|verify} messages.
   * @function encode
   * @memberof ReqGetJpgQuality
   * @static
   * @param {IReqGetJpgQuality} message ReqGetJpgQuality message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetJpgQuality.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetJpgQuality message, length delimited. Does not implicitly {@link ReqGetJpgQuality.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetJpgQuality
   * @static
   * @param {IReqGetJpgQuality} message ReqGetJpgQuality message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetJpgQuality.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetJpgQuality message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetJpgQuality
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetJpgQuality} ReqGetJpgQuality
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetJpgQuality.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetJpgQuality();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetJpgQuality message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetJpgQuality
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetJpgQuality} ReqGetJpgQuality
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetJpgQuality.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetJpgQuality message.
   * @function verify
   * @memberof ReqGetJpgQuality
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetJpgQuality.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetJpgQuality message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetJpgQuality
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetJpgQuality} ReqGetJpgQuality
   */
  ReqGetJpgQuality.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetJpgQuality) return object;
    return new $root.ReqGetJpgQuality();
  };

  /**
   * Creates a plain object from a ReqGetJpgQuality message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetJpgQuality
   * @static
   * @param {ReqGetJpgQuality} message ReqGetJpgQuality
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetJpgQuality.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetJpgQuality to JSON.
   * @function toJSON
   * @memberof ReqGetJpgQuality
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetJpgQuality.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetJpgQuality
   * @function getTypeUrl
   * @memberof ReqGetJpgQuality
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetJpgQuality.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetJpgQuality";
  };

  return ReqGetJpgQuality;
})();

$root.ReqPhotoRaw = (function () {
  /**
   * Properties of a ReqPhotoRaw.
   * @exports IReqPhotoRaw
   * @interface IReqPhotoRaw
   */

  /**
   * Constructs a new ReqPhotoRaw.
   * @exports ReqPhotoRaw
   * @classdesc Represents a ReqPhotoRaw.
   * @implements IReqPhotoRaw
   * @constructor
   * @param {IReqPhotoRaw=} [properties] Properties to set
   */
  function ReqPhotoRaw(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqPhotoRaw instance using the specified properties.
   * @function create
   * @memberof ReqPhotoRaw
   * @static
   * @param {IReqPhotoRaw=} [properties] Properties to set
   * @returns {ReqPhotoRaw} ReqPhotoRaw instance
   */
  ReqPhotoRaw.create = function create(properties) {
    return new ReqPhotoRaw(properties);
  };

  /**
   * Encodes the specified ReqPhotoRaw message. Does not implicitly {@link ReqPhotoRaw.verify|verify} messages.
   * @function encode
   * @memberof ReqPhotoRaw
   * @static
   * @param {IReqPhotoRaw} message ReqPhotoRaw message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqPhotoRaw.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqPhotoRaw message, length delimited. Does not implicitly {@link ReqPhotoRaw.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqPhotoRaw
   * @static
   * @param {IReqPhotoRaw} message ReqPhotoRaw message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqPhotoRaw.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqPhotoRaw message from the specified reader or buffer.
   * @function decode
   * @memberof ReqPhotoRaw
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqPhotoRaw} ReqPhotoRaw
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqPhotoRaw.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqPhotoRaw();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqPhotoRaw message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqPhotoRaw
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqPhotoRaw} ReqPhotoRaw
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqPhotoRaw.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqPhotoRaw message.
   * @function verify
   * @memberof ReqPhotoRaw
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqPhotoRaw.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqPhotoRaw message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqPhotoRaw
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqPhotoRaw} ReqPhotoRaw
   */
  ReqPhotoRaw.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqPhotoRaw) return object;
    return new $root.ReqPhotoRaw();
  };

  /**
   * Creates a plain object from a ReqPhotoRaw message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqPhotoRaw
   * @static
   * @param {ReqPhotoRaw} message ReqPhotoRaw
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqPhotoRaw.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqPhotoRaw to JSON.
   * @function toJSON
   * @memberof ReqPhotoRaw
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqPhotoRaw.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqPhotoRaw
   * @function getTypeUrl
   * @memberof ReqPhotoRaw
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqPhotoRaw.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqPhotoRaw";
  };

  return ReqPhotoRaw;
})();

$root.ReqSetRtspBitRateType = (function () {
  /**
   * Properties of a ReqSetRtspBitRateType.
   * @exports IReqSetRtspBitRateType
   * @interface IReqSetRtspBitRateType
   * @property {number|null} [bitrateType] ReqSetRtspBitRateType bitrateType
   */

  /**
   * Constructs a new ReqSetRtspBitRateType.
   * @exports ReqSetRtspBitRateType
   * @classdesc Represents a ReqSetRtspBitRateType.
   * @implements IReqSetRtspBitRateType
   * @constructor
   * @param {IReqSetRtspBitRateType=} [properties] Properties to set
   */
  function ReqSetRtspBitRateType(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetRtspBitRateType bitrateType.
   * @member {number} bitrateType
   * @memberof ReqSetRtspBitRateType
   * @instance
   */
  ReqSetRtspBitRateType.prototype.bitrateType = 0;

  /**
   * Creates a new ReqSetRtspBitRateType instance using the specified properties.
   * @function create
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {IReqSetRtspBitRateType=} [properties] Properties to set
   * @returns {ReqSetRtspBitRateType} ReqSetRtspBitRateType instance
   */
  ReqSetRtspBitRateType.create = function create(properties) {
    return new ReqSetRtspBitRateType(properties);
  };

  /**
   * Encodes the specified ReqSetRtspBitRateType message. Does not implicitly {@link ReqSetRtspBitRateType.verify|verify} messages.
   * @function encode
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {IReqSetRtspBitRateType} message ReqSetRtspBitRateType message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetRtspBitRateType.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.bitrateType != null &&
      Object.hasOwnProperty.call(message, "bitrateType")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.bitrateType);
    return writer;
  };

  /**
   * Encodes the specified ReqSetRtspBitRateType message, length delimited. Does not implicitly {@link ReqSetRtspBitRateType.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {IReqSetRtspBitRateType} message ReqSetRtspBitRateType message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetRtspBitRateType.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetRtspBitRateType message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetRtspBitRateType} ReqSetRtspBitRateType
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetRtspBitRateType.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetRtspBitRateType();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.bitrateType = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetRtspBitRateType message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetRtspBitRateType} ReqSetRtspBitRateType
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetRtspBitRateType.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetRtspBitRateType message.
   * @function verify
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetRtspBitRateType.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.bitrateType != null && message.hasOwnProperty("bitrateType"))
      if (!$util.isInteger(message.bitrateType))
        return "bitrateType: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetRtspBitRateType message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetRtspBitRateType} ReqSetRtspBitRateType
   */
  ReqSetRtspBitRateType.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetRtspBitRateType) return object;
    var message = new $root.ReqSetRtspBitRateType();
    if (object.bitrateType != null)
      message.bitrateType = object.bitrateType | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetRtspBitRateType message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {ReqSetRtspBitRateType} message ReqSetRtspBitRateType
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetRtspBitRateType.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.bitrateType = 0;
    if (message.bitrateType != null && message.hasOwnProperty("bitrateType"))
      object.bitrateType = message.bitrateType;
    return object;
  };

  /**
   * Converts this ReqSetRtspBitRateType to JSON.
   * @function toJSON
   * @memberof ReqSetRtspBitRateType
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetRtspBitRateType.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetRtspBitRateType
   * @function getTypeUrl
   * @memberof ReqSetRtspBitRateType
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetRtspBitRateType.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetRtspBitRateType";
  };

  return ReqSetRtspBitRateType;
})();

$root.ReqDisableAllIspProcessing = (function () {
  /**
   * Properties of a ReqDisableAllIspProcessing.
   * @exports IReqDisableAllIspProcessing
   * @interface IReqDisableAllIspProcessing
   */

  /**
   * Constructs a new ReqDisableAllIspProcessing.
   * @exports ReqDisableAllIspProcessing
   * @classdesc Represents a ReqDisableAllIspProcessing.
   * @implements IReqDisableAllIspProcessing
   * @constructor
   * @param {IReqDisableAllIspProcessing=} [properties] Properties to set
   */
  function ReqDisableAllIspProcessing(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqDisableAllIspProcessing instance using the specified properties.
   * @function create
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {IReqDisableAllIspProcessing=} [properties] Properties to set
   * @returns {ReqDisableAllIspProcessing} ReqDisableAllIspProcessing instance
   */
  ReqDisableAllIspProcessing.create = function create(properties) {
    return new ReqDisableAllIspProcessing(properties);
  };

  /**
   * Encodes the specified ReqDisableAllIspProcessing message. Does not implicitly {@link ReqDisableAllIspProcessing.verify|verify} messages.
   * @function encode
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {IReqDisableAllIspProcessing} message ReqDisableAllIspProcessing message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDisableAllIspProcessing.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqDisableAllIspProcessing message, length delimited. Does not implicitly {@link ReqDisableAllIspProcessing.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {IReqDisableAllIspProcessing} message ReqDisableAllIspProcessing message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDisableAllIspProcessing.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDisableAllIspProcessing message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDisableAllIspProcessing} ReqDisableAllIspProcessing
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDisableAllIspProcessing.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDisableAllIspProcessing();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDisableAllIspProcessing message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDisableAllIspProcessing} ReqDisableAllIspProcessing
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDisableAllIspProcessing.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDisableAllIspProcessing message.
   * @function verify
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDisableAllIspProcessing.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqDisableAllIspProcessing message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDisableAllIspProcessing} ReqDisableAllIspProcessing
   */
  ReqDisableAllIspProcessing.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDisableAllIspProcessing) return object;
    return new $root.ReqDisableAllIspProcessing();
  };

  /**
   * Creates a plain object from a ReqDisableAllIspProcessing message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {ReqDisableAllIspProcessing} message ReqDisableAllIspProcessing
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDisableAllIspProcessing.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqDisableAllIspProcessing to JSON.
   * @function toJSON
   * @memberof ReqDisableAllIspProcessing
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDisableAllIspProcessing.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDisableAllIspProcessing
   * @function getTypeUrl
   * @memberof ReqDisableAllIspProcessing
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDisableAllIspProcessing.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDisableAllIspProcessing";
  };

  return ReqDisableAllIspProcessing;
})();

$root.ReqEnableAllIspProcessing = (function () {
  /**
   * Properties of a ReqEnableAllIspProcessing.
   * @exports IReqEnableAllIspProcessing
   * @interface IReqEnableAllIspProcessing
   */

  /**
   * Constructs a new ReqEnableAllIspProcessing.
   * @exports ReqEnableAllIspProcessing
   * @classdesc Represents a ReqEnableAllIspProcessing.
   * @implements IReqEnableAllIspProcessing
   * @constructor
   * @param {IReqEnableAllIspProcessing=} [properties] Properties to set
   */
  function ReqEnableAllIspProcessing(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqEnableAllIspProcessing instance using the specified properties.
   * @function create
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {IReqEnableAllIspProcessing=} [properties] Properties to set
   * @returns {ReqEnableAllIspProcessing} ReqEnableAllIspProcessing instance
   */
  ReqEnableAllIspProcessing.create = function create(properties) {
    return new ReqEnableAllIspProcessing(properties);
  };

  /**
   * Encodes the specified ReqEnableAllIspProcessing message. Does not implicitly {@link ReqEnableAllIspProcessing.verify|verify} messages.
   * @function encode
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {IReqEnableAllIspProcessing} message ReqEnableAllIspProcessing message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqEnableAllIspProcessing.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqEnableAllIspProcessing message, length delimited. Does not implicitly {@link ReqEnableAllIspProcessing.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {IReqEnableAllIspProcessing} message ReqEnableAllIspProcessing message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqEnableAllIspProcessing.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqEnableAllIspProcessing message from the specified reader or buffer.
   * @function decode
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqEnableAllIspProcessing} ReqEnableAllIspProcessing
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqEnableAllIspProcessing.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqEnableAllIspProcessing();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqEnableAllIspProcessing message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqEnableAllIspProcessing} ReqEnableAllIspProcessing
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqEnableAllIspProcessing.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqEnableAllIspProcessing message.
   * @function verify
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqEnableAllIspProcessing.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqEnableAllIspProcessing message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqEnableAllIspProcessing} ReqEnableAllIspProcessing
   */
  ReqEnableAllIspProcessing.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqEnableAllIspProcessing) return object;
    return new $root.ReqEnableAllIspProcessing();
  };

  /**
   * Creates a plain object from a ReqEnableAllIspProcessing message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {ReqEnableAllIspProcessing} message ReqEnableAllIspProcessing
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqEnableAllIspProcessing.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqEnableAllIspProcessing to JSON.
   * @function toJSON
   * @memberof ReqEnableAllIspProcessing
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqEnableAllIspProcessing.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqEnableAllIspProcessing
   * @function getTypeUrl
   * @memberof ReqEnableAllIspProcessing
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqEnableAllIspProcessing.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqEnableAllIspProcessing";
  };

  return ReqEnableAllIspProcessing;
})();

$root.ReqManualSingleStepFocus = (function () {
  /**
   * Properties of a ReqManualSingleStepFocus.
   * @exports IReqManualSingleStepFocus
   * @interface IReqManualSingleStepFocus
   * @property {number|null} [direction] ReqManualSingleStepFocus direction
   */

  /**
   * Constructs a new ReqManualSingleStepFocus.
   * @exports ReqManualSingleStepFocus
   * @classdesc Represents a ReqManualSingleStepFocus.
   * @implements IReqManualSingleStepFocus
   * @constructor
   * @param {IReqManualSingleStepFocus=} [properties] Properties to set
   */
  function ReqManualSingleStepFocus(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqManualSingleStepFocus direction.
   * @member {number} direction
   * @memberof ReqManualSingleStepFocus
   * @instance
   */
  ReqManualSingleStepFocus.prototype.direction = 0;

  /**
   * Creates a new ReqManualSingleStepFocus instance using the specified properties.
   * @function create
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {IReqManualSingleStepFocus=} [properties] Properties to set
   * @returns {ReqManualSingleStepFocus} ReqManualSingleStepFocus instance
   */
  ReqManualSingleStepFocus.create = function create(properties) {
    return new ReqManualSingleStepFocus(properties);
  };

  /**
   * Encodes the specified ReqManualSingleStepFocus message. Does not implicitly {@link ReqManualSingleStepFocus.verify|verify} messages.
   * @function encode
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {IReqManualSingleStepFocus} message ReqManualSingleStepFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqManualSingleStepFocus.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.direction != null &&
      Object.hasOwnProperty.call(message, "direction")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.direction);
    return writer;
  };

  /**
   * Encodes the specified ReqManualSingleStepFocus message, length delimited. Does not implicitly {@link ReqManualSingleStepFocus.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {IReqManualSingleStepFocus} message ReqManualSingleStepFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqManualSingleStepFocus.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqManualSingleStepFocus message from the specified reader or buffer.
   * @function decode
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqManualSingleStepFocus} ReqManualSingleStepFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqManualSingleStepFocus.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqManualSingleStepFocus();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.direction = reader.uint32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqManualSingleStepFocus message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqManualSingleStepFocus} ReqManualSingleStepFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqManualSingleStepFocus.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqManualSingleStepFocus message.
   * @function verify
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqManualSingleStepFocus.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.direction != null && message.hasOwnProperty("direction"))
      if (!$util.isInteger(message.direction))
        return "direction: integer expected";
    return null;
  };

  /**
   * Creates a ReqManualSingleStepFocus message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqManualSingleStepFocus} ReqManualSingleStepFocus
   */
  ReqManualSingleStepFocus.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqManualSingleStepFocus) return object;
    var message = new $root.ReqManualSingleStepFocus();
    if (object.direction != null) message.direction = object.direction >>> 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqManualSingleStepFocus message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {ReqManualSingleStepFocus} message ReqManualSingleStepFocus
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqManualSingleStepFocus.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.direction = 0;
    if (message.direction != null && message.hasOwnProperty("direction"))
      object.direction = message.direction;
    return object;
  };

  /**
   * Converts this ReqManualSingleStepFocus to JSON.
   * @function toJSON
   * @memberof ReqManualSingleStepFocus
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqManualSingleStepFocus.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqManualSingleStepFocus
   * @function getTypeUrl
   * @memberof ReqManualSingleStepFocus
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqManualSingleStepFocus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqManualSingleStepFocus";
  };

  return ReqManualSingleStepFocus;
})();

$root.ReqManualContinuFocus = (function () {
  /**
   * Properties of a ReqManualContinuFocus.
   * @exports IReqManualContinuFocus
   * @interface IReqManualContinuFocus
   * @property {number|null} [direction] ReqManualContinuFocus direction
   */

  /**
   * Constructs a new ReqManualContinuFocus.
   * @exports ReqManualContinuFocus
   * @classdesc Represents a ReqManualContinuFocus.
   * @implements IReqManualContinuFocus
   * @constructor
   * @param {IReqManualContinuFocus=} [properties] Properties to set
   */
  function ReqManualContinuFocus(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqManualContinuFocus direction.
   * @member {number} direction
   * @memberof ReqManualContinuFocus
   * @instance
   */
  ReqManualContinuFocus.prototype.direction = 0;

  /**
   * Creates a new ReqManualContinuFocus instance using the specified properties.
   * @function create
   * @memberof ReqManualContinuFocus
   * @static
   * @param {IReqManualContinuFocus=} [properties] Properties to set
   * @returns {ReqManualContinuFocus} ReqManualContinuFocus instance
   */
  ReqManualContinuFocus.create = function create(properties) {
    return new ReqManualContinuFocus(properties);
  };

  /**
   * Encodes the specified ReqManualContinuFocus message. Does not implicitly {@link ReqManualContinuFocus.verify|verify} messages.
   * @function encode
   * @memberof ReqManualContinuFocus
   * @static
   * @param {IReqManualContinuFocus} message ReqManualContinuFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqManualContinuFocus.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.direction != null &&
      Object.hasOwnProperty.call(message, "direction")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.direction);
    return writer;
  };

  /**
   * Encodes the specified ReqManualContinuFocus message, length delimited. Does not implicitly {@link ReqManualContinuFocus.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqManualContinuFocus
   * @static
   * @param {IReqManualContinuFocus} message ReqManualContinuFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqManualContinuFocus.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqManualContinuFocus message from the specified reader or buffer.
   * @function decode
   * @memberof ReqManualContinuFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqManualContinuFocus} ReqManualContinuFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqManualContinuFocus.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqManualContinuFocus();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.direction = reader.uint32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqManualContinuFocus message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqManualContinuFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqManualContinuFocus} ReqManualContinuFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqManualContinuFocus.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqManualContinuFocus message.
   * @function verify
   * @memberof ReqManualContinuFocus
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqManualContinuFocus.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.direction != null && message.hasOwnProperty("direction"))
      if (!$util.isInteger(message.direction))
        return "direction: integer expected";
    return null;
  };

  /**
   * Creates a ReqManualContinuFocus message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqManualContinuFocus
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqManualContinuFocus} ReqManualContinuFocus
   */
  ReqManualContinuFocus.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqManualContinuFocus) return object;
    var message = new $root.ReqManualContinuFocus();
    if (object.direction != null) message.direction = object.direction >>> 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqManualContinuFocus message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqManualContinuFocus
   * @static
   * @param {ReqManualContinuFocus} message ReqManualContinuFocus
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqManualContinuFocus.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.direction = 0;
    if (message.direction != null && message.hasOwnProperty("direction"))
      object.direction = message.direction;
    return object;
  };

  /**
   * Converts this ReqManualContinuFocus to JSON.
   * @function toJSON
   * @memberof ReqManualContinuFocus
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqManualContinuFocus.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqManualContinuFocus
   * @function getTypeUrl
   * @memberof ReqManualContinuFocus
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqManualContinuFocus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqManualContinuFocus";
  };

  return ReqManualContinuFocus;
})();

$root.ReqStopManualContinuFocus = (function () {
  /**
   * Properties of a ReqStopManualContinuFocus.
   * @exports IReqStopManualContinuFocus
   * @interface IReqStopManualContinuFocus
   */

  /**
   * Constructs a new ReqStopManualContinuFocus.
   * @exports ReqStopManualContinuFocus
   * @classdesc Represents a ReqStopManualContinuFocus.
   * @implements IReqStopManualContinuFocus
   * @constructor
   * @param {IReqStopManualContinuFocus=} [properties] Properties to set
   */
  function ReqStopManualContinuFocus(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopManualContinuFocus instance using the specified properties.
   * @function create
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {IReqStopManualContinuFocus=} [properties] Properties to set
   * @returns {ReqStopManualContinuFocus} ReqStopManualContinuFocus instance
   */
  ReqStopManualContinuFocus.create = function create(properties) {
    return new ReqStopManualContinuFocus(properties);
  };

  /**
   * Encodes the specified ReqStopManualContinuFocus message. Does not implicitly {@link ReqStopManualContinuFocus.verify|verify} messages.
   * @function encode
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {IReqStopManualContinuFocus} message ReqStopManualContinuFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopManualContinuFocus.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopManualContinuFocus message, length delimited. Does not implicitly {@link ReqStopManualContinuFocus.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {IReqStopManualContinuFocus} message ReqStopManualContinuFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopManualContinuFocus.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopManualContinuFocus message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopManualContinuFocus} ReqStopManualContinuFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopManualContinuFocus.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopManualContinuFocus();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopManualContinuFocus message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopManualContinuFocus} ReqStopManualContinuFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopManualContinuFocus.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopManualContinuFocus message.
   * @function verify
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopManualContinuFocus.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopManualContinuFocus message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopManualContinuFocus} ReqStopManualContinuFocus
   */
  ReqStopManualContinuFocus.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopManualContinuFocus) return object;
    return new $root.ReqStopManualContinuFocus();
  };

  /**
   * Creates a plain object from a ReqStopManualContinuFocus message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {ReqStopManualContinuFocus} message ReqStopManualContinuFocus
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopManualContinuFocus.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopManualContinuFocus to JSON.
   * @function toJSON
   * @memberof ReqStopManualContinuFocus
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopManualContinuFocus.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopManualContinuFocus
   * @function getTypeUrl
   * @memberof ReqStopManualContinuFocus
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopManualContinuFocus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopManualContinuFocus";
  };

  return ReqStopManualContinuFocus;
})();

$root.ReqNormalAutoFocus = (function () {
  /**
   * Properties of a ReqNormalAutoFocus.
   * @exports IReqNormalAutoFocus
   * @interface IReqNormalAutoFocus
   * @property {number|null} [mode] ReqNormalAutoFocus mode
   * @property {number|null} [centerX] ReqNormalAutoFocus centerX
   * @property {number|null} [centerY] ReqNormalAutoFocus centerY
   */

  /**
   * Constructs a new ReqNormalAutoFocus.
   * @exports ReqNormalAutoFocus
   * @classdesc Represents a ReqNormalAutoFocus.
   * @implements IReqNormalAutoFocus
   * @constructor
   * @param {IReqNormalAutoFocus=} [properties] Properties to set
   */
  function ReqNormalAutoFocus(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqNormalAutoFocus mode.
   * @member {number} mode
   * @memberof ReqNormalAutoFocus
   * @instance
   */
  ReqNormalAutoFocus.prototype.mode = 0;

  /**
   * ReqNormalAutoFocus centerX.
   * @member {number} centerX
   * @memberof ReqNormalAutoFocus
   * @instance
   */
  ReqNormalAutoFocus.prototype.centerX = 0;

  /**
   * ReqNormalAutoFocus centerY.
   * @member {number} centerY
   * @memberof ReqNormalAutoFocus
   * @instance
   */
  ReqNormalAutoFocus.prototype.centerY = 0;

  /**
   * Creates a new ReqNormalAutoFocus instance using the specified properties.
   * @function create
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {IReqNormalAutoFocus=} [properties] Properties to set
   * @returns {ReqNormalAutoFocus} ReqNormalAutoFocus instance
   */
  ReqNormalAutoFocus.create = function create(properties) {
    return new ReqNormalAutoFocus(properties);
  };

  /**
   * Encodes the specified ReqNormalAutoFocus message. Does not implicitly {@link ReqNormalAutoFocus.verify|verify} messages.
   * @function encode
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {IReqNormalAutoFocus} message ReqNormalAutoFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqNormalAutoFocus.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.mode);
    if (
      message.centerX != null &&
      Object.hasOwnProperty.call(message, "centerX")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).uint32(message.centerX);
    if (
      message.centerY != null &&
      Object.hasOwnProperty.call(message, "centerY")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).uint32(message.centerY);
    return writer;
  };

  /**
   * Encodes the specified ReqNormalAutoFocus message, length delimited. Does not implicitly {@link ReqNormalAutoFocus.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {IReqNormalAutoFocus} message ReqNormalAutoFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqNormalAutoFocus.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqNormalAutoFocus message from the specified reader or buffer.
   * @function decode
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqNormalAutoFocus} ReqNormalAutoFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqNormalAutoFocus.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqNormalAutoFocus();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.uint32();
          break;
        }
        case 2: {
          message.centerX = reader.uint32();
          break;
        }
        case 3: {
          message.centerY = reader.uint32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqNormalAutoFocus message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqNormalAutoFocus} ReqNormalAutoFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqNormalAutoFocus.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqNormalAutoFocus message.
   * @function verify
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqNormalAutoFocus.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    if (message.centerX != null && message.hasOwnProperty("centerX"))
      if (!$util.isInteger(message.centerX)) return "centerX: integer expected";
    if (message.centerY != null && message.hasOwnProperty("centerY"))
      if (!$util.isInteger(message.centerY)) return "centerY: integer expected";
    return null;
  };

  /**
   * Creates a ReqNormalAutoFocus message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqNormalAutoFocus} ReqNormalAutoFocus
   */
  ReqNormalAutoFocus.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqNormalAutoFocus) return object;
    var message = new $root.ReqNormalAutoFocus();
    if (object.mode != null) message.mode = object.mode >>> 0;
    if (object.centerX != null) message.centerX = object.centerX >>> 0;
    if (object.centerY != null) message.centerY = object.centerY >>> 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqNormalAutoFocus message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {ReqNormalAutoFocus} message ReqNormalAutoFocus
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqNormalAutoFocus.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.mode = 0;
      object.centerX = 0;
      object.centerY = 0;
    }
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    if (message.centerX != null && message.hasOwnProperty("centerX"))
      object.centerX = message.centerX;
    if (message.centerY != null && message.hasOwnProperty("centerY"))
      object.centerY = message.centerY;
    return object;
  };

  /**
   * Converts this ReqNormalAutoFocus to JSON.
   * @function toJSON
   * @memberof ReqNormalAutoFocus
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqNormalAutoFocus.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqNormalAutoFocus
   * @function getTypeUrl
   * @memberof ReqNormalAutoFocus
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqNormalAutoFocus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqNormalAutoFocus";
  };

  return ReqNormalAutoFocus;
})();

$root.ReqAstroAutoFocus = (function () {
  /**
   * Properties of a ReqAstroAutoFocus.
   * @exports IReqAstroAutoFocus
   * @interface IReqAstroAutoFocus
   * @property {number|null} [mode] ReqAstroAutoFocus mode
   */

  /**
   * Constructs a new ReqAstroAutoFocus.
   * @exports ReqAstroAutoFocus
   * @classdesc Represents a ReqAstroAutoFocus.
   * @implements IReqAstroAutoFocus
   * @constructor
   * @param {IReqAstroAutoFocus=} [properties] Properties to set
   */
  function ReqAstroAutoFocus(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqAstroAutoFocus mode.
   * @member {number} mode
   * @memberof ReqAstroAutoFocus
   * @instance
   */
  ReqAstroAutoFocus.prototype.mode = 0;

  /**
   * Creates a new ReqAstroAutoFocus instance using the specified properties.
   * @function create
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {IReqAstroAutoFocus=} [properties] Properties to set
   * @returns {ReqAstroAutoFocus} ReqAstroAutoFocus instance
   */
  ReqAstroAutoFocus.create = function create(properties) {
    return new ReqAstroAutoFocus(properties);
  };

  /**
   * Encodes the specified ReqAstroAutoFocus message. Does not implicitly {@link ReqAstroAutoFocus.verify|verify} messages.
   * @function encode
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {IReqAstroAutoFocus} message ReqAstroAutoFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqAstroAutoFocus.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ReqAstroAutoFocus message, length delimited. Does not implicitly {@link ReqAstroAutoFocus.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {IReqAstroAutoFocus} message ReqAstroAutoFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqAstroAutoFocus.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqAstroAutoFocus message from the specified reader or buffer.
   * @function decode
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqAstroAutoFocus} ReqAstroAutoFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqAstroAutoFocus.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqAstroAutoFocus();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.uint32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqAstroAutoFocus message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqAstroAutoFocus} ReqAstroAutoFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqAstroAutoFocus.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqAstroAutoFocus message.
   * @function verify
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqAstroAutoFocus.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ReqAstroAutoFocus message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqAstroAutoFocus} ReqAstroAutoFocus
   */
  ReqAstroAutoFocus.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqAstroAutoFocus) return object;
    var message = new $root.ReqAstroAutoFocus();
    if (object.mode != null) message.mode = object.mode >>> 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqAstroAutoFocus message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {ReqAstroAutoFocus} message ReqAstroAutoFocus
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqAstroAutoFocus.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ReqAstroAutoFocus to JSON.
   * @function toJSON
   * @memberof ReqAstroAutoFocus
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqAstroAutoFocus.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqAstroAutoFocus
   * @function getTypeUrl
   * @memberof ReqAstroAutoFocus
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqAstroAutoFocus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqAstroAutoFocus";
  };

  return ReqAstroAutoFocus;
})();

$root.ReqStopAstroAutoFocus = (function () {
  /**
   * Properties of a ReqStopAstroAutoFocus.
   * @exports IReqStopAstroAutoFocus
   * @interface IReqStopAstroAutoFocus
   */

  /**
   * Constructs a new ReqStopAstroAutoFocus.
   * @exports ReqStopAstroAutoFocus
   * @classdesc Represents a ReqStopAstroAutoFocus.
   * @implements IReqStopAstroAutoFocus
   * @constructor
   * @param {IReqStopAstroAutoFocus=} [properties] Properties to set
   */
  function ReqStopAstroAutoFocus(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopAstroAutoFocus instance using the specified properties.
   * @function create
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {IReqStopAstroAutoFocus=} [properties] Properties to set
   * @returns {ReqStopAstroAutoFocus} ReqStopAstroAutoFocus instance
   */
  ReqStopAstroAutoFocus.create = function create(properties) {
    return new ReqStopAstroAutoFocus(properties);
  };

  /**
   * Encodes the specified ReqStopAstroAutoFocus message. Does not implicitly {@link ReqStopAstroAutoFocus.verify|verify} messages.
   * @function encode
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {IReqStopAstroAutoFocus} message ReqStopAstroAutoFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopAstroAutoFocus.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopAstroAutoFocus message, length delimited. Does not implicitly {@link ReqStopAstroAutoFocus.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {IReqStopAstroAutoFocus} message ReqStopAstroAutoFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopAstroAutoFocus.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopAstroAutoFocus message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopAstroAutoFocus} ReqStopAstroAutoFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopAstroAutoFocus.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopAstroAutoFocus();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopAstroAutoFocus message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopAstroAutoFocus} ReqStopAstroAutoFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopAstroAutoFocus.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopAstroAutoFocus message.
   * @function verify
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopAstroAutoFocus.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopAstroAutoFocus message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopAstroAutoFocus} ReqStopAstroAutoFocus
   */
  ReqStopAstroAutoFocus.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopAstroAutoFocus) return object;
    return new $root.ReqStopAstroAutoFocus();
  };

  /**
   * Creates a plain object from a ReqStopAstroAutoFocus message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {ReqStopAstroAutoFocus} message ReqStopAstroAutoFocus
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopAstroAutoFocus.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopAstroAutoFocus to JSON.
   * @function toJSON
   * @memberof ReqStopAstroAutoFocus
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopAstroAutoFocus.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopAstroAutoFocus
   * @function getTypeUrl
   * @memberof ReqStopAstroAutoFocus
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopAstroAutoFocus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopAstroAutoFocus";
  };

  return ReqStopAstroAutoFocus;
})();

$root.ReqMotorServiceJoystick = (function () {
  /**
   * Properties of a ReqMotorServiceJoystick.
   * @exports IReqMotorServiceJoystick
   * @interface IReqMotorServiceJoystick
   * @property {number|null} [vectorAngle] ReqMotorServiceJoystick vectorAngle
   * @property {number|null} [vectorLength] ReqMotorServiceJoystick vectorLength
   * @property {number|null} [speed] ReqMotorServiceJoystick speed
   */

  /**
   * Constructs a new ReqMotorServiceJoystick.
   * @exports ReqMotorServiceJoystick
   * @classdesc Represents a ReqMotorServiceJoystick.
   * @implements IReqMotorServiceJoystick
   * @constructor
   * @param {IReqMotorServiceJoystick=} [properties] Properties to set
   */
  function ReqMotorServiceJoystick(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorServiceJoystick vectorAngle.
   * @member {number} vectorAngle
   * @memberof ReqMotorServiceJoystick
   * @instance
   */
  ReqMotorServiceJoystick.prototype.vectorAngle = 0;

  /**
   * ReqMotorServiceJoystick vectorLength.
   * @member {number} vectorLength
   * @memberof ReqMotorServiceJoystick
   * @instance
   */
  ReqMotorServiceJoystick.prototype.vectorLength = 0;

  /**
   * ReqMotorServiceJoystick speed.
   * @member {number} speed
   * @memberof ReqMotorServiceJoystick
   * @instance
   */
  ReqMotorServiceJoystick.prototype.speed = 0;

  /**
   * Creates a new ReqMotorServiceJoystick instance using the specified properties.
   * @function create
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {IReqMotorServiceJoystick=} [properties] Properties to set
   * @returns {ReqMotorServiceJoystick} ReqMotorServiceJoystick instance
   */
  ReqMotorServiceJoystick.create = function create(properties) {
    return new ReqMotorServiceJoystick(properties);
  };

  /**
   * Encodes the specified ReqMotorServiceJoystick message. Does not implicitly {@link ReqMotorServiceJoystick.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {IReqMotorServiceJoystick} message ReqMotorServiceJoystick message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorServiceJoystick.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.vectorAngle != null &&
      Object.hasOwnProperty.call(message, "vectorAngle")
    )
      writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.vectorAngle);
    if (
      message.vectorLength != null &&
      Object.hasOwnProperty.call(message, "vectorLength")
    )
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.vectorLength);
    if (message.speed != null && Object.hasOwnProperty.call(message, "speed"))
      writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.speed);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorServiceJoystick message, length delimited. Does not implicitly {@link ReqMotorServiceJoystick.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {IReqMotorServiceJoystick} message ReqMotorServiceJoystick message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorServiceJoystick.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorServiceJoystick message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorServiceJoystick} ReqMotorServiceJoystick
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorServiceJoystick.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorServiceJoystick();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.vectorAngle = reader.double();
          break;
        }
        case 2: {
          message.vectorLength = reader.double();
          break;
        }
        case 3: {
          message.speed = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorServiceJoystick message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorServiceJoystick} ReqMotorServiceJoystick
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorServiceJoystick.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorServiceJoystick message.
   * @function verify
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorServiceJoystick.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.vectorAngle != null && message.hasOwnProperty("vectorAngle"))
      if (typeof message.vectorAngle !== "number")
        return "vectorAngle: number expected";
    if (message.vectorLength != null && message.hasOwnProperty("vectorLength"))
      if (typeof message.vectorLength !== "number")
        return "vectorLength: number expected";
    if (message.speed != null && message.hasOwnProperty("speed"))
      if (typeof message.speed !== "number") return "speed: number expected";
    return null;
  };

  /**
   * Creates a ReqMotorServiceJoystick message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorServiceJoystick} ReqMotorServiceJoystick
   */
  ReqMotorServiceJoystick.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorServiceJoystick) return object;
    var message = new $root.ReqMotorServiceJoystick();
    if (object.vectorAngle != null)
      message.vectorAngle = Number(object.vectorAngle);
    if (object.vectorLength != null)
      message.vectorLength = Number(object.vectorLength);
    if (object.speed != null) message.speed = Number(object.speed);
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorServiceJoystick message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {ReqMotorServiceJoystick} message ReqMotorServiceJoystick
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorServiceJoystick.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.vectorAngle = 0;
      object.vectorLength = 0;
      object.speed = 0;
    }
    if (message.vectorAngle != null && message.hasOwnProperty("vectorAngle"))
      object.vectorAngle =
        options.json && !isFinite(message.vectorAngle)
          ? String(message.vectorAngle)
          : message.vectorAngle;
    if (message.vectorLength != null && message.hasOwnProperty("vectorLength"))
      object.vectorLength =
        options.json && !isFinite(message.vectorLength)
          ? String(message.vectorLength)
          : message.vectorLength;
    if (message.speed != null && message.hasOwnProperty("speed"))
      object.speed =
        options.json && !isFinite(message.speed)
          ? String(message.speed)
          : message.speed;
    return object;
  };

  /**
   * Converts this ReqMotorServiceJoystick to JSON.
   * @function toJSON
   * @memberof ReqMotorServiceJoystick
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorServiceJoystick.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorServiceJoystick
   * @function getTypeUrl
   * @memberof ReqMotorServiceJoystick
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorServiceJoystick.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorServiceJoystick";
  };

  return ReqMotorServiceJoystick;
})();

$root.ReqMotorServiceJoystickFixedAngle = (function () {
  /**
   * Properties of a ReqMotorServiceJoystickFixedAngle.
   * @exports IReqMotorServiceJoystickFixedAngle
   * @interface IReqMotorServiceJoystickFixedAngle
   * @property {number|null} [vectorAngle] ReqMotorServiceJoystickFixedAngle vectorAngle
   * @property {number|null} [vectorLength] ReqMotorServiceJoystickFixedAngle vectorLength
   * @property {number|null} [speed] ReqMotorServiceJoystickFixedAngle speed
   */

  /**
   * Constructs a new ReqMotorServiceJoystickFixedAngle.
   * @exports ReqMotorServiceJoystickFixedAngle
   * @classdesc Represents a ReqMotorServiceJoystickFixedAngle.
   * @implements IReqMotorServiceJoystickFixedAngle
   * @constructor
   * @param {IReqMotorServiceJoystickFixedAngle=} [properties] Properties to set
   */
  function ReqMotorServiceJoystickFixedAngle(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorServiceJoystickFixedAngle vectorAngle.
   * @member {number} vectorAngle
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @instance
   */
  ReqMotorServiceJoystickFixedAngle.prototype.vectorAngle = 0;

  /**
   * ReqMotorServiceJoystickFixedAngle vectorLength.
   * @member {number} vectorLength
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @instance
   */
  ReqMotorServiceJoystickFixedAngle.prototype.vectorLength = 0;

  /**
   * ReqMotorServiceJoystickFixedAngle speed.
   * @member {number} speed
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @instance
   */
  ReqMotorServiceJoystickFixedAngle.prototype.speed = 0;

  /**
   * Creates a new ReqMotorServiceJoystickFixedAngle instance using the specified properties.
   * @function create
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {IReqMotorServiceJoystickFixedAngle=} [properties] Properties to set
   * @returns {ReqMotorServiceJoystickFixedAngle} ReqMotorServiceJoystickFixedAngle instance
   */
  ReqMotorServiceJoystickFixedAngle.create = function create(properties) {
    return new ReqMotorServiceJoystickFixedAngle(properties);
  };

  /**
   * Encodes the specified ReqMotorServiceJoystickFixedAngle message. Does not implicitly {@link ReqMotorServiceJoystickFixedAngle.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {IReqMotorServiceJoystickFixedAngle} message ReqMotorServiceJoystickFixedAngle message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorServiceJoystickFixedAngle.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.vectorAngle != null &&
      Object.hasOwnProperty.call(message, "vectorAngle")
    )
      writer.uint32(/* id 1, wireType 1 =*/ 9).double(message.vectorAngle);
    if (
      message.vectorLength != null &&
      Object.hasOwnProperty.call(message, "vectorLength")
    )
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.vectorLength);
    if (message.speed != null && Object.hasOwnProperty.call(message, "speed"))
      writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.speed);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorServiceJoystickFixedAngle message, length delimited. Does not implicitly {@link ReqMotorServiceJoystickFixedAngle.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {IReqMotorServiceJoystickFixedAngle} message ReqMotorServiceJoystickFixedAngle message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorServiceJoystickFixedAngle.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorServiceJoystickFixedAngle message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorServiceJoystickFixedAngle} ReqMotorServiceJoystickFixedAngle
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorServiceJoystickFixedAngle.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorServiceJoystickFixedAngle();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.vectorAngle = reader.double();
          break;
        }
        case 2: {
          message.vectorLength = reader.double();
          break;
        }
        case 3: {
          message.speed = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorServiceJoystickFixedAngle message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorServiceJoystickFixedAngle} ReqMotorServiceJoystickFixedAngle
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorServiceJoystickFixedAngle.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorServiceJoystickFixedAngle message.
   * @function verify
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorServiceJoystickFixedAngle.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.vectorAngle != null && message.hasOwnProperty("vectorAngle"))
      if (typeof message.vectorAngle !== "number")
        return "vectorAngle: number expected";
    if (message.vectorLength != null && message.hasOwnProperty("vectorLength"))
      if (typeof message.vectorLength !== "number")
        return "vectorLength: number expected";
    if (message.speed != null && message.hasOwnProperty("speed"))
      if (typeof message.speed !== "number") return "speed: number expected";
    return null;
  };

  /**
   * Creates a ReqMotorServiceJoystickFixedAngle message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorServiceJoystickFixedAngle} ReqMotorServiceJoystickFixedAngle
   */
  ReqMotorServiceJoystickFixedAngle.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorServiceJoystickFixedAngle)
      return object;
    var message = new $root.ReqMotorServiceJoystickFixedAngle();
    if (object.vectorAngle != null)
      message.vectorAngle = Number(object.vectorAngle);
    if (object.vectorLength != null)
      message.vectorLength = Number(object.vectorLength);
    if (object.speed != null) message.speed = Number(object.speed);
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorServiceJoystickFixedAngle message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {ReqMotorServiceJoystickFixedAngle} message ReqMotorServiceJoystickFixedAngle
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorServiceJoystickFixedAngle.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.vectorAngle = 0;
      object.vectorLength = 0;
      object.speed = 0;
    }
    if (message.vectorAngle != null && message.hasOwnProperty("vectorAngle"))
      object.vectorAngle =
        options.json && !isFinite(message.vectorAngle)
          ? String(message.vectorAngle)
          : message.vectorAngle;
    if (message.vectorLength != null && message.hasOwnProperty("vectorLength"))
      object.vectorLength =
        options.json && !isFinite(message.vectorLength)
          ? String(message.vectorLength)
          : message.vectorLength;
    if (message.speed != null && message.hasOwnProperty("speed"))
      object.speed =
        options.json && !isFinite(message.speed)
          ? String(message.speed)
          : message.speed;
    return object;
  };

  /**
   * Converts this ReqMotorServiceJoystickFixedAngle to JSON.
   * @function toJSON
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorServiceJoystickFixedAngle.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorServiceJoystickFixedAngle
   * @function getTypeUrl
   * @memberof ReqMotorServiceJoystickFixedAngle
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorServiceJoystickFixedAngle.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorServiceJoystickFixedAngle";
  };

  return ReqMotorServiceJoystickFixedAngle;
})();

$root.ReqMotorServiceJoystickStop = (function () {
  /**
   * Properties of a ReqMotorServiceJoystickStop.
   * @exports IReqMotorServiceJoystickStop
   * @interface IReqMotorServiceJoystickStop
   */

  /**
   * Constructs a new ReqMotorServiceJoystickStop.
   * @exports ReqMotorServiceJoystickStop
   * @classdesc Represents a ReqMotorServiceJoystickStop.
   * @implements IReqMotorServiceJoystickStop
   * @constructor
   * @param {IReqMotorServiceJoystickStop=} [properties] Properties to set
   */
  function ReqMotorServiceJoystickStop(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqMotorServiceJoystickStop instance using the specified properties.
   * @function create
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {IReqMotorServiceJoystickStop=} [properties] Properties to set
   * @returns {ReqMotorServiceJoystickStop} ReqMotorServiceJoystickStop instance
   */
  ReqMotorServiceJoystickStop.create = function create(properties) {
    return new ReqMotorServiceJoystickStop(properties);
  };

  /**
   * Encodes the specified ReqMotorServiceJoystickStop message. Does not implicitly {@link ReqMotorServiceJoystickStop.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {IReqMotorServiceJoystickStop} message ReqMotorServiceJoystickStop message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorServiceJoystickStop.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqMotorServiceJoystickStop message, length delimited. Does not implicitly {@link ReqMotorServiceJoystickStop.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {IReqMotorServiceJoystickStop} message ReqMotorServiceJoystickStop message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorServiceJoystickStop.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorServiceJoystickStop message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorServiceJoystickStop} ReqMotorServiceJoystickStop
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorServiceJoystickStop.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorServiceJoystickStop();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorServiceJoystickStop message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorServiceJoystickStop} ReqMotorServiceJoystickStop
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorServiceJoystickStop.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorServiceJoystickStop message.
   * @function verify
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorServiceJoystickStop.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqMotorServiceJoystickStop message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorServiceJoystickStop} ReqMotorServiceJoystickStop
   */
  ReqMotorServiceJoystickStop.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorServiceJoystickStop) return object;
    return new $root.ReqMotorServiceJoystickStop();
  };

  /**
   * Creates a plain object from a ReqMotorServiceJoystickStop message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {ReqMotorServiceJoystickStop} message ReqMotorServiceJoystickStop
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorServiceJoystickStop.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqMotorServiceJoystickStop to JSON.
   * @function toJSON
   * @memberof ReqMotorServiceJoystickStop
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorServiceJoystickStop.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorServiceJoystickStop
   * @function getTypeUrl
   * @memberof ReqMotorServiceJoystickStop
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorServiceJoystickStop.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorServiceJoystickStop";
  };

  return ReqMotorServiceJoystickStop;
})();

$root.ReqMotorRun = (function () {
  /**
   * Properties of a ReqMotorRun.
   * @exports IReqMotorRun
   * @interface IReqMotorRun
   * @property {number|null} [id] ReqMotorRun id
   * @property {number|null} [speed] ReqMotorRun speed
   * @property {boolean|null} [direction] ReqMotorRun direction
   * @property {number|null} [speedRamping] ReqMotorRun speedRamping
   * @property {number|null} [resolutionLevel] ReqMotorRun resolutionLevel
   */

  /**
   * Constructs a new ReqMotorRun.
   * @exports ReqMotorRun
   * @classdesc Represents a ReqMotorRun.
   * @implements IReqMotorRun
   * @constructor
   * @param {IReqMotorRun=} [properties] Properties to set
   */
  function ReqMotorRun(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorRun id.
   * @member {number} id
   * @memberof ReqMotorRun
   * @instance
   */
  ReqMotorRun.prototype.id = 0;

  /**
   * ReqMotorRun speed.
   * @member {number} speed
   * @memberof ReqMotorRun
   * @instance
   */
  ReqMotorRun.prototype.speed = 0;

  /**
   * ReqMotorRun direction.
   * @member {boolean} direction
   * @memberof ReqMotorRun
   * @instance
   */
  ReqMotorRun.prototype.direction = false;

  /**
   * ReqMotorRun speedRamping.
   * @member {number} speedRamping
   * @memberof ReqMotorRun
   * @instance
   */
  ReqMotorRun.prototype.speedRamping = 0;

  /**
   * ReqMotorRun resolutionLevel.
   * @member {number} resolutionLevel
   * @memberof ReqMotorRun
   * @instance
   */
  ReqMotorRun.prototype.resolutionLevel = 0;

  /**
   * Creates a new ReqMotorRun instance using the specified properties.
   * @function create
   * @memberof ReqMotorRun
   * @static
   * @param {IReqMotorRun=} [properties] Properties to set
   * @returns {ReqMotorRun} ReqMotorRun instance
   */
  ReqMotorRun.create = function create(properties) {
    return new ReqMotorRun(properties);
  };

  /**
   * Encodes the specified ReqMotorRun message. Does not implicitly {@link ReqMotorRun.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorRun
   * @static
   * @param {IReqMotorRun} message ReqMotorRun message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorRun.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    if (message.speed != null && Object.hasOwnProperty.call(message, "speed"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.speed);
    if (
      message.direction != null &&
      Object.hasOwnProperty.call(message, "direction")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).bool(message.direction);
    if (
      message.speedRamping != null &&
      Object.hasOwnProperty.call(message, "speedRamping")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.speedRamping);
    if (
      message.resolutionLevel != null &&
      Object.hasOwnProperty.call(message, "resolutionLevel")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).int32(message.resolutionLevel);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorRun message, length delimited. Does not implicitly {@link ReqMotorRun.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorRun
   * @static
   * @param {IReqMotorRun} message ReqMotorRun message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorRun.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorRun message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorRun
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorRun} ReqMotorRun
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorRun.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorRun();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        case 2: {
          message.speed = reader.double();
          break;
        }
        case 3: {
          message.direction = reader.bool();
          break;
        }
        case 4: {
          message.speedRamping = reader.int32();
          break;
        }
        case 5: {
          message.resolutionLevel = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorRun message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorRun
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorRun} ReqMotorRun
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorRun.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorRun message.
   * @function verify
   * @memberof ReqMotorRun
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorRun.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.speed != null && message.hasOwnProperty("speed"))
      if (typeof message.speed !== "number") return "speed: number expected";
    if (message.direction != null && message.hasOwnProperty("direction"))
      if (typeof message.direction !== "boolean")
        return "direction: boolean expected";
    if (message.speedRamping != null && message.hasOwnProperty("speedRamping"))
      if (!$util.isInteger(message.speedRamping))
        return "speedRamping: integer expected";
    if (
      message.resolutionLevel != null &&
      message.hasOwnProperty("resolutionLevel")
    )
      if (!$util.isInteger(message.resolutionLevel))
        return "resolutionLevel: integer expected";
    return null;
  };

  /**
   * Creates a ReqMotorRun message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorRun
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorRun} ReqMotorRun
   */
  ReqMotorRun.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorRun) return object;
    var message = new $root.ReqMotorRun();
    if (object.id != null) message.id = object.id | 0;
    if (object.speed != null) message.speed = Number(object.speed);
    if (object.direction != null) message.direction = Boolean(object.direction);
    if (object.speedRamping != null)
      message.speedRamping = object.speedRamping | 0;
    if (object.resolutionLevel != null)
      message.resolutionLevel = object.resolutionLevel | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorRun message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorRun
   * @static
   * @param {ReqMotorRun} message ReqMotorRun
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorRun.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = 0;
      object.speed = 0;
      object.direction = false;
      object.speedRamping = 0;
      object.resolutionLevel = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.speed != null && message.hasOwnProperty("speed"))
      object.speed =
        options.json && !isFinite(message.speed)
          ? String(message.speed)
          : message.speed;
    if (message.direction != null && message.hasOwnProperty("direction"))
      object.direction = message.direction;
    if (message.speedRamping != null && message.hasOwnProperty("speedRamping"))
      object.speedRamping = message.speedRamping;
    if (
      message.resolutionLevel != null &&
      message.hasOwnProperty("resolutionLevel")
    )
      object.resolutionLevel = message.resolutionLevel;
    return object;
  };

  /**
   * Converts this ReqMotorRun to JSON.
   * @function toJSON
   * @memberof ReqMotorRun
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorRun.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorRun
   * @function getTypeUrl
   * @memberof ReqMotorRun
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorRun.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorRun";
  };

  return ReqMotorRun;
})();

$root.ReqMotorRunInPulse = (function () {
  /**
   * Properties of a ReqMotorRunInPulse.
   * @exports IReqMotorRunInPulse
   * @interface IReqMotorRunInPulse
   * @property {number|null} [id] ReqMotorRunInPulse id
   * @property {number|null} [frequency] ReqMotorRunInPulse frequency
   * @property {boolean|null} [direction] ReqMotorRunInPulse direction
   * @property {number|null} [speedRamping] ReqMotorRunInPulse speedRamping
   * @property {number|null} [resolution] ReqMotorRunInPulse resolution
   * @property {number|null} [pulse] ReqMotorRunInPulse pulse
   * @property {boolean|null} [mode] ReqMotorRunInPulse mode
   */

  /**
   * Constructs a new ReqMotorRunInPulse.
   * @exports ReqMotorRunInPulse
   * @classdesc Represents a ReqMotorRunInPulse.
   * @implements IReqMotorRunInPulse
   * @constructor
   * @param {IReqMotorRunInPulse=} [properties] Properties to set
   */
  function ReqMotorRunInPulse(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorRunInPulse id.
   * @member {number} id
   * @memberof ReqMotorRunInPulse
   * @instance
   */
  ReqMotorRunInPulse.prototype.id = 0;

  /**
   * ReqMotorRunInPulse frequency.
   * @member {number} frequency
   * @memberof ReqMotorRunInPulse
   * @instance
   */
  ReqMotorRunInPulse.prototype.frequency = 0;

  /**
   * ReqMotorRunInPulse direction.
   * @member {boolean} direction
   * @memberof ReqMotorRunInPulse
   * @instance
   */
  ReqMotorRunInPulse.prototype.direction = false;

  /**
   * ReqMotorRunInPulse speedRamping.
   * @member {number} speedRamping
   * @memberof ReqMotorRunInPulse
   * @instance
   */
  ReqMotorRunInPulse.prototype.speedRamping = 0;

  /**
   * ReqMotorRunInPulse resolution.
   * @member {number} resolution
   * @memberof ReqMotorRunInPulse
   * @instance
   */
  ReqMotorRunInPulse.prototype.resolution = 0;

  /**
   * ReqMotorRunInPulse pulse.
   * @member {number} pulse
   * @memberof ReqMotorRunInPulse
   * @instance
   */
  ReqMotorRunInPulse.prototype.pulse = 0;

  /**
   * ReqMotorRunInPulse mode.
   * @member {boolean} mode
   * @memberof ReqMotorRunInPulse
   * @instance
   */
  ReqMotorRunInPulse.prototype.mode = false;

  /**
   * Creates a new ReqMotorRunInPulse instance using the specified properties.
   * @function create
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {IReqMotorRunInPulse=} [properties] Properties to set
   * @returns {ReqMotorRunInPulse} ReqMotorRunInPulse instance
   */
  ReqMotorRunInPulse.create = function create(properties) {
    return new ReqMotorRunInPulse(properties);
  };

  /**
   * Encodes the specified ReqMotorRunInPulse message. Does not implicitly {@link ReqMotorRunInPulse.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {IReqMotorRunInPulse} message ReqMotorRunInPulse message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorRunInPulse.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    if (
      message.frequency != null &&
      Object.hasOwnProperty.call(message, "frequency")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.frequency);
    if (
      message.direction != null &&
      Object.hasOwnProperty.call(message, "direction")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).bool(message.direction);
    if (
      message.speedRamping != null &&
      Object.hasOwnProperty.call(message, "speedRamping")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.speedRamping);
    if (
      message.resolution != null &&
      Object.hasOwnProperty.call(message, "resolution")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).int32(message.resolution);
    if (message.pulse != null && Object.hasOwnProperty.call(message, "pulse"))
      writer.uint32(/* id 6, wireType 0 =*/ 48).int32(message.pulse);
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 7, wireType 0 =*/ 56).bool(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorRunInPulse message, length delimited. Does not implicitly {@link ReqMotorRunInPulse.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {IReqMotorRunInPulse} message ReqMotorRunInPulse message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorRunInPulse.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorRunInPulse message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorRunInPulse} ReqMotorRunInPulse
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorRunInPulse.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorRunInPulse();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        case 2: {
          message.frequency = reader.int32();
          break;
        }
        case 3: {
          message.direction = reader.bool();
          break;
        }
        case 4: {
          message.speedRamping = reader.int32();
          break;
        }
        case 5: {
          message.resolution = reader.int32();
          break;
        }
        case 6: {
          message.pulse = reader.int32();
          break;
        }
        case 7: {
          message.mode = reader.bool();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorRunInPulse message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorRunInPulse} ReqMotorRunInPulse
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorRunInPulse.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorRunInPulse message.
   * @function verify
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorRunInPulse.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.frequency != null && message.hasOwnProperty("frequency"))
      if (!$util.isInteger(message.frequency))
        return "frequency: integer expected";
    if (message.direction != null && message.hasOwnProperty("direction"))
      if (typeof message.direction !== "boolean")
        return "direction: boolean expected";
    if (message.speedRamping != null && message.hasOwnProperty("speedRamping"))
      if (!$util.isInteger(message.speedRamping))
        return "speedRamping: integer expected";
    if (message.resolution != null && message.hasOwnProperty("resolution"))
      if (!$util.isInteger(message.resolution))
        return "resolution: integer expected";
    if (message.pulse != null && message.hasOwnProperty("pulse"))
      if (!$util.isInteger(message.pulse)) return "pulse: integer expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (typeof message.mode !== "boolean") return "mode: boolean expected";
    return null;
  };

  /**
   * Creates a ReqMotorRunInPulse message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorRunInPulse} ReqMotorRunInPulse
   */
  ReqMotorRunInPulse.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorRunInPulse) return object;
    var message = new $root.ReqMotorRunInPulse();
    if (object.id != null) message.id = object.id | 0;
    if (object.frequency != null) message.frequency = object.frequency | 0;
    if (object.direction != null) message.direction = Boolean(object.direction);
    if (object.speedRamping != null)
      message.speedRamping = object.speedRamping | 0;
    if (object.resolution != null) message.resolution = object.resolution | 0;
    if (object.pulse != null) message.pulse = object.pulse | 0;
    if (object.mode != null) message.mode = Boolean(object.mode);
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorRunInPulse message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {ReqMotorRunInPulse} message ReqMotorRunInPulse
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorRunInPulse.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = 0;
      object.frequency = 0;
      object.direction = false;
      object.speedRamping = 0;
      object.resolution = 0;
      object.pulse = 0;
      object.mode = false;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.frequency != null && message.hasOwnProperty("frequency"))
      object.frequency = message.frequency;
    if (message.direction != null && message.hasOwnProperty("direction"))
      object.direction = message.direction;
    if (message.speedRamping != null && message.hasOwnProperty("speedRamping"))
      object.speedRamping = message.speedRamping;
    if (message.resolution != null && message.hasOwnProperty("resolution"))
      object.resolution = message.resolution;
    if (message.pulse != null && message.hasOwnProperty("pulse"))
      object.pulse = message.pulse;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ReqMotorRunInPulse to JSON.
   * @function toJSON
   * @memberof ReqMotorRunInPulse
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorRunInPulse.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorRunInPulse
   * @function getTypeUrl
   * @memberof ReqMotorRunInPulse
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorRunInPulse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorRunInPulse";
  };

  return ReqMotorRunInPulse;
})();

$root.ReqMotorRunTo = (function () {
  /**
   * Properties of a ReqMotorRunTo.
   * @exports IReqMotorRunTo
   * @interface IReqMotorRunTo
   * @property {number|null} [id] ReqMotorRunTo id
   * @property {number|null} [endPosition] ReqMotorRunTo endPosition
   * @property {number|null} [speed] ReqMotorRunTo speed
   * @property {number|null} [speedRamping] ReqMotorRunTo speedRamping
   * @property {number|null} [resolutionLevel] ReqMotorRunTo resolutionLevel
   */

  /**
   * Constructs a new ReqMotorRunTo.
   * @exports ReqMotorRunTo
   * @classdesc Represents a ReqMotorRunTo.
   * @implements IReqMotorRunTo
   * @constructor
   * @param {IReqMotorRunTo=} [properties] Properties to set
   */
  function ReqMotorRunTo(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorRunTo id.
   * @member {number} id
   * @memberof ReqMotorRunTo
   * @instance
   */
  ReqMotorRunTo.prototype.id = 0;

  /**
   * ReqMotorRunTo endPosition.
   * @member {number} endPosition
   * @memberof ReqMotorRunTo
   * @instance
   */
  ReqMotorRunTo.prototype.endPosition = 0;

  /**
   * ReqMotorRunTo speed.
   * @member {number} speed
   * @memberof ReqMotorRunTo
   * @instance
   */
  ReqMotorRunTo.prototype.speed = 0;

  /**
   * ReqMotorRunTo speedRamping.
   * @member {number} speedRamping
   * @memberof ReqMotorRunTo
   * @instance
   */
  ReqMotorRunTo.prototype.speedRamping = 0;

  /**
   * ReqMotorRunTo resolutionLevel.
   * @member {number} resolutionLevel
   * @memberof ReqMotorRunTo
   * @instance
   */
  ReqMotorRunTo.prototype.resolutionLevel = 0;

  /**
   * Creates a new ReqMotorRunTo instance using the specified properties.
   * @function create
   * @memberof ReqMotorRunTo
   * @static
   * @param {IReqMotorRunTo=} [properties] Properties to set
   * @returns {ReqMotorRunTo} ReqMotorRunTo instance
   */
  ReqMotorRunTo.create = function create(properties) {
    return new ReqMotorRunTo(properties);
  };

  /**
   * Encodes the specified ReqMotorRunTo message. Does not implicitly {@link ReqMotorRunTo.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorRunTo
   * @static
   * @param {IReqMotorRunTo} message ReqMotorRunTo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorRunTo.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    if (
      message.endPosition != null &&
      Object.hasOwnProperty.call(message, "endPosition")
    )
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.endPosition);
    if (message.speed != null && Object.hasOwnProperty.call(message, "speed"))
      writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.speed);
    if (
      message.speedRamping != null &&
      Object.hasOwnProperty.call(message, "speedRamping")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.speedRamping);
    if (
      message.resolutionLevel != null &&
      Object.hasOwnProperty.call(message, "resolutionLevel")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).int32(message.resolutionLevel);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorRunTo message, length delimited. Does not implicitly {@link ReqMotorRunTo.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorRunTo
   * @static
   * @param {IReqMotorRunTo} message ReqMotorRunTo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorRunTo.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorRunTo message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorRunTo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorRunTo} ReqMotorRunTo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorRunTo.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorRunTo();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        case 2: {
          message.endPosition = reader.double();
          break;
        }
        case 3: {
          message.speed = reader.double();
          break;
        }
        case 4: {
          message.speedRamping = reader.int32();
          break;
        }
        case 5: {
          message.resolutionLevel = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorRunTo message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorRunTo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorRunTo} ReqMotorRunTo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorRunTo.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorRunTo message.
   * @function verify
   * @memberof ReqMotorRunTo
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorRunTo.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.endPosition != null && message.hasOwnProperty("endPosition"))
      if (typeof message.endPosition !== "number")
        return "endPosition: number expected";
    if (message.speed != null && message.hasOwnProperty("speed"))
      if (typeof message.speed !== "number") return "speed: number expected";
    if (message.speedRamping != null && message.hasOwnProperty("speedRamping"))
      if (!$util.isInteger(message.speedRamping))
        return "speedRamping: integer expected";
    if (
      message.resolutionLevel != null &&
      message.hasOwnProperty("resolutionLevel")
    )
      if (!$util.isInteger(message.resolutionLevel))
        return "resolutionLevel: integer expected";
    return null;
  };

  /**
   * Creates a ReqMotorRunTo message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorRunTo
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorRunTo} ReqMotorRunTo
   */
  ReqMotorRunTo.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorRunTo) return object;
    var message = new $root.ReqMotorRunTo();
    if (object.id != null) message.id = object.id | 0;
    if (object.endPosition != null)
      message.endPosition = Number(object.endPosition);
    if (object.speed != null) message.speed = Number(object.speed);
    if (object.speedRamping != null)
      message.speedRamping = object.speedRamping | 0;
    if (object.resolutionLevel != null)
      message.resolutionLevel = object.resolutionLevel | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorRunTo message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorRunTo
   * @static
   * @param {ReqMotorRunTo} message ReqMotorRunTo
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorRunTo.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = 0;
      object.endPosition = 0;
      object.speed = 0;
      object.speedRamping = 0;
      object.resolutionLevel = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.endPosition != null && message.hasOwnProperty("endPosition"))
      object.endPosition =
        options.json && !isFinite(message.endPosition)
          ? String(message.endPosition)
          : message.endPosition;
    if (message.speed != null && message.hasOwnProperty("speed"))
      object.speed =
        options.json && !isFinite(message.speed)
          ? String(message.speed)
          : message.speed;
    if (message.speedRamping != null && message.hasOwnProperty("speedRamping"))
      object.speedRamping = message.speedRamping;
    if (
      message.resolutionLevel != null &&
      message.hasOwnProperty("resolutionLevel")
    )
      object.resolutionLevel = message.resolutionLevel;
    return object;
  };

  /**
   * Converts this ReqMotorRunTo to JSON.
   * @function toJSON
   * @memberof ReqMotorRunTo
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorRunTo.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorRunTo
   * @function getTypeUrl
   * @memberof ReqMotorRunTo
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorRunTo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorRunTo";
  };

  return ReqMotorRunTo;
})();

$root.ReqMotorGetPosition = (function () {
  /**
   * Properties of a ReqMotorGetPosition.
   * @exports IReqMotorGetPosition
   * @interface IReqMotorGetPosition
   * @property {number|null} [id] ReqMotorGetPosition id
   */

  /**
   * Constructs a new ReqMotorGetPosition.
   * @exports ReqMotorGetPosition
   * @classdesc Represents a ReqMotorGetPosition.
   * @implements IReqMotorGetPosition
   * @constructor
   * @param {IReqMotorGetPosition=} [properties] Properties to set
   */
  function ReqMotorGetPosition(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorGetPosition id.
   * @member {number} id
   * @memberof ReqMotorGetPosition
   * @instance
   */
  ReqMotorGetPosition.prototype.id = 0;

  /**
   * Creates a new ReqMotorGetPosition instance using the specified properties.
   * @function create
   * @memberof ReqMotorGetPosition
   * @static
   * @param {IReqMotorGetPosition=} [properties] Properties to set
   * @returns {ReqMotorGetPosition} ReqMotorGetPosition instance
   */
  ReqMotorGetPosition.create = function create(properties) {
    return new ReqMotorGetPosition(properties);
  };

  /**
   * Encodes the specified ReqMotorGetPosition message. Does not implicitly {@link ReqMotorGetPosition.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorGetPosition
   * @static
   * @param {IReqMotorGetPosition} message ReqMotorGetPosition message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorGetPosition.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorGetPosition message, length delimited. Does not implicitly {@link ReqMotorGetPosition.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorGetPosition
   * @static
   * @param {IReqMotorGetPosition} message ReqMotorGetPosition message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorGetPosition.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorGetPosition message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorGetPosition
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorGetPosition} ReqMotorGetPosition
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorGetPosition.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorGetPosition();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorGetPosition message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorGetPosition
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorGetPosition} ReqMotorGetPosition
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorGetPosition.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorGetPosition message.
   * @function verify
   * @memberof ReqMotorGetPosition
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorGetPosition.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    return null;
  };

  /**
   * Creates a ReqMotorGetPosition message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorGetPosition
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorGetPosition} ReqMotorGetPosition
   */
  ReqMotorGetPosition.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorGetPosition) return object;
    var message = new $root.ReqMotorGetPosition();
    if (object.id != null) message.id = object.id | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorGetPosition message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorGetPosition
   * @static
   * @param {ReqMotorGetPosition} message ReqMotorGetPosition
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorGetPosition.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.id = 0;
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    return object;
  };

  /**
   * Converts this ReqMotorGetPosition to JSON.
   * @function toJSON
   * @memberof ReqMotorGetPosition
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorGetPosition.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorGetPosition
   * @function getTypeUrl
   * @memberof ReqMotorGetPosition
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorGetPosition.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorGetPosition";
  };

  return ReqMotorGetPosition;
})();

$root.ReqMotorStop = (function () {
  /**
   * Properties of a ReqMotorStop.
   * @exports IReqMotorStop
   * @interface IReqMotorStop
   * @property {number|null} [id] ReqMotorStop id
   */

  /**
   * Constructs a new ReqMotorStop.
   * @exports ReqMotorStop
   * @classdesc Represents a ReqMotorStop.
   * @implements IReqMotorStop
   * @constructor
   * @param {IReqMotorStop=} [properties] Properties to set
   */
  function ReqMotorStop(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorStop id.
   * @member {number} id
   * @memberof ReqMotorStop
   * @instance
   */
  ReqMotorStop.prototype.id = 0;

  /**
   * Creates a new ReqMotorStop instance using the specified properties.
   * @function create
   * @memberof ReqMotorStop
   * @static
   * @param {IReqMotorStop=} [properties] Properties to set
   * @returns {ReqMotorStop} ReqMotorStop instance
   */
  ReqMotorStop.create = function create(properties) {
    return new ReqMotorStop(properties);
  };

  /**
   * Encodes the specified ReqMotorStop message. Does not implicitly {@link ReqMotorStop.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorStop
   * @static
   * @param {IReqMotorStop} message ReqMotorStop message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorStop.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorStop message, length delimited. Does not implicitly {@link ReqMotorStop.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorStop
   * @static
   * @param {IReqMotorStop} message ReqMotorStop message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorStop.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorStop message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorStop
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorStop} ReqMotorStop
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorStop.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorStop();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorStop message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorStop
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorStop} ReqMotorStop
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorStop.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorStop message.
   * @function verify
   * @memberof ReqMotorStop
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorStop.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    return null;
  };

  /**
   * Creates a ReqMotorStop message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorStop
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorStop} ReqMotorStop
   */
  ReqMotorStop.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorStop) return object;
    var message = new $root.ReqMotorStop();
    if (object.id != null) message.id = object.id | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorStop message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorStop
   * @static
   * @param {ReqMotorStop} message ReqMotorStop
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorStop.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.id = 0;
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    return object;
  };

  /**
   * Converts this ReqMotorStop to JSON.
   * @function toJSON
   * @memberof ReqMotorStop
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorStop.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorStop
   * @function getTypeUrl
   * @memberof ReqMotorStop
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorStop.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorStop";
  };

  return ReqMotorStop;
})();

$root.ReqMotorReset = (function () {
  /**
   * Properties of a ReqMotorReset.
   * @exports IReqMotorReset
   * @interface IReqMotorReset
   * @property {number|null} [id] ReqMotorReset id
   * @property {boolean|null} [direction] ReqMotorReset direction
   */

  /**
   * Constructs a new ReqMotorReset.
   * @exports ReqMotorReset
   * @classdesc Represents a ReqMotorReset.
   * @implements IReqMotorReset
   * @constructor
   * @param {IReqMotorReset=} [properties] Properties to set
   */
  function ReqMotorReset(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorReset id.
   * @member {number} id
   * @memberof ReqMotorReset
   * @instance
   */
  ReqMotorReset.prototype.id = 0;

  /**
   * ReqMotorReset direction.
   * @member {boolean} direction
   * @memberof ReqMotorReset
   * @instance
   */
  ReqMotorReset.prototype.direction = false;

  /**
   * Creates a new ReqMotorReset instance using the specified properties.
   * @function create
   * @memberof ReqMotorReset
   * @static
   * @param {IReqMotorReset=} [properties] Properties to set
   * @returns {ReqMotorReset} ReqMotorReset instance
   */
  ReqMotorReset.create = function create(properties) {
    return new ReqMotorReset(properties);
  };

  /**
   * Encodes the specified ReqMotorReset message. Does not implicitly {@link ReqMotorReset.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorReset
   * @static
   * @param {IReqMotorReset} message ReqMotorReset message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorReset.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    if (
      message.direction != null &&
      Object.hasOwnProperty.call(message, "direction")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).bool(message.direction);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorReset message, length delimited. Does not implicitly {@link ReqMotorReset.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorReset
   * @static
   * @param {IReqMotorReset} message ReqMotorReset message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorReset.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorReset message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorReset
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorReset} ReqMotorReset
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorReset.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorReset();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        case 2: {
          message.direction = reader.bool();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorReset message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorReset
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorReset} ReqMotorReset
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorReset.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorReset message.
   * @function verify
   * @memberof ReqMotorReset
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorReset.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.direction != null && message.hasOwnProperty("direction"))
      if (typeof message.direction !== "boolean")
        return "direction: boolean expected";
    return null;
  };

  /**
   * Creates a ReqMotorReset message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorReset
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorReset} ReqMotorReset
   */
  ReqMotorReset.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorReset) return object;
    var message = new $root.ReqMotorReset();
    if (object.id != null) message.id = object.id | 0;
    if (object.direction != null) message.direction = Boolean(object.direction);
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorReset message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorReset
   * @static
   * @param {ReqMotorReset} message ReqMotorReset
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorReset.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = 0;
      object.direction = false;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.direction != null && message.hasOwnProperty("direction"))
      object.direction = message.direction;
    return object;
  };

  /**
   * Converts this ReqMotorReset to JSON.
   * @function toJSON
   * @memberof ReqMotorReset
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorReset.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorReset
   * @function getTypeUrl
   * @memberof ReqMotorReset
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorReset.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorReset";
  };

  return ReqMotorReset;
})();

$root.ReqMotorChangeSpeed = (function () {
  /**
   * Properties of a ReqMotorChangeSpeed.
   * @exports IReqMotorChangeSpeed
   * @interface IReqMotorChangeSpeed
   * @property {number|null} [id] ReqMotorChangeSpeed id
   * @property {number|null} [speed] ReqMotorChangeSpeed speed
   */

  /**
   * Constructs a new ReqMotorChangeSpeed.
   * @exports ReqMotorChangeSpeed
   * @classdesc Represents a ReqMotorChangeSpeed.
   * @implements IReqMotorChangeSpeed
   * @constructor
   * @param {IReqMotorChangeSpeed=} [properties] Properties to set
   */
  function ReqMotorChangeSpeed(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorChangeSpeed id.
   * @member {number} id
   * @memberof ReqMotorChangeSpeed
   * @instance
   */
  ReqMotorChangeSpeed.prototype.id = 0;

  /**
   * ReqMotorChangeSpeed speed.
   * @member {number} speed
   * @memberof ReqMotorChangeSpeed
   * @instance
   */
  ReqMotorChangeSpeed.prototype.speed = 0;

  /**
   * Creates a new ReqMotorChangeSpeed instance using the specified properties.
   * @function create
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {IReqMotorChangeSpeed=} [properties] Properties to set
   * @returns {ReqMotorChangeSpeed} ReqMotorChangeSpeed instance
   */
  ReqMotorChangeSpeed.create = function create(properties) {
    return new ReqMotorChangeSpeed(properties);
  };

  /**
   * Encodes the specified ReqMotorChangeSpeed message. Does not implicitly {@link ReqMotorChangeSpeed.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {IReqMotorChangeSpeed} message ReqMotorChangeSpeed message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorChangeSpeed.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    if (message.speed != null && Object.hasOwnProperty.call(message, "speed"))
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.speed);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorChangeSpeed message, length delimited. Does not implicitly {@link ReqMotorChangeSpeed.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {IReqMotorChangeSpeed} message ReqMotorChangeSpeed message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorChangeSpeed.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorChangeSpeed message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorChangeSpeed} ReqMotorChangeSpeed
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorChangeSpeed.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorChangeSpeed();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        case 2: {
          message.speed = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorChangeSpeed message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorChangeSpeed} ReqMotorChangeSpeed
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorChangeSpeed.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorChangeSpeed message.
   * @function verify
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorChangeSpeed.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.speed != null && message.hasOwnProperty("speed"))
      if (typeof message.speed !== "number") return "speed: number expected";
    return null;
  };

  /**
   * Creates a ReqMotorChangeSpeed message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorChangeSpeed} ReqMotorChangeSpeed
   */
  ReqMotorChangeSpeed.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorChangeSpeed) return object;
    var message = new $root.ReqMotorChangeSpeed();
    if (object.id != null) message.id = object.id | 0;
    if (object.speed != null) message.speed = Number(object.speed);
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorChangeSpeed message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {ReqMotorChangeSpeed} message ReqMotorChangeSpeed
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorChangeSpeed.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = 0;
      object.speed = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.speed != null && message.hasOwnProperty("speed"))
      object.speed =
        options.json && !isFinite(message.speed)
          ? String(message.speed)
          : message.speed;
    return object;
  };

  /**
   * Converts this ReqMotorChangeSpeed to JSON.
   * @function toJSON
   * @memberof ReqMotorChangeSpeed
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorChangeSpeed.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorChangeSpeed
   * @function getTypeUrl
   * @memberof ReqMotorChangeSpeed
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorChangeSpeed.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorChangeSpeed";
  };

  return ReqMotorChangeSpeed;
})();

$root.ReqMotorChangeDirection = (function () {
  /**
   * Properties of a ReqMotorChangeDirection.
   * @exports IReqMotorChangeDirection
   * @interface IReqMotorChangeDirection
   * @property {number|null} [id] ReqMotorChangeDirection id
   * @property {boolean|null} [direction] ReqMotorChangeDirection direction
   */

  /**
   * Constructs a new ReqMotorChangeDirection.
   * @exports ReqMotorChangeDirection
   * @classdesc Represents a ReqMotorChangeDirection.
   * @implements IReqMotorChangeDirection
   * @constructor
   * @param {IReqMotorChangeDirection=} [properties] Properties to set
   */
  function ReqMotorChangeDirection(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMotorChangeDirection id.
   * @member {number} id
   * @memberof ReqMotorChangeDirection
   * @instance
   */
  ReqMotorChangeDirection.prototype.id = 0;

  /**
   * ReqMotorChangeDirection direction.
   * @member {boolean} direction
   * @memberof ReqMotorChangeDirection
   * @instance
   */
  ReqMotorChangeDirection.prototype.direction = false;

  /**
   * Creates a new ReqMotorChangeDirection instance using the specified properties.
   * @function create
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {IReqMotorChangeDirection=} [properties] Properties to set
   * @returns {ReqMotorChangeDirection} ReqMotorChangeDirection instance
   */
  ReqMotorChangeDirection.create = function create(properties) {
    return new ReqMotorChangeDirection(properties);
  };

  /**
   * Encodes the specified ReqMotorChangeDirection message. Does not implicitly {@link ReqMotorChangeDirection.verify|verify} messages.
   * @function encode
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {IReqMotorChangeDirection} message ReqMotorChangeDirection message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorChangeDirection.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    if (
      message.direction != null &&
      Object.hasOwnProperty.call(message, "direction")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).bool(message.direction);
    return writer;
  };

  /**
   * Encodes the specified ReqMotorChangeDirection message, length delimited. Does not implicitly {@link ReqMotorChangeDirection.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {IReqMotorChangeDirection} message ReqMotorChangeDirection message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMotorChangeDirection.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMotorChangeDirection message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMotorChangeDirection} ReqMotorChangeDirection
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorChangeDirection.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMotorChangeDirection();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        case 2: {
          message.direction = reader.bool();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMotorChangeDirection message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMotorChangeDirection} ReqMotorChangeDirection
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMotorChangeDirection.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMotorChangeDirection message.
   * @function verify
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMotorChangeDirection.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.direction != null && message.hasOwnProperty("direction"))
      if (typeof message.direction !== "boolean")
        return "direction: boolean expected";
    return null;
  };

  /**
   * Creates a ReqMotorChangeDirection message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMotorChangeDirection} ReqMotorChangeDirection
   */
  ReqMotorChangeDirection.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMotorChangeDirection) return object;
    var message = new $root.ReqMotorChangeDirection();
    if (object.id != null) message.id = object.id | 0;
    if (object.direction != null) message.direction = Boolean(object.direction);
    return message;
  };

  /**
   * Creates a plain object from a ReqMotorChangeDirection message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {ReqMotorChangeDirection} message ReqMotorChangeDirection
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMotorChangeDirection.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = 0;
      object.direction = false;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.direction != null && message.hasOwnProperty("direction"))
      object.direction = message.direction;
    return object;
  };

  /**
   * Converts this ReqMotorChangeDirection to JSON.
   * @function toJSON
   * @memberof ReqMotorChangeDirection
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMotorChangeDirection.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMotorChangeDirection
   * @function getTypeUrl
   * @memberof ReqMotorChangeDirection
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMotorChangeDirection.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMotorChangeDirection";
  };

  return ReqMotorChangeDirection;
})();

$root.ResMotor = (function () {
  /**
   * Properties of a ResMotor.
   * @exports IResMotor
   * @interface IResMotor
   * @property {number|null} [id] ResMotor id
   * @property {number|null} [code] ResMotor code
   */

  /**
   * Constructs a new ResMotor.
   * @exports ResMotor
   * @classdesc Represents a ResMotor.
   * @implements IResMotor
   * @constructor
   * @param {IResMotor=} [properties] Properties to set
   */
  function ResMotor(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResMotor id.
   * @member {number} id
   * @memberof ResMotor
   * @instance
   */
  ResMotor.prototype.id = 0;

  /**
   * ResMotor code.
   * @member {number} code
   * @memberof ResMotor
   * @instance
   */
  ResMotor.prototype.code = 0;

  /**
   * Creates a new ResMotor instance using the specified properties.
   * @function create
   * @memberof ResMotor
   * @static
   * @param {IResMotor=} [properties] Properties to set
   * @returns {ResMotor} ResMotor instance
   */
  ResMotor.create = function create(properties) {
    return new ResMotor(properties);
  };

  /**
   * Encodes the specified ResMotor message. Does not implicitly {@link ResMotor.verify|verify} messages.
   * @function encode
   * @memberof ResMotor
   * @static
   * @param {IResMotor} message ResMotor message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResMotor.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResMotor message, length delimited. Does not implicitly {@link ResMotor.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResMotor
   * @static
   * @param {IResMotor} message ResMotor message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResMotor.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResMotor message from the specified reader or buffer.
   * @function decode
   * @memberof ResMotor
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResMotor} ResMotor
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResMotor.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResMotor();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResMotor message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResMotor
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResMotor} ResMotor
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResMotor.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResMotor message.
   * @function verify
   * @memberof ResMotor
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResMotor.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResMotor message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResMotor
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResMotor} ResMotor
   */
  ResMotor.fromObject = function fromObject(object) {
    if (object instanceof $root.ResMotor) return object;
    var message = new $root.ResMotor();
    if (object.id != null) message.id = object.id | 0;
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResMotor message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResMotor
   * @static
   * @param {ResMotor} message ResMotor
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResMotor.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = 0;
      object.code = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResMotor to JSON.
   * @function toJSON
   * @memberof ResMotor
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResMotor.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResMotor
   * @function getTypeUrl
   * @memberof ResMotor
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResMotor.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResMotor";
  };

  return ResMotor;
})();

$root.ResMotorPosition = (function () {
  /**
   * Properties of a ResMotorPosition.
   * @exports IResMotorPosition
   * @interface IResMotorPosition
   * @property {number|null} [id] ResMotorPosition id
   * @property {number|null} [code] ResMotorPosition code
   * @property {number|null} [position] ResMotorPosition position
   */

  /**
   * Constructs a new ResMotorPosition.
   * @exports ResMotorPosition
   * @classdesc Represents a ResMotorPosition.
   * @implements IResMotorPosition
   * @constructor
   * @param {IResMotorPosition=} [properties] Properties to set
   */
  function ResMotorPosition(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResMotorPosition id.
   * @member {number} id
   * @memberof ResMotorPosition
   * @instance
   */
  ResMotorPosition.prototype.id = 0;

  /**
   * ResMotorPosition code.
   * @member {number} code
   * @memberof ResMotorPosition
   * @instance
   */
  ResMotorPosition.prototype.code = 0;

  /**
   * ResMotorPosition position.
   * @member {number} position
   * @memberof ResMotorPosition
   * @instance
   */
  ResMotorPosition.prototype.position = 0;

  /**
   * Creates a new ResMotorPosition instance using the specified properties.
   * @function create
   * @memberof ResMotorPosition
   * @static
   * @param {IResMotorPosition=} [properties] Properties to set
   * @returns {ResMotorPosition} ResMotorPosition instance
   */
  ResMotorPosition.create = function create(properties) {
    return new ResMotorPosition(properties);
  };

  /**
   * Encodes the specified ResMotorPosition message. Does not implicitly {@link ResMotorPosition.verify|verify} messages.
   * @function encode
   * @memberof ResMotorPosition
   * @static
   * @param {IResMotorPosition} message ResMotorPosition message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResMotorPosition.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    if (
      message.position != null &&
      Object.hasOwnProperty.call(message, "position")
    )
      writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.position);
    return writer;
  };

  /**
   * Encodes the specified ResMotorPosition message, length delimited. Does not implicitly {@link ResMotorPosition.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResMotorPosition
   * @static
   * @param {IResMotorPosition} message ResMotorPosition message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResMotorPosition.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResMotorPosition message from the specified reader or buffer.
   * @function decode
   * @memberof ResMotorPosition
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResMotorPosition} ResMotorPosition
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResMotorPosition.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResMotorPosition();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        case 3: {
          message.position = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResMotorPosition message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResMotorPosition
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResMotorPosition} ResMotorPosition
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResMotorPosition.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResMotorPosition message.
   * @function verify
   * @memberof ResMotorPosition
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResMotorPosition.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.position != null && message.hasOwnProperty("position"))
      if (typeof message.position !== "number")
        return "position: number expected";
    return null;
  };

  /**
   * Creates a ResMotorPosition message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResMotorPosition
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResMotorPosition} ResMotorPosition
   */
  ResMotorPosition.fromObject = function fromObject(object) {
    if (object instanceof $root.ResMotorPosition) return object;
    var message = new $root.ResMotorPosition();
    if (object.id != null) message.id = object.id | 0;
    if (object.code != null) message.code = object.code | 0;
    if (object.position != null) message.position = Number(object.position);
    return message;
  };

  /**
   * Creates a plain object from a ResMotorPosition message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResMotorPosition
   * @static
   * @param {ResMotorPosition} message ResMotorPosition
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResMotorPosition.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = 0;
      object.code = 0;
      object.position = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.position != null && message.hasOwnProperty("position"))
      object.position =
        options.json && !isFinite(message.position)
          ? String(message.position)
          : message.position;
    return object;
  };

  /**
   * Converts this ResMotorPosition to JSON.
   * @function toJSON
   * @memberof ResMotorPosition
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResMotorPosition.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResMotorPosition
   * @function getTypeUrl
   * @memberof ResMotorPosition
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResMotorPosition.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResMotorPosition";
  };

  return ResMotorPosition;
})();

$root.ReqDualCameraLinkage = (function () {
  /**
   * Properties of a ReqDualCameraLinkage.
   * @exports IReqDualCameraLinkage
   * @interface IReqDualCameraLinkage
   * @property {number|null} [x] ReqDualCameraLinkage x
   * @property {number|null} [y] ReqDualCameraLinkage y
   */

  /**
   * Constructs a new ReqDualCameraLinkage.
   * @exports ReqDualCameraLinkage
   * @classdesc Represents a ReqDualCameraLinkage.
   * @implements IReqDualCameraLinkage
   * @constructor
   * @param {IReqDualCameraLinkage=} [properties] Properties to set
   */
  function ReqDualCameraLinkage(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDualCameraLinkage x.
   * @member {number} x
   * @memberof ReqDualCameraLinkage
   * @instance
   */
  ReqDualCameraLinkage.prototype.x = 0;

  /**
   * ReqDualCameraLinkage y.
   * @member {number} y
   * @memberof ReqDualCameraLinkage
   * @instance
   */
  ReqDualCameraLinkage.prototype.y = 0;

  /**
   * Creates a new ReqDualCameraLinkage instance using the specified properties.
   * @function create
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {IReqDualCameraLinkage=} [properties] Properties to set
   * @returns {ReqDualCameraLinkage} ReqDualCameraLinkage instance
   */
  ReqDualCameraLinkage.create = function create(properties) {
    return new ReqDualCameraLinkage(properties);
  };

  /**
   * Encodes the specified ReqDualCameraLinkage message. Does not implicitly {@link ReqDualCameraLinkage.verify|verify} messages.
   * @function encode
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {IReqDualCameraLinkage} message ReqDualCameraLinkage message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDualCameraLinkage.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.x != null && Object.hasOwnProperty.call(message, "x"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.x);
    if (message.y != null && Object.hasOwnProperty.call(message, "y"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.y);
    return writer;
  };

  /**
   * Encodes the specified ReqDualCameraLinkage message, length delimited. Does not implicitly {@link ReqDualCameraLinkage.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {IReqDualCameraLinkage} message ReqDualCameraLinkage message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDualCameraLinkage.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDualCameraLinkage message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDualCameraLinkage} ReqDualCameraLinkage
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDualCameraLinkage.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDualCameraLinkage();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.x = reader.int32();
          break;
        }
        case 2: {
          message.y = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDualCameraLinkage message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDualCameraLinkage} ReqDualCameraLinkage
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDualCameraLinkage.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDualCameraLinkage message.
   * @function verify
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDualCameraLinkage.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.x != null && message.hasOwnProperty("x"))
      if (!$util.isInteger(message.x)) return "x: integer expected";
    if (message.y != null && message.hasOwnProperty("y"))
      if (!$util.isInteger(message.y)) return "y: integer expected";
    return null;
  };

  /**
   * Creates a ReqDualCameraLinkage message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDualCameraLinkage} ReqDualCameraLinkage
   */
  ReqDualCameraLinkage.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDualCameraLinkage) return object;
    var message = new $root.ReqDualCameraLinkage();
    if (object.x != null) message.x = object.x | 0;
    if (object.y != null) message.y = object.y | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqDualCameraLinkage message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {ReqDualCameraLinkage} message ReqDualCameraLinkage
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDualCameraLinkage.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.x = 0;
      object.y = 0;
    }
    if (message.x != null && message.hasOwnProperty("x")) object.x = message.x;
    if (message.y != null && message.hasOwnProperty("y")) object.y = message.y;
    return object;
  };

  /**
   * Converts this ReqDualCameraLinkage to JSON.
   * @function toJSON
   * @memberof ReqDualCameraLinkage
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDualCameraLinkage.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDualCameraLinkage
   * @function getTypeUrl
   * @memberof ReqDualCameraLinkage
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDualCameraLinkage.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDualCameraLinkage";
  };

  return ReqDualCameraLinkage;
})();

/**
 * State enum.
 * @exports State
 * @enum {number}
 * @property {number} STATE_IDLE=0 STATE_IDLE value
 * @property {number} STATE_RUNNING=1 STATE_RUNNING value
 * @property {number} STATE_STOPPING=2 STATE_STOPPING value
 * @property {number} STATE_STOPPED=3 STATE_STOPPED value
 * @property {number} STATE_SUCCESS=4 STATE_SUCCESS value
 * @property {number} STATE_FAILED=5 STATE_FAILED value
 * @property {number} STATE_ASTRO_PLATE_SOLVING=6 STATE_ASTRO_PLATE_SOLVING value
 */
$root.State = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "STATE_IDLE")] = 0;
  values[(valuesById[1] = "STATE_RUNNING")] = 1;
  values[(valuesById[2] = "STATE_STOPPING")] = 2;
  values[(valuesById[3] = "STATE_STOPPED")] = 3;
  values[(valuesById[4] = "STATE_SUCCESS")] = 4;
  values[(valuesById[5] = "STATE_FAILED")] = 5;
  values[(valuesById[6] = "STATE_ASTRO_PLATE_SOLVING")] = 6;
  return values;
})();

/**
 * OperationState enum.
 * @exports OperationState
 * @enum {number}
 * @property {number} OPERATION_STATE_IDLE=0 OPERATION_STATE_IDLE value
 * @property {number} OPERATION_STATE_RUNNING=1 OPERATION_STATE_RUNNING value
 * @property {number} OPERATION_STATE_STOPPING=2 OPERATION_STATE_STOPPING value
 * @property {number} OPERATION_STATE_STOPPED=3 OPERATION_STATE_STOPPED value
 */
$root.OperationState = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "OPERATION_STATE_IDLE")] = 0;
  values[(valuesById[1] = "OPERATION_STATE_RUNNING")] = 1;
  values[(valuesById[2] = "OPERATION_STATE_STOPPING")] = 2;
  values[(valuesById[3] = "OPERATION_STATE_STOPPED")] = 3;
  return values;
})();

/**
 * AstroState enum.
 * @exports AstroState
 * @enum {number}
 * @property {number} ASTRO_STATE_IDLE=0 ASTRO_STATE_IDLE value
 * @property {number} ASTRO_STATE_RUNNING=1 ASTRO_STATE_RUNNING value
 * @property {number} ASTRO_STATE_STOPPING=2 ASTRO_STATE_STOPPING value
 * @property {number} ASTRO_STATE_STOPPED=3 ASTRO_STATE_STOPPED value
 * @property {number} ASTRO_STATE_PLATE_SOLVING=4 ASTRO_STATE_PLATE_SOLVING value
 */
$root.AstroState = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "ASTRO_STATE_IDLE")] = 0;
  values[(valuesById[1] = "ASTRO_STATE_RUNNING")] = 1;
  values[(valuesById[2] = "ASTRO_STATE_STOPPING")] = 2;
  values[(valuesById[3] = "ASTRO_STATE_STOPPED")] = 3;
  values[(valuesById[4] = "ASTRO_STATE_PLATE_SOLVING")] = 4;
  return values;
})();

/**
 * SentryModeState enum.
 * @exports SentryModeState
 * @enum {number}
 * @property {number} SENTRY_MODE_STATE_IDLE=0 SENTRY_MODE_STATE_IDLE value
 * @property {number} SENTRY_MODE_STATE_INIT=1 SENTRY_MODE_STATE_INIT value
 * @property {number} SENTRY_MODE_STATE_DETECT=2 SENTRY_MODE_STATE_DETECT value
 * @property {number} SENTRY_MODE_STATE_TRACK=3 SENTRY_MODE_STATE_TRACK value
 * @property {number} SENTRY_MODE_STATE_TRACK_FINISH=4 SENTRY_MODE_STATE_TRACK_FINISH value
 * @property {number} SENTRY_MODE_STATE_STOPPING=5 SENTRY_MODE_STATE_STOPPING value
 */
$root.SentryModeState = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "SENTRY_MODE_STATE_IDLE")] = 0;
  values[(valuesById[1] = "SENTRY_MODE_STATE_INIT")] = 1;
  values[(valuesById[2] = "SENTRY_MODE_STATE_DETECT")] = 2;
  values[(valuesById[3] = "SENTRY_MODE_STATE_TRACK")] = 3;
  values[(valuesById[4] = "SENTRY_MODE_STATE_TRACK_FINISH")] = 4;
  values[(valuesById[5] = "SENTRY_MODE_STATE_STOPPING")] = 5;
  return values;
})();

$root.ResNotifyPictureMatching = (function () {
  /**
   * Properties of a ResNotifyPictureMatching.
   * @exports IResNotifyPictureMatching
   * @interface IResNotifyPictureMatching
   * @property {number|null} [x] ResNotifyPictureMatching x
   * @property {number|null} [y] ResNotifyPictureMatching y
   * @property {number|null} [width] ResNotifyPictureMatching width
   * @property {number|null} [height] ResNotifyPictureMatching height
   * @property {number|null} [value] ResNotifyPictureMatching value
   * @property {number|null} [code] ResNotifyPictureMatching code
   */

  /**
   * Constructs a new ResNotifyPictureMatching.
   * @exports ResNotifyPictureMatching
   * @classdesc Represents a ResNotifyPictureMatching.
   * @implements IResNotifyPictureMatching
   * @constructor
   * @param {IResNotifyPictureMatching=} [properties] Properties to set
   */
  function ResNotifyPictureMatching(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyPictureMatching x.
   * @member {number} x
   * @memberof ResNotifyPictureMatching
   * @instance
   */
  ResNotifyPictureMatching.prototype.x = 0;

  /**
   * ResNotifyPictureMatching y.
   * @member {number} y
   * @memberof ResNotifyPictureMatching
   * @instance
   */
  ResNotifyPictureMatching.prototype.y = 0;

  /**
   * ResNotifyPictureMatching width.
   * @member {number} width
   * @memberof ResNotifyPictureMatching
   * @instance
   */
  ResNotifyPictureMatching.prototype.width = 0;

  /**
   * ResNotifyPictureMatching height.
   * @member {number} height
   * @memberof ResNotifyPictureMatching
   * @instance
   */
  ResNotifyPictureMatching.prototype.height = 0;

  /**
   * ResNotifyPictureMatching value.
   * @member {number} value
   * @memberof ResNotifyPictureMatching
   * @instance
   */
  ResNotifyPictureMatching.prototype.value = 0;

  /**
   * ResNotifyPictureMatching code.
   * @member {number} code
   * @memberof ResNotifyPictureMatching
   * @instance
   */
  ResNotifyPictureMatching.prototype.code = 0;

  /**
   * Creates a new ResNotifyPictureMatching instance using the specified properties.
   * @function create
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {IResNotifyPictureMatching=} [properties] Properties to set
   * @returns {ResNotifyPictureMatching} ResNotifyPictureMatching instance
   */
  ResNotifyPictureMatching.create = function create(properties) {
    return new ResNotifyPictureMatching(properties);
  };

  /**
   * Encodes the specified ResNotifyPictureMatching message. Does not implicitly {@link ResNotifyPictureMatching.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {IResNotifyPictureMatching} message ResNotifyPictureMatching message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPictureMatching.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.x != null && Object.hasOwnProperty.call(message, "x"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.x);
    if (message.y != null && Object.hasOwnProperty.call(message, "y"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).uint32(message.y);
    if (message.width != null && Object.hasOwnProperty.call(message, "width"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).uint32(message.width);
    if (message.height != null && Object.hasOwnProperty.call(message, "height"))
      writer.uint32(/* id 4, wireType 0 =*/ 32).uint32(message.height);
    if (message.value != null && Object.hasOwnProperty.call(message, "value"))
      writer.uint32(/* id 5, wireType 1 =*/ 41).double(message.value);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 6, wireType 0 =*/ 48).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyPictureMatching message, length delimited. Does not implicitly {@link ResNotifyPictureMatching.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {IResNotifyPictureMatching} message ResNotifyPictureMatching message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPictureMatching.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyPictureMatching message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyPictureMatching} ResNotifyPictureMatching
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPictureMatching.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyPictureMatching();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.x = reader.uint32();
          break;
        }
        case 2: {
          message.y = reader.uint32();
          break;
        }
        case 3: {
          message.width = reader.uint32();
          break;
        }
        case 4: {
          message.height = reader.uint32();
          break;
        }
        case 5: {
          message.value = reader.double();
          break;
        }
        case 6: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyPictureMatching message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyPictureMatching} ResNotifyPictureMatching
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPictureMatching.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyPictureMatching message.
   * @function verify
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyPictureMatching.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.x != null && message.hasOwnProperty("x"))
      if (!$util.isInteger(message.x)) return "x: integer expected";
    if (message.y != null && message.hasOwnProperty("y"))
      if (!$util.isInteger(message.y)) return "y: integer expected";
    if (message.width != null && message.hasOwnProperty("width"))
      if (!$util.isInteger(message.width)) return "width: integer expected";
    if (message.height != null && message.hasOwnProperty("height"))
      if (!$util.isInteger(message.height)) return "height: integer expected";
    if (message.value != null && message.hasOwnProperty("value"))
      if (typeof message.value !== "number") return "value: number expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyPictureMatching message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyPictureMatching} ResNotifyPictureMatching
   */
  ResNotifyPictureMatching.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyPictureMatching) return object;
    var message = new $root.ResNotifyPictureMatching();
    if (object.x != null) message.x = object.x >>> 0;
    if (object.y != null) message.y = object.y >>> 0;
    if (object.width != null) message.width = object.width >>> 0;
    if (object.height != null) message.height = object.height >>> 0;
    if (object.value != null) message.value = Number(object.value);
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyPictureMatching message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {ResNotifyPictureMatching} message ResNotifyPictureMatching
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyPictureMatching.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.x = 0;
      object.y = 0;
      object.width = 0;
      object.height = 0;
      object.value = 0;
      object.code = 0;
    }
    if (message.x != null && message.hasOwnProperty("x")) object.x = message.x;
    if (message.y != null && message.hasOwnProperty("y")) object.y = message.y;
    if (message.width != null && message.hasOwnProperty("width"))
      object.width = message.width;
    if (message.height != null && message.hasOwnProperty("height"))
      object.height = message.height;
    if (message.value != null && message.hasOwnProperty("value"))
      object.value =
        options.json && !isFinite(message.value)
          ? String(message.value)
          : message.value;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResNotifyPictureMatching to JSON.
   * @function toJSON
   * @memberof ResNotifyPictureMatching
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyPictureMatching.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyPictureMatching
   * @function getTypeUrl
   * @memberof ResNotifyPictureMatching
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyPictureMatching.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyPictureMatching";
  };

  return ResNotifyPictureMatching;
})();

$root.ResNotifySDcardInfo = (function () {
  /**
   * Properties of a ResNotifySDcardInfo.
   * @exports IResNotifySDcardInfo
   * @interface IResNotifySDcardInfo
   * @property {number|null} [availableSize] ResNotifySDcardInfo availableSize
   * @property {number|null} [totalSize] ResNotifySDcardInfo totalSize
   * @property {number|null} [code] ResNotifySDcardInfo code
   */

  /**
   * Constructs a new ResNotifySDcardInfo.
   * @exports ResNotifySDcardInfo
   * @classdesc Represents a ResNotifySDcardInfo.
   * @implements IResNotifySDcardInfo
   * @constructor
   * @param {IResNotifySDcardInfo=} [properties] Properties to set
   */
  function ResNotifySDcardInfo(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifySDcardInfo availableSize.
   * @member {number} availableSize
   * @memberof ResNotifySDcardInfo
   * @instance
   */
  ResNotifySDcardInfo.prototype.availableSize = 0;

  /**
   * ResNotifySDcardInfo totalSize.
   * @member {number} totalSize
   * @memberof ResNotifySDcardInfo
   * @instance
   */
  ResNotifySDcardInfo.prototype.totalSize = 0;

  /**
   * ResNotifySDcardInfo code.
   * @member {number} code
   * @memberof ResNotifySDcardInfo
   * @instance
   */
  ResNotifySDcardInfo.prototype.code = 0;

  /**
   * Creates a new ResNotifySDcardInfo instance using the specified properties.
   * @function create
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {IResNotifySDcardInfo=} [properties] Properties to set
   * @returns {ResNotifySDcardInfo} ResNotifySDcardInfo instance
   */
  ResNotifySDcardInfo.create = function create(properties) {
    return new ResNotifySDcardInfo(properties);
  };

  /**
   * Encodes the specified ResNotifySDcardInfo message. Does not implicitly {@link ResNotifySDcardInfo.verify|verify} messages.
   * @function encode
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {IResNotifySDcardInfo} message ResNotifySDcardInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifySDcardInfo.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.availableSize != null &&
      Object.hasOwnProperty.call(message, "availableSize")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.availableSize);
    if (
      message.totalSize != null &&
      Object.hasOwnProperty.call(message, "totalSize")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).uint32(message.totalSize);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResNotifySDcardInfo message, length delimited. Does not implicitly {@link ResNotifySDcardInfo.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {IResNotifySDcardInfo} message ResNotifySDcardInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifySDcardInfo.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifySDcardInfo message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifySDcardInfo} ResNotifySDcardInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifySDcardInfo.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifySDcardInfo();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.availableSize = reader.uint32();
          break;
        }
        case 2: {
          message.totalSize = reader.uint32();
          break;
        }
        case 3: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifySDcardInfo message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifySDcardInfo} ResNotifySDcardInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifySDcardInfo.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifySDcardInfo message.
   * @function verify
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifySDcardInfo.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.availableSize != null &&
      message.hasOwnProperty("availableSize")
    )
      if (!$util.isInteger(message.availableSize))
        return "availableSize: integer expected";
    if (message.totalSize != null && message.hasOwnProperty("totalSize"))
      if (!$util.isInteger(message.totalSize))
        return "totalSize: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifySDcardInfo message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifySDcardInfo} ResNotifySDcardInfo
   */
  ResNotifySDcardInfo.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifySDcardInfo) return object;
    var message = new $root.ResNotifySDcardInfo();
    if (object.availableSize != null)
      message.availableSize = object.availableSize >>> 0;
    if (object.totalSize != null) message.totalSize = object.totalSize >>> 0;
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifySDcardInfo message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {ResNotifySDcardInfo} message ResNotifySDcardInfo
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifySDcardInfo.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.availableSize = 0;
      object.totalSize = 0;
      object.code = 0;
    }
    if (
      message.availableSize != null &&
      message.hasOwnProperty("availableSize")
    )
      object.availableSize = message.availableSize;
    if (message.totalSize != null && message.hasOwnProperty("totalSize"))
      object.totalSize = message.totalSize;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResNotifySDcardInfo to JSON.
   * @function toJSON
   * @memberof ResNotifySDcardInfo
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifySDcardInfo.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifySDcardInfo
   * @function getTypeUrl
   * @memberof ResNotifySDcardInfo
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifySDcardInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifySDcardInfo";
  };

  return ResNotifySDcardInfo;
})();

$root.ResNotifyTemperature = (function () {
  /**
   * Properties of a ResNotifyTemperature.
   * @exports IResNotifyTemperature
   * @interface IResNotifyTemperature
   * @property {number|null} [code] ResNotifyTemperature code
   * @property {number|null} [temperature] ResNotifyTemperature temperature
   */

  /**
   * Constructs a new ResNotifyTemperature.
   * @exports ResNotifyTemperature
   * @classdesc Represents a ResNotifyTemperature.
   * @implements IResNotifyTemperature
   * @constructor
   * @param {IResNotifyTemperature=} [properties] Properties to set
   */
  function ResNotifyTemperature(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyTemperature code.
   * @member {number} code
   * @memberof ResNotifyTemperature
   * @instance
   */
  ResNotifyTemperature.prototype.code = 0;

  /**
   * ResNotifyTemperature temperature.
   * @member {number} temperature
   * @memberof ResNotifyTemperature
   * @instance
   */
  ResNotifyTemperature.prototype.temperature = 0;

  /**
   * Creates a new ResNotifyTemperature instance using the specified properties.
   * @function create
   * @memberof ResNotifyTemperature
   * @static
   * @param {IResNotifyTemperature=} [properties] Properties to set
   * @returns {ResNotifyTemperature} ResNotifyTemperature instance
   */
  ResNotifyTemperature.create = function create(properties) {
    return new ResNotifyTemperature(properties);
  };

  /**
   * Encodes the specified ResNotifyTemperature message. Does not implicitly {@link ResNotifyTemperature.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyTemperature
   * @static
   * @param {IResNotifyTemperature} message ResNotifyTemperature message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyTemperature.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    if (
      message.temperature != null &&
      Object.hasOwnProperty.call(message, "temperature")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.temperature);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyTemperature message, length delimited. Does not implicitly {@link ResNotifyTemperature.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyTemperature
   * @static
   * @param {IResNotifyTemperature} message ResNotifyTemperature message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyTemperature.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyTemperature message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyTemperature
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyTemperature} ResNotifyTemperature
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyTemperature.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyTemperature();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        case 2: {
          message.temperature = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyTemperature message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyTemperature
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyTemperature} ResNotifyTemperature
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyTemperature.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyTemperature message.
   * @function verify
   * @memberof ResNotifyTemperature
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyTemperature.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.temperature != null && message.hasOwnProperty("temperature"))
      if (!$util.isInteger(message.temperature))
        return "temperature: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyTemperature message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyTemperature
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyTemperature} ResNotifyTemperature
   */
  ResNotifyTemperature.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyTemperature) return object;
    var message = new $root.ResNotifyTemperature();
    if (object.code != null) message.code = object.code | 0;
    if (object.temperature != null)
      message.temperature = object.temperature | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyTemperature message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyTemperature
   * @static
   * @param {ResNotifyTemperature} message ResNotifyTemperature
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyTemperature.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.code = 0;
      object.temperature = 0;
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.temperature != null && message.hasOwnProperty("temperature"))
      object.temperature = message.temperature;
    return object;
  };

  /**
   * Converts this ResNotifyTemperature to JSON.
   * @function toJSON
   * @memberof ResNotifyTemperature
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyTemperature.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyTemperature
   * @function getTypeUrl
   * @memberof ResNotifyTemperature
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyTemperature.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyTemperature";
  };

  return ResNotifyTemperature;
})();

$root.ResNotifyRecordTime = (function () {
  /**
   * Properties of a ResNotifyRecordTime.
   * @exports IResNotifyRecordTime
   * @interface IResNotifyRecordTime
   * @property {number|null} [recordTime] ResNotifyRecordTime recordTime
   */

  /**
   * Constructs a new ResNotifyRecordTime.
   * @exports ResNotifyRecordTime
   * @classdesc Represents a ResNotifyRecordTime.
   * @implements IResNotifyRecordTime
   * @constructor
   * @param {IResNotifyRecordTime=} [properties] Properties to set
   */
  function ResNotifyRecordTime(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyRecordTime recordTime.
   * @member {number} recordTime
   * @memberof ResNotifyRecordTime
   * @instance
   */
  ResNotifyRecordTime.prototype.recordTime = 0;

  /**
   * Creates a new ResNotifyRecordTime instance using the specified properties.
   * @function create
   * @memberof ResNotifyRecordTime
   * @static
   * @param {IResNotifyRecordTime=} [properties] Properties to set
   * @returns {ResNotifyRecordTime} ResNotifyRecordTime instance
   */
  ResNotifyRecordTime.create = function create(properties) {
    return new ResNotifyRecordTime(properties);
  };

  /**
   * Encodes the specified ResNotifyRecordTime message. Does not implicitly {@link ResNotifyRecordTime.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyRecordTime
   * @static
   * @param {IResNotifyRecordTime} message ResNotifyRecordTime message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyRecordTime.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.recordTime != null &&
      Object.hasOwnProperty.call(message, "recordTime")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.recordTime);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyRecordTime message, length delimited. Does not implicitly {@link ResNotifyRecordTime.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyRecordTime
   * @static
   * @param {IResNotifyRecordTime} message ResNotifyRecordTime message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyRecordTime.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyRecordTime message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyRecordTime
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyRecordTime} ResNotifyRecordTime
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyRecordTime.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyRecordTime();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.recordTime = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyRecordTime message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyRecordTime
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyRecordTime} ResNotifyRecordTime
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyRecordTime.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyRecordTime message.
   * @function verify
   * @memberof ResNotifyRecordTime
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyRecordTime.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.recordTime != null && message.hasOwnProperty("recordTime"))
      if (!$util.isInteger(message.recordTime))
        return "recordTime: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyRecordTime message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyRecordTime
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyRecordTime} ResNotifyRecordTime
   */
  ResNotifyRecordTime.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyRecordTime) return object;
    var message = new $root.ResNotifyRecordTime();
    if (object.recordTime != null) message.recordTime = object.recordTime | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyRecordTime message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyRecordTime
   * @static
   * @param {ResNotifyRecordTime} message ResNotifyRecordTime
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyRecordTime.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.recordTime = 0;
    if (message.recordTime != null && message.hasOwnProperty("recordTime"))
      object.recordTime = message.recordTime;
    return object;
  };

  /**
   * Converts this ResNotifyRecordTime to JSON.
   * @function toJSON
   * @memberof ResNotifyRecordTime
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyRecordTime.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyRecordTime
   * @function getTypeUrl
   * @memberof ResNotifyRecordTime
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyRecordTime.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyRecordTime";
  };

  return ResNotifyRecordTime;
})();

$root.ResNotifyTimeLapseOutTime = (function () {
  /**
   * Properties of a ResNotifyTimeLapseOutTime.
   * @exports IResNotifyTimeLapseOutTime
   * @interface IResNotifyTimeLapseOutTime
   * @property {number|null} [interval] ResNotifyTimeLapseOutTime interval
   * @property {number|null} [outTime] ResNotifyTimeLapseOutTime outTime
   * @property {number|null} [totalTime] ResNotifyTimeLapseOutTime totalTime
   */

  /**
   * Constructs a new ResNotifyTimeLapseOutTime.
   * @exports ResNotifyTimeLapseOutTime
   * @classdesc Represents a ResNotifyTimeLapseOutTime.
   * @implements IResNotifyTimeLapseOutTime
   * @constructor
   * @param {IResNotifyTimeLapseOutTime=} [properties] Properties to set
   */
  function ResNotifyTimeLapseOutTime(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyTimeLapseOutTime interval.
   * @member {number} interval
   * @memberof ResNotifyTimeLapseOutTime
   * @instance
   */
  ResNotifyTimeLapseOutTime.prototype.interval = 0;

  /**
   * ResNotifyTimeLapseOutTime outTime.
   * @member {number} outTime
   * @memberof ResNotifyTimeLapseOutTime
   * @instance
   */
  ResNotifyTimeLapseOutTime.prototype.outTime = 0;

  /**
   * ResNotifyTimeLapseOutTime totalTime.
   * @member {number} totalTime
   * @memberof ResNotifyTimeLapseOutTime
   * @instance
   */
  ResNotifyTimeLapseOutTime.prototype.totalTime = 0;

  /**
   * Creates a new ResNotifyTimeLapseOutTime instance using the specified properties.
   * @function create
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {IResNotifyTimeLapseOutTime=} [properties] Properties to set
   * @returns {ResNotifyTimeLapseOutTime} ResNotifyTimeLapseOutTime instance
   */
  ResNotifyTimeLapseOutTime.create = function create(properties) {
    return new ResNotifyTimeLapseOutTime(properties);
  };

  /**
   * Encodes the specified ResNotifyTimeLapseOutTime message. Does not implicitly {@link ResNotifyTimeLapseOutTime.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {IResNotifyTimeLapseOutTime} message ResNotifyTimeLapseOutTime message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyTimeLapseOutTime.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.interval != null &&
      Object.hasOwnProperty.call(message, "interval")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.interval);
    if (
      message.outTime != null &&
      Object.hasOwnProperty.call(message, "outTime")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.outTime);
    if (
      message.totalTime != null &&
      Object.hasOwnProperty.call(message, "totalTime")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.totalTime);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyTimeLapseOutTime message, length delimited. Does not implicitly {@link ResNotifyTimeLapseOutTime.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {IResNotifyTimeLapseOutTime} message ResNotifyTimeLapseOutTime message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyTimeLapseOutTime.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyTimeLapseOutTime message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyTimeLapseOutTime} ResNotifyTimeLapseOutTime
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyTimeLapseOutTime.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyTimeLapseOutTime();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.interval = reader.int32();
          break;
        }
        case 2: {
          message.outTime = reader.int32();
          break;
        }
        case 3: {
          message.totalTime = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyTimeLapseOutTime message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyTimeLapseOutTime} ResNotifyTimeLapseOutTime
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyTimeLapseOutTime.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyTimeLapseOutTime message.
   * @function verify
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyTimeLapseOutTime.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.interval != null && message.hasOwnProperty("interval"))
      if (!$util.isInteger(message.interval))
        return "interval: integer expected";
    if (message.outTime != null && message.hasOwnProperty("outTime"))
      if (!$util.isInteger(message.outTime)) return "outTime: integer expected";
    if (message.totalTime != null && message.hasOwnProperty("totalTime"))
      if (!$util.isInteger(message.totalTime))
        return "totalTime: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyTimeLapseOutTime message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyTimeLapseOutTime} ResNotifyTimeLapseOutTime
   */
  ResNotifyTimeLapseOutTime.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyTimeLapseOutTime) return object;
    var message = new $root.ResNotifyTimeLapseOutTime();
    if (object.interval != null) message.interval = object.interval | 0;
    if (object.outTime != null) message.outTime = object.outTime | 0;
    if (object.totalTime != null) message.totalTime = object.totalTime | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyTimeLapseOutTime message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {ResNotifyTimeLapseOutTime} message ResNotifyTimeLapseOutTime
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyTimeLapseOutTime.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.interval = 0;
      object.outTime = 0;
      object.totalTime = 0;
    }
    if (message.interval != null && message.hasOwnProperty("interval"))
      object.interval = message.interval;
    if (message.outTime != null && message.hasOwnProperty("outTime"))
      object.outTime = message.outTime;
    if (message.totalTime != null && message.hasOwnProperty("totalTime"))
      object.totalTime = message.totalTime;
    return object;
  };

  /**
   * Converts this ResNotifyTimeLapseOutTime to JSON.
   * @function toJSON
   * @memberof ResNotifyTimeLapseOutTime
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyTimeLapseOutTime.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyTimeLapseOutTime
   * @function getTypeUrl
   * @memberof ResNotifyTimeLapseOutTime
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyTimeLapseOutTime.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyTimeLapseOutTime";
  };

  return ResNotifyTimeLapseOutTime;
})();

$root.ResNotifyOperationState = (function () {
  /**
   * Properties of a ResNotifyOperationState.
   * @exports IResNotifyOperationState
   * @interface IResNotifyOperationState
   * @property {OperationState|null} [state] ResNotifyOperationState state
   */

  /**
   * Constructs a new ResNotifyOperationState.
   * @exports ResNotifyOperationState
   * @classdesc Represents a ResNotifyOperationState.
   * @implements IResNotifyOperationState
   * @constructor
   * @param {IResNotifyOperationState=} [properties] Properties to set
   */
  function ResNotifyOperationState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyOperationState state.
   * @member {OperationState} state
   * @memberof ResNotifyOperationState
   * @instance
   */
  ResNotifyOperationState.prototype.state = 0;

  /**
   * Creates a new ResNotifyOperationState instance using the specified properties.
   * @function create
   * @memberof ResNotifyOperationState
   * @static
   * @param {IResNotifyOperationState=} [properties] Properties to set
   * @returns {ResNotifyOperationState} ResNotifyOperationState instance
   */
  ResNotifyOperationState.create = function create(properties) {
    return new ResNotifyOperationState(properties);
  };

  /**
   * Encodes the specified ResNotifyOperationState message. Does not implicitly {@link ResNotifyOperationState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyOperationState
   * @static
   * @param {IResNotifyOperationState} message ResNotifyOperationState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyOperationState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyOperationState message, length delimited. Does not implicitly {@link ResNotifyOperationState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyOperationState
   * @static
   * @param {IResNotifyOperationState} message ResNotifyOperationState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyOperationState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyOperationState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyOperationState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyOperationState} ResNotifyOperationState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyOperationState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyOperationState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyOperationState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyOperationState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyOperationState} ResNotifyOperationState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyOperationState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyOperationState message.
   * @function verify
   * @memberof ResNotifyOperationState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyOperationState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
          break;
      }
    return null;
  };

  /**
   * Creates a ResNotifyOperationState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyOperationState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyOperationState} ResNotifyOperationState
   */
  ResNotifyOperationState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyOperationState) return object;
    var message = new $root.ResNotifyOperationState();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "OPERATION_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "OPERATION_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "OPERATION_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "OPERATION_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
    }
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyOperationState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyOperationState
   * @static
   * @param {ResNotifyOperationState} message ResNotifyOperationState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyOperationState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults)
      object.state = options.enums === String ? "OPERATION_STATE_IDLE" : 0;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.OperationState[message.state] === undefined
            ? message.state
            : $root.OperationState[message.state]
          : message.state;
    return object;
  };

  /**
   * Converts this ResNotifyOperationState to JSON.
   * @function toJSON
   * @memberof ResNotifyOperationState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyOperationState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyOperationState
   * @function getTypeUrl
   * @memberof ResNotifyOperationState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyOperationState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyOperationState";
  };

  return ResNotifyOperationState;
})();

$root.ResNotifyStateAstroCalibration = (function () {
  /**
   * Properties of a ResNotifyStateAstroCalibration.
   * @exports IResNotifyStateAstroCalibration
   * @interface IResNotifyStateAstroCalibration
   * @property {AstroState|null} [state] ResNotifyStateAstroCalibration state
   * @property {number|null} [plateSolvingTimes] ResNotifyStateAstroCalibration plateSolvingTimes
   */

  /**
   * Constructs a new ResNotifyStateAstroCalibration.
   * @exports ResNotifyStateAstroCalibration
   * @classdesc Represents a ResNotifyStateAstroCalibration.
   * @implements IResNotifyStateAstroCalibration
   * @constructor
   * @param {IResNotifyStateAstroCalibration=} [properties] Properties to set
   */
  function ResNotifyStateAstroCalibration(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyStateAstroCalibration state.
   * @member {AstroState} state
   * @memberof ResNotifyStateAstroCalibration
   * @instance
   */
  ResNotifyStateAstroCalibration.prototype.state = 0;

  /**
   * ResNotifyStateAstroCalibration plateSolvingTimes.
   * @member {number} plateSolvingTimes
   * @memberof ResNotifyStateAstroCalibration
   * @instance
   */
  ResNotifyStateAstroCalibration.prototype.plateSolvingTimes = 0;

  /**
   * Creates a new ResNotifyStateAstroCalibration instance using the specified properties.
   * @function create
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {IResNotifyStateAstroCalibration=} [properties] Properties to set
   * @returns {ResNotifyStateAstroCalibration} ResNotifyStateAstroCalibration instance
   */
  ResNotifyStateAstroCalibration.create = function create(properties) {
    return new ResNotifyStateAstroCalibration(properties);
  };

  /**
   * Encodes the specified ResNotifyStateAstroCalibration message. Does not implicitly {@link ResNotifyStateAstroCalibration.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {IResNotifyStateAstroCalibration} message ResNotifyStateAstroCalibration message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateAstroCalibration.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    if (
      message.plateSolvingTimes != null &&
      Object.hasOwnProperty.call(message, "plateSolvingTimes")
    )
      writer
        .uint32(/* id 2, wireType 0 =*/ 16)
        .int32(message.plateSolvingTimes);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyStateAstroCalibration message, length delimited. Does not implicitly {@link ResNotifyStateAstroCalibration.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {IResNotifyStateAstroCalibration} message ResNotifyStateAstroCalibration message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateAstroCalibration.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyStateAstroCalibration message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyStateAstroCalibration} ResNotifyStateAstroCalibration
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateAstroCalibration.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyStateAstroCalibration();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        case 2: {
          message.plateSolvingTimes = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyStateAstroCalibration message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyStateAstroCalibration} ResNotifyStateAstroCalibration
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateAstroCalibration.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyStateAstroCalibration message.
   * @function verify
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyStateAstroCalibration.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
          break;
      }
    if (
      message.plateSolvingTimes != null &&
      message.hasOwnProperty("plateSolvingTimes")
    )
      if (!$util.isInteger(message.plateSolvingTimes))
        return "plateSolvingTimes: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyStateAstroCalibration message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyStateAstroCalibration} ResNotifyStateAstroCalibration
   */
  ResNotifyStateAstroCalibration.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyStateAstroCalibration) return object;
    var message = new $root.ResNotifyStateAstroCalibration();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "ASTRO_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "ASTRO_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "ASTRO_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "ASTRO_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
      case "ASTRO_STATE_PLATE_SOLVING":
      case 4:
        message.state = 4;
        break;
    }
    if (object.plateSolvingTimes != null)
      message.plateSolvingTimes = object.plateSolvingTimes | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyStateAstroCalibration message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {ResNotifyStateAstroCalibration} message ResNotifyStateAstroCalibration
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyStateAstroCalibration.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.state = options.enums === String ? "ASTRO_STATE_IDLE" : 0;
      object.plateSolvingTimes = 0;
    }
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.AstroState[message.state] === undefined
            ? message.state
            : $root.AstroState[message.state]
          : message.state;
    if (
      message.plateSolvingTimes != null &&
      message.hasOwnProperty("plateSolvingTimes")
    )
      object.plateSolvingTimes = message.plateSolvingTimes;
    return object;
  };

  /**
   * Converts this ResNotifyStateAstroCalibration to JSON.
   * @function toJSON
   * @memberof ResNotifyStateAstroCalibration
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyStateAstroCalibration.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyStateAstroCalibration
   * @function getTypeUrl
   * @memberof ResNotifyStateAstroCalibration
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyStateAstroCalibration.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyStateAstroCalibration";
  };

  return ResNotifyStateAstroCalibration;
})();

$root.ResNotifyStateAstroGoto = (function () {
  /**
   * Properties of a ResNotifyStateAstroGoto.
   * @exports IResNotifyStateAstroGoto
   * @interface IResNotifyStateAstroGoto
   * @property {AstroState|null} [state] ResNotifyStateAstroGoto state
   */

  /**
   * Constructs a new ResNotifyStateAstroGoto.
   * @exports ResNotifyStateAstroGoto
   * @classdesc Represents a ResNotifyStateAstroGoto.
   * @implements IResNotifyStateAstroGoto
   * @constructor
   * @param {IResNotifyStateAstroGoto=} [properties] Properties to set
   */
  function ResNotifyStateAstroGoto(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyStateAstroGoto state.
   * @member {AstroState} state
   * @memberof ResNotifyStateAstroGoto
   * @instance
   */
  ResNotifyStateAstroGoto.prototype.state = 0;

  /**
   * Creates a new ResNotifyStateAstroGoto instance using the specified properties.
   * @function create
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {IResNotifyStateAstroGoto=} [properties] Properties to set
   * @returns {ResNotifyStateAstroGoto} ResNotifyStateAstroGoto instance
   */
  ResNotifyStateAstroGoto.create = function create(properties) {
    return new ResNotifyStateAstroGoto(properties);
  };

  /**
   * Encodes the specified ResNotifyStateAstroGoto message. Does not implicitly {@link ResNotifyStateAstroGoto.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {IResNotifyStateAstroGoto} message ResNotifyStateAstroGoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateAstroGoto.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyStateAstroGoto message, length delimited. Does not implicitly {@link ResNotifyStateAstroGoto.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {IResNotifyStateAstroGoto} message ResNotifyStateAstroGoto message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateAstroGoto.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyStateAstroGoto message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyStateAstroGoto} ResNotifyStateAstroGoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateAstroGoto.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyStateAstroGoto();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyStateAstroGoto message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyStateAstroGoto} ResNotifyStateAstroGoto
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateAstroGoto.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyStateAstroGoto message.
   * @function verify
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyStateAstroGoto.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
          break;
      }
    return null;
  };

  /**
   * Creates a ResNotifyStateAstroGoto message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyStateAstroGoto} ResNotifyStateAstroGoto
   */
  ResNotifyStateAstroGoto.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyStateAstroGoto) return object;
    var message = new $root.ResNotifyStateAstroGoto();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "ASTRO_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "ASTRO_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "ASTRO_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "ASTRO_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
      case "ASTRO_STATE_PLATE_SOLVING":
      case 4:
        message.state = 4;
        break;
    }
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyStateAstroGoto message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {ResNotifyStateAstroGoto} message ResNotifyStateAstroGoto
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyStateAstroGoto.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults)
      object.state = options.enums === String ? "ASTRO_STATE_IDLE" : 0;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.AstroState[message.state] === undefined
            ? message.state
            : $root.AstroState[message.state]
          : message.state;
    return object;
  };

  /**
   * Converts this ResNotifyStateAstroGoto to JSON.
   * @function toJSON
   * @memberof ResNotifyStateAstroGoto
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyStateAstroGoto.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyStateAstroGoto
   * @function getTypeUrl
   * @memberof ResNotifyStateAstroGoto
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyStateAstroGoto.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyStateAstroGoto";
  };

  return ResNotifyStateAstroGoto;
})();

$root.ResNotifyStateAstroTracking = (function () {
  /**
   * Properties of a ResNotifyStateAstroTracking.
   * @exports IResNotifyStateAstroTracking
   * @interface IResNotifyStateAstroTracking
   * @property {OperationState|null} [state] ResNotifyStateAstroTracking state
   * @property {string|null} [targetName] ResNotifyStateAstroTracking targetName
   */

  /**
   * Constructs a new ResNotifyStateAstroTracking.
   * @exports ResNotifyStateAstroTracking
   * @classdesc Represents a ResNotifyStateAstroTracking.
   * @implements IResNotifyStateAstroTracking
   * @constructor
   * @param {IResNotifyStateAstroTracking=} [properties] Properties to set
   */
  function ResNotifyStateAstroTracking(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyStateAstroTracking state.
   * @member {OperationState} state
   * @memberof ResNotifyStateAstroTracking
   * @instance
   */
  ResNotifyStateAstroTracking.prototype.state = 0;

  /**
   * ResNotifyStateAstroTracking targetName.
   * @member {string} targetName
   * @memberof ResNotifyStateAstroTracking
   * @instance
   */
  ResNotifyStateAstroTracking.prototype.targetName = "";

  /**
   * Creates a new ResNotifyStateAstroTracking instance using the specified properties.
   * @function create
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {IResNotifyStateAstroTracking=} [properties] Properties to set
   * @returns {ResNotifyStateAstroTracking} ResNotifyStateAstroTracking instance
   */
  ResNotifyStateAstroTracking.create = function create(properties) {
    return new ResNotifyStateAstroTracking(properties);
  };

  /**
   * Encodes the specified ResNotifyStateAstroTracking message. Does not implicitly {@link ResNotifyStateAstroTracking.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {IResNotifyStateAstroTracking} message ResNotifyStateAstroTracking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateAstroTracking.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    if (
      message.targetName != null &&
      Object.hasOwnProperty.call(message, "targetName")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.targetName);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyStateAstroTracking message, length delimited. Does not implicitly {@link ResNotifyStateAstroTracking.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {IResNotifyStateAstroTracking} message ResNotifyStateAstroTracking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateAstroTracking.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyStateAstroTracking message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyStateAstroTracking} ResNotifyStateAstroTracking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateAstroTracking.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyStateAstroTracking();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        case 2: {
          message.targetName = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyStateAstroTracking message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyStateAstroTracking} ResNotifyStateAstroTracking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateAstroTracking.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyStateAstroTracking message.
   * @function verify
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyStateAstroTracking.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
          break;
      }
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      if (!$util.isString(message.targetName))
        return "targetName: string expected";
    return null;
  };

  /**
   * Creates a ResNotifyStateAstroTracking message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyStateAstroTracking} ResNotifyStateAstroTracking
   */
  ResNotifyStateAstroTracking.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyStateAstroTracking) return object;
    var message = new $root.ResNotifyStateAstroTracking();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "OPERATION_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "OPERATION_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "OPERATION_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "OPERATION_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
    }
    if (object.targetName != null)
      message.targetName = String(object.targetName);
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyStateAstroTracking message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {ResNotifyStateAstroTracking} message ResNotifyStateAstroTracking
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyStateAstroTracking.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.state = options.enums === String ? "OPERATION_STATE_IDLE" : 0;
      object.targetName = "";
    }
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.OperationState[message.state] === undefined
            ? message.state
            : $root.OperationState[message.state]
          : message.state;
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      object.targetName = message.targetName;
    return object;
  };

  /**
   * Converts this ResNotifyStateAstroTracking to JSON.
   * @function toJSON
   * @memberof ResNotifyStateAstroTracking
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyStateAstroTracking.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyStateAstroTracking
   * @function getTypeUrl
   * @memberof ResNotifyStateAstroTracking
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyStateAstroTracking.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyStateAstroTracking";
  };

  return ResNotifyStateAstroTracking;
})();

$root.ResNotifyProgressCaptureRawDark = (function () {
  /**
   * Properties of a ResNotifyProgressCaptureRawDark.
   * @exports IResNotifyProgressCaptureRawDark
   * @interface IResNotifyProgressCaptureRawDark
   * @property {number|null} [progress] ResNotifyProgressCaptureRawDark progress
   * @property {number|null} [remainingTime] ResNotifyProgressCaptureRawDark remainingTime
   */

  /**
   * Constructs a new ResNotifyProgressCaptureRawDark.
   * @exports ResNotifyProgressCaptureRawDark
   * @classdesc Represents a ResNotifyProgressCaptureRawDark.
   * @implements IResNotifyProgressCaptureRawDark
   * @constructor
   * @param {IResNotifyProgressCaptureRawDark=} [properties] Properties to set
   */
  function ResNotifyProgressCaptureRawDark(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyProgressCaptureRawDark progress.
   * @member {number} progress
   * @memberof ResNotifyProgressCaptureRawDark
   * @instance
   */
  ResNotifyProgressCaptureRawDark.prototype.progress = 0;

  /**
   * ResNotifyProgressCaptureRawDark remainingTime.
   * @member {number} remainingTime
   * @memberof ResNotifyProgressCaptureRawDark
   * @instance
   */
  ResNotifyProgressCaptureRawDark.prototype.remainingTime = 0;

  /**
   * Creates a new ResNotifyProgressCaptureRawDark instance using the specified properties.
   * @function create
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {IResNotifyProgressCaptureRawDark=} [properties] Properties to set
   * @returns {ResNotifyProgressCaptureRawDark} ResNotifyProgressCaptureRawDark instance
   */
  ResNotifyProgressCaptureRawDark.create = function create(properties) {
    return new ResNotifyProgressCaptureRawDark(properties);
  };

  /**
   * Encodes the specified ResNotifyProgressCaptureRawDark message. Does not implicitly {@link ResNotifyProgressCaptureRawDark.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {IResNotifyProgressCaptureRawDark} message ResNotifyProgressCaptureRawDark message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyProgressCaptureRawDark.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.progress != null &&
      Object.hasOwnProperty.call(message, "progress")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.progress);
    if (
      message.remainingTime != null &&
      Object.hasOwnProperty.call(message, "remainingTime")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.remainingTime);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyProgressCaptureRawDark message, length delimited. Does not implicitly {@link ResNotifyProgressCaptureRawDark.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {IResNotifyProgressCaptureRawDark} message ResNotifyProgressCaptureRawDark message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyProgressCaptureRawDark.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyProgressCaptureRawDark message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyProgressCaptureRawDark} ResNotifyProgressCaptureRawDark
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyProgressCaptureRawDark.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyProgressCaptureRawDark();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.progress = reader.int32();
          break;
        }
        case 2: {
          message.remainingTime = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyProgressCaptureRawDark message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyProgressCaptureRawDark} ResNotifyProgressCaptureRawDark
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyProgressCaptureRawDark.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyProgressCaptureRawDark message.
   * @function verify
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyProgressCaptureRawDark.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.progress != null && message.hasOwnProperty("progress"))
      if (!$util.isInteger(message.progress))
        return "progress: integer expected";
    if (
      message.remainingTime != null &&
      message.hasOwnProperty("remainingTime")
    )
      if (!$util.isInteger(message.remainingTime))
        return "remainingTime: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyProgressCaptureRawDark message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyProgressCaptureRawDark} ResNotifyProgressCaptureRawDark
   */
  ResNotifyProgressCaptureRawDark.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyProgressCaptureRawDark) return object;
    var message = new $root.ResNotifyProgressCaptureRawDark();
    if (object.progress != null) message.progress = object.progress | 0;
    if (object.remainingTime != null)
      message.remainingTime = object.remainingTime | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyProgressCaptureRawDark message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {ResNotifyProgressCaptureRawDark} message ResNotifyProgressCaptureRawDark
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyProgressCaptureRawDark.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.progress = 0;
      object.remainingTime = 0;
    }
    if (message.progress != null && message.hasOwnProperty("progress"))
      object.progress = message.progress;
    if (
      message.remainingTime != null &&
      message.hasOwnProperty("remainingTime")
    )
      object.remainingTime = message.remainingTime;
    return object;
  };

  /**
   * Converts this ResNotifyProgressCaptureRawDark to JSON.
   * @function toJSON
   * @memberof ResNotifyProgressCaptureRawDark
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyProgressCaptureRawDark.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyProgressCaptureRawDark
   * @function getTypeUrl
   * @memberof ResNotifyProgressCaptureRawDark
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyProgressCaptureRawDark.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyProgressCaptureRawDark";
  };

  return ResNotifyProgressCaptureRawDark;
})();

$root.ResNotifyProgressCaptureRawLiveStacking = (function () {
  /**
   * Properties of a ResNotifyProgressCaptureRawLiveStacking.
   * @exports IResNotifyProgressCaptureRawLiveStacking
   * @interface IResNotifyProgressCaptureRawLiveStacking
   * @property {number|null} [totalCount] ResNotifyProgressCaptureRawLiveStacking totalCount
   * @property {number|null} [updateCountType] ResNotifyProgressCaptureRawLiveStacking updateCountType
   * @property {number|null} [currentCount] ResNotifyProgressCaptureRawLiveStacking currentCount
   * @property {number|null} [stackedCount] ResNotifyProgressCaptureRawLiveStacking stackedCount
   * @property {number|null} [expIndex] ResNotifyProgressCaptureRawLiveStacking expIndex
   * @property {number|null} [gainIndex] ResNotifyProgressCaptureRawLiveStacking gainIndex
   * @property {string|null} [targetName] ResNotifyProgressCaptureRawLiveStacking targetName
   */

  /**
   * Constructs a new ResNotifyProgressCaptureRawLiveStacking.
   * @exports ResNotifyProgressCaptureRawLiveStacking
   * @classdesc Represents a ResNotifyProgressCaptureRawLiveStacking.
   * @implements IResNotifyProgressCaptureRawLiveStacking
   * @constructor
   * @param {IResNotifyProgressCaptureRawLiveStacking=} [properties] Properties to set
   */
  function ResNotifyProgressCaptureRawLiveStacking(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyProgressCaptureRawLiveStacking totalCount.
   * @member {number} totalCount
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @instance
   */
  ResNotifyProgressCaptureRawLiveStacking.prototype.totalCount = 0;

  /**
   * ResNotifyProgressCaptureRawLiveStacking updateCountType.
   * @member {number} updateCountType
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @instance
   */
  ResNotifyProgressCaptureRawLiveStacking.prototype.updateCountType = 0;

  /**
   * ResNotifyProgressCaptureRawLiveStacking currentCount.
   * @member {number} currentCount
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @instance
   */
  ResNotifyProgressCaptureRawLiveStacking.prototype.currentCount = 0;

  /**
   * ResNotifyProgressCaptureRawLiveStacking stackedCount.
   * @member {number} stackedCount
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @instance
   */
  ResNotifyProgressCaptureRawLiveStacking.prototype.stackedCount = 0;

  /**
   * ResNotifyProgressCaptureRawLiveStacking expIndex.
   * @member {number} expIndex
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @instance
   */
  ResNotifyProgressCaptureRawLiveStacking.prototype.expIndex = 0;

  /**
   * ResNotifyProgressCaptureRawLiveStacking gainIndex.
   * @member {number} gainIndex
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @instance
   */
  ResNotifyProgressCaptureRawLiveStacking.prototype.gainIndex = 0;

  /**
   * ResNotifyProgressCaptureRawLiveStacking targetName.
   * @member {string} targetName
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @instance
   */
  ResNotifyProgressCaptureRawLiveStacking.prototype.targetName = "";

  /**
   * Creates a new ResNotifyProgressCaptureRawLiveStacking instance using the specified properties.
   * @function create
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {IResNotifyProgressCaptureRawLiveStacking=} [properties] Properties to set
   * @returns {ResNotifyProgressCaptureRawLiveStacking} ResNotifyProgressCaptureRawLiveStacking instance
   */
  ResNotifyProgressCaptureRawLiveStacking.create = function create(properties) {
    return new ResNotifyProgressCaptureRawLiveStacking(properties);
  };

  /**
   * Encodes the specified ResNotifyProgressCaptureRawLiveStacking message. Does not implicitly {@link ResNotifyProgressCaptureRawLiveStacking.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {IResNotifyProgressCaptureRawLiveStacking} message ResNotifyProgressCaptureRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyProgressCaptureRawLiveStacking.encode = function encode(
    message,
    writer
  ) {
    if (!writer) writer = $Writer.create();
    if (
      message.totalCount != null &&
      Object.hasOwnProperty.call(message, "totalCount")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.totalCount);
    if (
      message.updateCountType != null &&
      Object.hasOwnProperty.call(message, "updateCountType")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.updateCountType);
    if (
      message.currentCount != null &&
      Object.hasOwnProperty.call(message, "currentCount")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.currentCount);
    if (
      message.stackedCount != null &&
      Object.hasOwnProperty.call(message, "stackedCount")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.stackedCount);
    if (
      message.expIndex != null &&
      Object.hasOwnProperty.call(message, "expIndex")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).int32(message.expIndex);
    if (
      message.gainIndex != null &&
      Object.hasOwnProperty.call(message, "gainIndex")
    )
      writer.uint32(/* id 6, wireType 0 =*/ 48).int32(message.gainIndex);
    if (
      message.targetName != null &&
      Object.hasOwnProperty.call(message, "targetName")
    )
      writer.uint32(/* id 7, wireType 2 =*/ 58).string(message.targetName);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyProgressCaptureRawLiveStacking message, length delimited. Does not implicitly {@link ResNotifyProgressCaptureRawLiveStacking.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {IResNotifyProgressCaptureRawLiveStacking} message ResNotifyProgressCaptureRawLiveStacking message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyProgressCaptureRawLiveStacking.encodeDelimited =
    function encodeDelimited(message, writer) {
      return this.encode(message, writer).ldelim();
    };

  /**
   * Decodes a ResNotifyProgressCaptureRawLiveStacking message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyProgressCaptureRawLiveStacking} ResNotifyProgressCaptureRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyProgressCaptureRawLiveStacking.decode = function decode(
    reader,
    length
  ) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyProgressCaptureRawLiveStacking();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.totalCount = reader.int32();
          break;
        }
        case 2: {
          message.updateCountType = reader.int32();
          break;
        }
        case 3: {
          message.currentCount = reader.int32();
          break;
        }
        case 4: {
          message.stackedCount = reader.int32();
          break;
        }
        case 5: {
          message.expIndex = reader.int32();
          break;
        }
        case 6: {
          message.gainIndex = reader.int32();
          break;
        }
        case 7: {
          message.targetName = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyProgressCaptureRawLiveStacking message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyProgressCaptureRawLiveStacking} ResNotifyProgressCaptureRawLiveStacking
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyProgressCaptureRawLiveStacking.decodeDelimited =
    function decodeDelimited(reader) {
      if (!(reader instanceof $Reader)) reader = new $Reader(reader);
      return this.decode(reader, reader.uint32());
    };

  /**
   * Verifies a ResNotifyProgressCaptureRawLiveStacking message.
   * @function verify
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyProgressCaptureRawLiveStacking.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.totalCount != null && message.hasOwnProperty("totalCount"))
      if (!$util.isInteger(message.totalCount))
        return "totalCount: integer expected";
    if (
      message.updateCountType != null &&
      message.hasOwnProperty("updateCountType")
    )
      if (!$util.isInteger(message.updateCountType))
        return "updateCountType: integer expected";
    if (message.currentCount != null && message.hasOwnProperty("currentCount"))
      if (!$util.isInteger(message.currentCount))
        return "currentCount: integer expected";
    if (message.stackedCount != null && message.hasOwnProperty("stackedCount"))
      if (!$util.isInteger(message.stackedCount))
        return "stackedCount: integer expected";
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      if (!$util.isInteger(message.expIndex))
        return "expIndex: integer expected";
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      if (!$util.isInteger(message.gainIndex))
        return "gainIndex: integer expected";
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      if (!$util.isString(message.targetName))
        return "targetName: string expected";
    return null;
  };

  /**
   * Creates a ResNotifyProgressCaptureRawLiveStacking message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyProgressCaptureRawLiveStacking} ResNotifyProgressCaptureRawLiveStacking
   */
  ResNotifyProgressCaptureRawLiveStacking.fromObject = function fromObject(
    object
  ) {
    if (object instanceof $root.ResNotifyProgressCaptureRawLiveStacking)
      return object;
    var message = new $root.ResNotifyProgressCaptureRawLiveStacking();
    if (object.totalCount != null) message.totalCount = object.totalCount | 0;
    if (object.updateCountType != null)
      message.updateCountType = object.updateCountType | 0;
    if (object.currentCount != null)
      message.currentCount = object.currentCount | 0;
    if (object.stackedCount != null)
      message.stackedCount = object.stackedCount | 0;
    if (object.expIndex != null) message.expIndex = object.expIndex | 0;
    if (object.gainIndex != null) message.gainIndex = object.gainIndex | 0;
    if (object.targetName != null)
      message.targetName = String(object.targetName);
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyProgressCaptureRawLiveStacking message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {ResNotifyProgressCaptureRawLiveStacking} message ResNotifyProgressCaptureRawLiveStacking
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyProgressCaptureRawLiveStacking.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.totalCount = 0;
      object.updateCountType = 0;
      object.currentCount = 0;
      object.stackedCount = 0;
      object.expIndex = 0;
      object.gainIndex = 0;
      object.targetName = "";
    }
    if (message.totalCount != null && message.hasOwnProperty("totalCount"))
      object.totalCount = message.totalCount;
    if (
      message.updateCountType != null &&
      message.hasOwnProperty("updateCountType")
    )
      object.updateCountType = message.updateCountType;
    if (message.currentCount != null && message.hasOwnProperty("currentCount"))
      object.currentCount = message.currentCount;
    if (message.stackedCount != null && message.hasOwnProperty("stackedCount"))
      object.stackedCount = message.stackedCount;
    if (message.expIndex != null && message.hasOwnProperty("expIndex"))
      object.expIndex = message.expIndex;
    if (message.gainIndex != null && message.hasOwnProperty("gainIndex"))
      object.gainIndex = message.gainIndex;
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      object.targetName = message.targetName;
    return object;
  };

  /**
   * Converts this ResNotifyProgressCaptureRawLiveStacking to JSON.
   * @function toJSON
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyProgressCaptureRawLiveStacking.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyProgressCaptureRawLiveStacking
   * @function getTypeUrl
   * @memberof ResNotifyProgressCaptureRawLiveStacking
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyProgressCaptureRawLiveStacking.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyProgressCaptureRawLiveStacking";
  };

  return ResNotifyProgressCaptureRawLiveStacking;
})();

$root.ResNotifyParam = (function () {
  /**
   * Properties of a ResNotifyParam.
   * @exports IResNotifyParam
   * @interface IResNotifyParam
   * @property {Array.<ICommonParam>|null} [param] ResNotifyParam param
   */

  /**
   * Constructs a new ResNotifyParam.
   * @exports ResNotifyParam
   * @classdesc Represents a ResNotifyParam.
   * @implements IResNotifyParam
   * @constructor
   * @param {IResNotifyParam=} [properties] Properties to set
   */
  function ResNotifyParam(properties) {
    this.param = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyParam param.
   * @member {Array.<ICommonParam>} param
   * @memberof ResNotifyParam
   * @instance
   */
  ResNotifyParam.prototype.param = $util.emptyArray;

  /**
   * Creates a new ResNotifyParam instance using the specified properties.
   * @function create
   * @memberof ResNotifyParam
   * @static
   * @param {IResNotifyParam=} [properties] Properties to set
   * @returns {ResNotifyParam} ResNotifyParam instance
   */
  ResNotifyParam.create = function create(properties) {
    return new ResNotifyParam(properties);
  };

  /**
   * Encodes the specified ResNotifyParam message. Does not implicitly {@link ResNotifyParam.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyParam
   * @static
   * @param {IResNotifyParam} message ResNotifyParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyParam.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.param != null && message.param.length)
      for (var i = 0; i < message.param.length; ++i)
        $root.CommonParam.encode(
          message.param[i],
          writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
        ).ldelim();
    return writer;
  };

  /**
   * Encodes the specified ResNotifyParam message, length delimited. Does not implicitly {@link ResNotifyParam.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyParam
   * @static
   * @param {IResNotifyParam} message ResNotifyParam message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyParam.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyParam message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyParam} ResNotifyParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyParam.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyParam();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          if (!(message.param && message.param.length)) message.param = [];
          message.param.push($root.CommonParam.decode(reader, reader.uint32()));
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyParam message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyParam
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyParam} ResNotifyParam
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyParam.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyParam message.
   * @function verify
   * @memberof ResNotifyParam
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyParam.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.param != null && message.hasOwnProperty("param")) {
      if (!Array.isArray(message.param)) return "param: array expected";
      for (var i = 0; i < message.param.length; ++i) {
        var error = $root.CommonParam.verify(message.param[i]);
        if (error) return "param." + error;
      }
    }
    return null;
  };

  /**
   * Creates a ResNotifyParam message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyParam
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyParam} ResNotifyParam
   */
  ResNotifyParam.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyParam) return object;
    var message = new $root.ResNotifyParam();
    if (object.param) {
      if (!Array.isArray(object.param))
        throw TypeError(".ResNotifyParam.param: array expected");
      message.param = [];
      for (var i = 0; i < object.param.length; ++i) {
        if (typeof object.param[i] !== "object")
          throw TypeError(".ResNotifyParam.param: object expected");
        message.param[i] = $root.CommonParam.fromObject(object.param[i]);
      }
    }
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyParam message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyParam
   * @static
   * @param {ResNotifyParam} message ResNotifyParam
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyParam.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.param = [];
    if (message.param && message.param.length) {
      object.param = [];
      for (var j = 0; j < message.param.length; ++j)
        object.param[j] = $root.CommonParam.toObject(message.param[j], options);
    }
    return object;
  };

  /**
   * Converts this ResNotifyParam to JSON.
   * @function toJSON
   * @memberof ResNotifyParam
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyParam.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyParam
   * @function getTypeUrl
   * @memberof ResNotifyParam
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyParam.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyParam";
  };

  return ResNotifyParam;
})();

$root.ResNotifyCamFunctionState = (function () {
  /**
   * Properties of a ResNotifyCamFunctionState.
   * @exports IResNotifyCamFunctionState
   * @interface IResNotifyCamFunctionState
   * @property {OperationState|null} [state] ResNotifyCamFunctionState state
   * @property {number|null} [functionId] ResNotifyCamFunctionState functionId
   */

  /**
   * Constructs a new ResNotifyCamFunctionState.
   * @exports ResNotifyCamFunctionState
   * @classdesc Represents a ResNotifyCamFunctionState.
   * @implements IResNotifyCamFunctionState
   * @constructor
   * @param {IResNotifyCamFunctionState=} [properties] Properties to set
   */
  function ResNotifyCamFunctionState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyCamFunctionState state.
   * @member {OperationState} state
   * @memberof ResNotifyCamFunctionState
   * @instance
   */
  ResNotifyCamFunctionState.prototype.state = 0;

  /**
   * ResNotifyCamFunctionState functionId.
   * @member {number} functionId
   * @memberof ResNotifyCamFunctionState
   * @instance
   */
  ResNotifyCamFunctionState.prototype.functionId = 0;

  /**
   * Creates a new ResNotifyCamFunctionState instance using the specified properties.
   * @function create
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {IResNotifyCamFunctionState=} [properties] Properties to set
   * @returns {ResNotifyCamFunctionState} ResNotifyCamFunctionState instance
   */
  ResNotifyCamFunctionState.create = function create(properties) {
    return new ResNotifyCamFunctionState(properties);
  };

  /**
   * Encodes the specified ResNotifyCamFunctionState message. Does not implicitly {@link ResNotifyCamFunctionState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {IResNotifyCamFunctionState} message ResNotifyCamFunctionState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyCamFunctionState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    if (
      message.functionId != null &&
      Object.hasOwnProperty.call(message, "functionId")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).uint32(message.functionId);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyCamFunctionState message, length delimited. Does not implicitly {@link ResNotifyCamFunctionState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {IResNotifyCamFunctionState} message ResNotifyCamFunctionState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyCamFunctionState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyCamFunctionState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyCamFunctionState} ResNotifyCamFunctionState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyCamFunctionState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyCamFunctionState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        case 2: {
          message.functionId = reader.uint32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyCamFunctionState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyCamFunctionState} ResNotifyCamFunctionState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyCamFunctionState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyCamFunctionState message.
   * @function verify
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyCamFunctionState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
          break;
      }
    if (message.functionId != null && message.hasOwnProperty("functionId"))
      if (!$util.isInteger(message.functionId))
        return "functionId: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyCamFunctionState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyCamFunctionState} ResNotifyCamFunctionState
   */
  ResNotifyCamFunctionState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyCamFunctionState) return object;
    var message = new $root.ResNotifyCamFunctionState();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "OPERATION_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "OPERATION_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "OPERATION_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "OPERATION_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
    }
    if (object.functionId != null) message.functionId = object.functionId >>> 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyCamFunctionState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {ResNotifyCamFunctionState} message ResNotifyCamFunctionState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyCamFunctionState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.state = options.enums === String ? "OPERATION_STATE_IDLE" : 0;
      object.functionId = 0;
    }
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.OperationState[message.state] === undefined
            ? message.state
            : $root.OperationState[message.state]
          : message.state;
    if (message.functionId != null && message.hasOwnProperty("functionId"))
      object.functionId = message.functionId;
    return object;
  };

  /**
   * Converts this ResNotifyCamFunctionState to JSON.
   * @function toJSON
   * @memberof ResNotifyCamFunctionState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyCamFunctionState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyCamFunctionState
   * @function getTypeUrl
   * @memberof ResNotifyCamFunctionState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyCamFunctionState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyCamFunctionState";
  };

  return ResNotifyCamFunctionState;
})();

$root.ResNotifyBurstProgress = (function () {
  /**
   * Properties of a ResNotifyBurstProgress.
   * @exports IResNotifyBurstProgress
   * @interface IResNotifyBurstProgress
   * @property {number|null} [totalCount] ResNotifyBurstProgress totalCount
   * @property {number|null} [completedCount] ResNotifyBurstProgress completedCount
   */

  /**
   * Constructs a new ResNotifyBurstProgress.
   * @exports ResNotifyBurstProgress
   * @classdesc Represents a ResNotifyBurstProgress.
   * @implements IResNotifyBurstProgress
   * @constructor
   * @param {IResNotifyBurstProgress=} [properties] Properties to set
   */
  function ResNotifyBurstProgress(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyBurstProgress totalCount.
   * @member {number} totalCount
   * @memberof ResNotifyBurstProgress
   * @instance
   */
  ResNotifyBurstProgress.prototype.totalCount = 0;

  /**
   * ResNotifyBurstProgress completedCount.
   * @member {number} completedCount
   * @memberof ResNotifyBurstProgress
   * @instance
   */
  ResNotifyBurstProgress.prototype.completedCount = 0;

  /**
   * Creates a new ResNotifyBurstProgress instance using the specified properties.
   * @function create
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {IResNotifyBurstProgress=} [properties] Properties to set
   * @returns {ResNotifyBurstProgress} ResNotifyBurstProgress instance
   */
  ResNotifyBurstProgress.create = function create(properties) {
    return new ResNotifyBurstProgress(properties);
  };

  /**
   * Encodes the specified ResNotifyBurstProgress message. Does not implicitly {@link ResNotifyBurstProgress.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {IResNotifyBurstProgress} message ResNotifyBurstProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyBurstProgress.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.totalCount != null &&
      Object.hasOwnProperty.call(message, "totalCount")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.totalCount);
    if (
      message.completedCount != null &&
      Object.hasOwnProperty.call(message, "completedCount")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).uint32(message.completedCount);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyBurstProgress message, length delimited. Does not implicitly {@link ResNotifyBurstProgress.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {IResNotifyBurstProgress} message ResNotifyBurstProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyBurstProgress.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyBurstProgress message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyBurstProgress} ResNotifyBurstProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyBurstProgress.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyBurstProgress();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.totalCount = reader.uint32();
          break;
        }
        case 2: {
          message.completedCount = reader.uint32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyBurstProgress message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyBurstProgress} ResNotifyBurstProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyBurstProgress.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyBurstProgress message.
   * @function verify
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyBurstProgress.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.totalCount != null && message.hasOwnProperty("totalCount"))
      if (!$util.isInteger(message.totalCount))
        return "totalCount: integer expected";
    if (
      message.completedCount != null &&
      message.hasOwnProperty("completedCount")
    )
      if (!$util.isInteger(message.completedCount))
        return "completedCount: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyBurstProgress message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyBurstProgress} ResNotifyBurstProgress
   */
  ResNotifyBurstProgress.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyBurstProgress) return object;
    var message = new $root.ResNotifyBurstProgress();
    if (object.totalCount != null) message.totalCount = object.totalCount >>> 0;
    if (object.completedCount != null)
      message.completedCount = object.completedCount >>> 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyBurstProgress message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {ResNotifyBurstProgress} message ResNotifyBurstProgress
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyBurstProgress.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.totalCount = 0;
      object.completedCount = 0;
    }
    if (message.totalCount != null && message.hasOwnProperty("totalCount"))
      object.totalCount = message.totalCount;
    if (
      message.completedCount != null &&
      message.hasOwnProperty("completedCount")
    )
      object.completedCount = message.completedCount;
    return object;
  };

  /**
   * Converts this ResNotifyBurstProgress to JSON.
   * @function toJSON
   * @memberof ResNotifyBurstProgress
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyBurstProgress.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyBurstProgress
   * @function getTypeUrl
   * @memberof ResNotifyBurstProgress
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyBurstProgress.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyBurstProgress";
  };

  return ResNotifyBurstProgress;
})();

$root.ResNotifyPanoramaProgress = (function () {
  /**
   * Properties of a ResNotifyPanoramaProgress.
   * @exports IResNotifyPanoramaProgress
   * @interface IResNotifyPanoramaProgress
   * @property {number|null} [totalCount] ResNotifyPanoramaProgress totalCount
   * @property {number|null} [completedCount] ResNotifyPanoramaProgress completedCount
   */

  /**
   * Constructs a new ResNotifyPanoramaProgress.
   * @exports ResNotifyPanoramaProgress
   * @classdesc Represents a ResNotifyPanoramaProgress.
   * @implements IResNotifyPanoramaProgress
   * @constructor
   * @param {IResNotifyPanoramaProgress=} [properties] Properties to set
   */
  function ResNotifyPanoramaProgress(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyPanoramaProgress totalCount.
   * @member {number} totalCount
   * @memberof ResNotifyPanoramaProgress
   * @instance
   */
  ResNotifyPanoramaProgress.prototype.totalCount = 0;

  /**
   * ResNotifyPanoramaProgress completedCount.
   * @member {number} completedCount
   * @memberof ResNotifyPanoramaProgress
   * @instance
   */
  ResNotifyPanoramaProgress.prototype.completedCount = 0;

  /**
   * Creates a new ResNotifyPanoramaProgress instance using the specified properties.
   * @function create
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {IResNotifyPanoramaProgress=} [properties] Properties to set
   * @returns {ResNotifyPanoramaProgress} ResNotifyPanoramaProgress instance
   */
  ResNotifyPanoramaProgress.create = function create(properties) {
    return new ResNotifyPanoramaProgress(properties);
  };

  /**
   * Encodes the specified ResNotifyPanoramaProgress message. Does not implicitly {@link ResNotifyPanoramaProgress.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {IResNotifyPanoramaProgress} message ResNotifyPanoramaProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPanoramaProgress.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.totalCount != null &&
      Object.hasOwnProperty.call(message, "totalCount")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.totalCount);
    if (
      message.completedCount != null &&
      Object.hasOwnProperty.call(message, "completedCount")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.completedCount);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyPanoramaProgress message, length delimited. Does not implicitly {@link ResNotifyPanoramaProgress.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {IResNotifyPanoramaProgress} message ResNotifyPanoramaProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPanoramaProgress.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyPanoramaProgress message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyPanoramaProgress} ResNotifyPanoramaProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPanoramaProgress.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyPanoramaProgress();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.totalCount = reader.int32();
          break;
        }
        case 2: {
          message.completedCount = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyPanoramaProgress message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyPanoramaProgress} ResNotifyPanoramaProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPanoramaProgress.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyPanoramaProgress message.
   * @function verify
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyPanoramaProgress.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.totalCount != null && message.hasOwnProperty("totalCount"))
      if (!$util.isInteger(message.totalCount))
        return "totalCount: integer expected";
    if (
      message.completedCount != null &&
      message.hasOwnProperty("completedCount")
    )
      if (!$util.isInteger(message.completedCount))
        return "completedCount: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyPanoramaProgress message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyPanoramaProgress} ResNotifyPanoramaProgress
   */
  ResNotifyPanoramaProgress.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyPanoramaProgress) return object;
    var message = new $root.ResNotifyPanoramaProgress();
    if (object.totalCount != null) message.totalCount = object.totalCount | 0;
    if (object.completedCount != null)
      message.completedCount = object.completedCount | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyPanoramaProgress message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {ResNotifyPanoramaProgress} message ResNotifyPanoramaProgress
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyPanoramaProgress.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.totalCount = 0;
      object.completedCount = 0;
    }
    if (message.totalCount != null && message.hasOwnProperty("totalCount"))
      object.totalCount = message.totalCount;
    if (
      message.completedCount != null &&
      message.hasOwnProperty("completedCount")
    )
      object.completedCount = message.completedCount;
    return object;
  };

  /**
   * Converts this ResNotifyPanoramaProgress to JSON.
   * @function toJSON
   * @memberof ResNotifyPanoramaProgress
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyPanoramaProgress.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyPanoramaProgress
   * @function getTypeUrl
   * @memberof ResNotifyPanoramaProgress
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyPanoramaProgress.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyPanoramaProgress";
  };

  return ResNotifyPanoramaProgress;
})();

$root.ResNotifyRgbState = (function () {
  /**
   * Properties of a ResNotifyRgbState.
   * @exports IResNotifyRgbState
   * @interface IResNotifyRgbState
   * @property {number|null} [state] ResNotifyRgbState state
   */

  /**
   * Constructs a new ResNotifyRgbState.
   * @exports ResNotifyRgbState
   * @classdesc Represents a ResNotifyRgbState.
   * @implements IResNotifyRgbState
   * @constructor
   * @param {IResNotifyRgbState=} [properties] Properties to set
   */
  function ResNotifyRgbState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyRgbState state.
   * @member {number} state
   * @memberof ResNotifyRgbState
   * @instance
   */
  ResNotifyRgbState.prototype.state = 0;

  /**
   * Creates a new ResNotifyRgbState instance using the specified properties.
   * @function create
   * @memberof ResNotifyRgbState
   * @static
   * @param {IResNotifyRgbState=} [properties] Properties to set
   * @returns {ResNotifyRgbState} ResNotifyRgbState instance
   */
  ResNotifyRgbState.create = function create(properties) {
    return new ResNotifyRgbState(properties);
  };

  /**
   * Encodes the specified ResNotifyRgbState message. Does not implicitly {@link ResNotifyRgbState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyRgbState
   * @static
   * @param {IResNotifyRgbState} message ResNotifyRgbState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyRgbState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyRgbState message, length delimited. Does not implicitly {@link ResNotifyRgbState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyRgbState
   * @static
   * @param {IResNotifyRgbState} message ResNotifyRgbState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyRgbState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyRgbState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyRgbState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyRgbState} ResNotifyRgbState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyRgbState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyRgbState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyRgbState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyRgbState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyRgbState} ResNotifyRgbState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyRgbState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyRgbState message.
   * @function verify
   * @memberof ResNotifyRgbState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyRgbState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      if (!$util.isInteger(message.state)) return "state: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyRgbState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyRgbState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyRgbState} ResNotifyRgbState
   */
  ResNotifyRgbState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyRgbState) return object;
    var message = new $root.ResNotifyRgbState();
    if (object.state != null) message.state = object.state | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyRgbState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyRgbState
   * @static
   * @param {ResNotifyRgbState} message ResNotifyRgbState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyRgbState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.state = 0;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state = message.state;
    return object;
  };

  /**
   * Converts this ResNotifyRgbState to JSON.
   * @function toJSON
   * @memberof ResNotifyRgbState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyRgbState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyRgbState
   * @function getTypeUrl
   * @memberof ResNotifyRgbState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyRgbState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyRgbState";
  };

  return ResNotifyRgbState;
})();

$root.ResNotifyPowerIndState = (function () {
  /**
   * Properties of a ResNotifyPowerIndState.
   * @exports IResNotifyPowerIndState
   * @interface IResNotifyPowerIndState
   * @property {number|null} [state] ResNotifyPowerIndState state
   */

  /**
   * Constructs a new ResNotifyPowerIndState.
   * @exports ResNotifyPowerIndState
   * @classdesc Represents a ResNotifyPowerIndState.
   * @implements IResNotifyPowerIndState
   * @constructor
   * @param {IResNotifyPowerIndState=} [properties] Properties to set
   */
  function ResNotifyPowerIndState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyPowerIndState state.
   * @member {number} state
   * @memberof ResNotifyPowerIndState
   * @instance
   */
  ResNotifyPowerIndState.prototype.state = 0;

  /**
   * Creates a new ResNotifyPowerIndState instance using the specified properties.
   * @function create
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {IResNotifyPowerIndState=} [properties] Properties to set
   * @returns {ResNotifyPowerIndState} ResNotifyPowerIndState instance
   */
  ResNotifyPowerIndState.create = function create(properties) {
    return new ResNotifyPowerIndState(properties);
  };

  /**
   * Encodes the specified ResNotifyPowerIndState message. Does not implicitly {@link ResNotifyPowerIndState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {IResNotifyPowerIndState} message ResNotifyPowerIndState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPowerIndState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyPowerIndState message, length delimited. Does not implicitly {@link ResNotifyPowerIndState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {IResNotifyPowerIndState} message ResNotifyPowerIndState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPowerIndState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyPowerIndState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyPowerIndState} ResNotifyPowerIndState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPowerIndState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyPowerIndState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyPowerIndState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyPowerIndState} ResNotifyPowerIndState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPowerIndState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyPowerIndState message.
   * @function verify
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyPowerIndState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      if (!$util.isInteger(message.state)) return "state: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyPowerIndState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyPowerIndState} ResNotifyPowerIndState
   */
  ResNotifyPowerIndState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyPowerIndState) return object;
    var message = new $root.ResNotifyPowerIndState();
    if (object.state != null) message.state = object.state | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyPowerIndState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {ResNotifyPowerIndState} message ResNotifyPowerIndState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyPowerIndState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.state = 0;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state = message.state;
    return object;
  };

  /**
   * Converts this ResNotifyPowerIndState to JSON.
   * @function toJSON
   * @memberof ResNotifyPowerIndState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyPowerIndState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyPowerIndState
   * @function getTypeUrl
   * @memberof ResNotifyPowerIndState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyPowerIndState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyPowerIndState";
  };

  return ResNotifyPowerIndState;
})();

$root.ResNotifyHostSlaveMode = (function () {
  /**
   * Properties of a ResNotifyHostSlaveMode.
   * @exports IResNotifyHostSlaveMode
   * @interface IResNotifyHostSlaveMode
   * @property {number|null} [mode] ResNotifyHostSlaveMode mode
   * @property {boolean|null} [lock] ResNotifyHostSlaveMode lock
   */

  /**
   * Constructs a new ResNotifyHostSlaveMode.
   * @exports ResNotifyHostSlaveMode
   * @classdesc Represents a ResNotifyHostSlaveMode.
   * @implements IResNotifyHostSlaveMode
   * @constructor
   * @param {IResNotifyHostSlaveMode=} [properties] Properties to set
   */
  function ResNotifyHostSlaveMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyHostSlaveMode mode.
   * @member {number} mode
   * @memberof ResNotifyHostSlaveMode
   * @instance
   */
  ResNotifyHostSlaveMode.prototype.mode = 0;

  /**
   * ResNotifyHostSlaveMode lock.
   * @member {boolean} lock
   * @memberof ResNotifyHostSlaveMode
   * @instance
   */
  ResNotifyHostSlaveMode.prototype.lock = false;

  /**
   * Creates a new ResNotifyHostSlaveMode instance using the specified properties.
   * @function create
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {IResNotifyHostSlaveMode=} [properties] Properties to set
   * @returns {ResNotifyHostSlaveMode} ResNotifyHostSlaveMode instance
   */
  ResNotifyHostSlaveMode.create = function create(properties) {
    return new ResNotifyHostSlaveMode(properties);
  };

  /**
   * Encodes the specified ResNotifyHostSlaveMode message. Does not implicitly {@link ResNotifyHostSlaveMode.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {IResNotifyHostSlaveMode} message ResNotifyHostSlaveMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyHostSlaveMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    if (message.lock != null && Object.hasOwnProperty.call(message, "lock"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).bool(message.lock);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyHostSlaveMode message, length delimited. Does not implicitly {@link ResNotifyHostSlaveMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {IResNotifyHostSlaveMode} message ResNotifyHostSlaveMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyHostSlaveMode.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyHostSlaveMode message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyHostSlaveMode} ResNotifyHostSlaveMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyHostSlaveMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyHostSlaveMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        case 2: {
          message.lock = reader.bool();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyHostSlaveMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyHostSlaveMode} ResNotifyHostSlaveMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyHostSlaveMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyHostSlaveMode message.
   * @function verify
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyHostSlaveMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    if (message.lock != null && message.hasOwnProperty("lock"))
      if (typeof message.lock !== "boolean") return "lock: boolean expected";
    return null;
  };

  /**
   * Creates a ResNotifyHostSlaveMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyHostSlaveMode} ResNotifyHostSlaveMode
   */
  ResNotifyHostSlaveMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyHostSlaveMode) return object;
    var message = new $root.ResNotifyHostSlaveMode();
    if (object.mode != null) message.mode = object.mode | 0;
    if (object.lock != null) message.lock = Boolean(object.lock);
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyHostSlaveMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {ResNotifyHostSlaveMode} message ResNotifyHostSlaveMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyHostSlaveMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.mode = 0;
      object.lock = false;
    }
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    if (message.lock != null && message.hasOwnProperty("lock"))
      object.lock = message.lock;
    return object;
  };

  /**
   * Converts this ResNotifyHostSlaveMode to JSON.
   * @function toJSON
   * @memberof ResNotifyHostSlaveMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyHostSlaveMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyHostSlaveMode
   * @function getTypeUrl
   * @memberof ResNotifyHostSlaveMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyHostSlaveMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyHostSlaveMode";
  };

  return ResNotifyHostSlaveMode;
})();

$root.ResNotifyMTPState = (function () {
  /**
   * Properties of a ResNotifyMTPState.
   * @exports IResNotifyMTPState
   * @interface IResNotifyMTPState
   * @property {number|null} [mode] ResNotifyMTPState mode
   */

  /**
   * Constructs a new ResNotifyMTPState.
   * @exports ResNotifyMTPState
   * @classdesc Represents a ResNotifyMTPState.
   * @implements IResNotifyMTPState
   * @constructor
   * @param {IResNotifyMTPState=} [properties] Properties to set
   */
  function ResNotifyMTPState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyMTPState mode.
   * @member {number} mode
   * @memberof ResNotifyMTPState
   * @instance
   */
  ResNotifyMTPState.prototype.mode = 0;

  /**
   * Creates a new ResNotifyMTPState instance using the specified properties.
   * @function create
   * @memberof ResNotifyMTPState
   * @static
   * @param {IResNotifyMTPState=} [properties] Properties to set
   * @returns {ResNotifyMTPState} ResNotifyMTPState instance
   */
  ResNotifyMTPState.create = function create(properties) {
    return new ResNotifyMTPState(properties);
  };

  /**
   * Encodes the specified ResNotifyMTPState message. Does not implicitly {@link ResNotifyMTPState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyMTPState
   * @static
   * @param {IResNotifyMTPState} message ResNotifyMTPState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyMTPState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyMTPState message, length delimited. Does not implicitly {@link ResNotifyMTPState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyMTPState
   * @static
   * @param {IResNotifyMTPState} message ResNotifyMTPState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyMTPState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyMTPState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyMTPState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyMTPState} ResNotifyMTPState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyMTPState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyMTPState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyMTPState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyMTPState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyMTPState} ResNotifyMTPState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyMTPState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyMTPState message.
   * @function verify
   * @memberof ResNotifyMTPState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyMTPState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyMTPState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyMTPState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyMTPState} ResNotifyMTPState
   */
  ResNotifyMTPState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyMTPState) return object;
    var message = new $root.ResNotifyMTPState();
    if (object.mode != null) message.mode = object.mode | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyMTPState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyMTPState
   * @static
   * @param {ResNotifyMTPState} message ResNotifyMTPState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyMTPState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ResNotifyMTPState to JSON.
   * @function toJSON
   * @memberof ResNotifyMTPState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyMTPState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyMTPState
   * @function getTypeUrl
   * @memberof ResNotifyMTPState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyMTPState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyMTPState";
  };

  return ResNotifyMTPState;
})();

$root.ResNotifyTrackResult = (function () {
  /**
   * Properties of a ResNotifyTrackResult.
   * @exports IResNotifyTrackResult
   * @interface IResNotifyTrackResult
   * @property {number|null} [x] ResNotifyTrackResult x
   * @property {number|null} [y] ResNotifyTrackResult y
   * @property {number|null} [w] ResNotifyTrackResult w
   * @property {number|null} [h] ResNotifyTrackResult h
   */

  /**
   * Constructs a new ResNotifyTrackResult.
   * @exports ResNotifyTrackResult
   * @classdesc Represents a ResNotifyTrackResult.
   * @implements IResNotifyTrackResult
   * @constructor
   * @param {IResNotifyTrackResult=} [properties] Properties to set
   */
  function ResNotifyTrackResult(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyTrackResult x.
   * @member {number} x
   * @memberof ResNotifyTrackResult
   * @instance
   */
  ResNotifyTrackResult.prototype.x = 0;

  /**
   * ResNotifyTrackResult y.
   * @member {number} y
   * @memberof ResNotifyTrackResult
   * @instance
   */
  ResNotifyTrackResult.prototype.y = 0;

  /**
   * ResNotifyTrackResult w.
   * @member {number} w
   * @memberof ResNotifyTrackResult
   * @instance
   */
  ResNotifyTrackResult.prototype.w = 0;

  /**
   * ResNotifyTrackResult h.
   * @member {number} h
   * @memberof ResNotifyTrackResult
   * @instance
   */
  ResNotifyTrackResult.prototype.h = 0;

  /**
   * Creates a new ResNotifyTrackResult instance using the specified properties.
   * @function create
   * @memberof ResNotifyTrackResult
   * @static
   * @param {IResNotifyTrackResult=} [properties] Properties to set
   * @returns {ResNotifyTrackResult} ResNotifyTrackResult instance
   */
  ResNotifyTrackResult.create = function create(properties) {
    return new ResNotifyTrackResult(properties);
  };

  /**
   * Encodes the specified ResNotifyTrackResult message. Does not implicitly {@link ResNotifyTrackResult.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyTrackResult
   * @static
   * @param {IResNotifyTrackResult} message ResNotifyTrackResult message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyTrackResult.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.x != null && Object.hasOwnProperty.call(message, "x"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.x);
    if (message.y != null && Object.hasOwnProperty.call(message, "y"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.y);
    if (message.w != null && Object.hasOwnProperty.call(message, "w"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.w);
    if (message.h != null && Object.hasOwnProperty.call(message, "h"))
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.h);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyTrackResult message, length delimited. Does not implicitly {@link ResNotifyTrackResult.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyTrackResult
   * @static
   * @param {IResNotifyTrackResult} message ResNotifyTrackResult message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyTrackResult.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyTrackResult message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyTrackResult
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyTrackResult} ResNotifyTrackResult
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyTrackResult.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyTrackResult();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.x = reader.int32();
          break;
        }
        case 2: {
          message.y = reader.int32();
          break;
        }
        case 3: {
          message.w = reader.int32();
          break;
        }
        case 4: {
          message.h = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyTrackResult message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyTrackResult
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyTrackResult} ResNotifyTrackResult
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyTrackResult.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyTrackResult message.
   * @function verify
   * @memberof ResNotifyTrackResult
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyTrackResult.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.x != null && message.hasOwnProperty("x"))
      if (!$util.isInteger(message.x)) return "x: integer expected";
    if (message.y != null && message.hasOwnProperty("y"))
      if (!$util.isInteger(message.y)) return "y: integer expected";
    if (message.w != null && message.hasOwnProperty("w"))
      if (!$util.isInteger(message.w)) return "w: integer expected";
    if (message.h != null && message.hasOwnProperty("h"))
      if (!$util.isInteger(message.h)) return "h: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyTrackResult message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyTrackResult
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyTrackResult} ResNotifyTrackResult
   */
  ResNotifyTrackResult.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyTrackResult) return object;
    var message = new $root.ResNotifyTrackResult();
    if (object.x != null) message.x = object.x | 0;
    if (object.y != null) message.y = object.y | 0;
    if (object.w != null) message.w = object.w | 0;
    if (object.h != null) message.h = object.h | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyTrackResult message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyTrackResult
   * @static
   * @param {ResNotifyTrackResult} message ResNotifyTrackResult
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyTrackResult.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.x = 0;
      object.y = 0;
      object.w = 0;
      object.h = 0;
    }
    if (message.x != null && message.hasOwnProperty("x")) object.x = message.x;
    if (message.y != null && message.hasOwnProperty("y")) object.y = message.y;
    if (message.w != null && message.hasOwnProperty("w")) object.w = message.w;
    if (message.h != null && message.hasOwnProperty("h")) object.h = message.h;
    return object;
  };

  /**
   * Converts this ResNotifyTrackResult to JSON.
   * @function toJSON
   * @memberof ResNotifyTrackResult
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyTrackResult.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyTrackResult
   * @function getTypeUrl
   * @memberof ResNotifyTrackResult
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyTrackResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyTrackResult";
  };

  return ResNotifyTrackResult;
})();

$root.ResNotifyCPUMode = (function () {
  /**
   * Properties of a ResNotifyCPUMode.
   * @exports IResNotifyCPUMode
   * @interface IResNotifyCPUMode
   * @property {number|null} [mode] ResNotifyCPUMode mode
   */

  /**
   * Constructs a new ResNotifyCPUMode.
   * @exports ResNotifyCPUMode
   * @classdesc Represents a ResNotifyCPUMode.
   * @implements IResNotifyCPUMode
   * @constructor
   * @param {IResNotifyCPUMode=} [properties] Properties to set
   */
  function ResNotifyCPUMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyCPUMode mode.
   * @member {number} mode
   * @memberof ResNotifyCPUMode
   * @instance
   */
  ResNotifyCPUMode.prototype.mode = 0;

  /**
   * Creates a new ResNotifyCPUMode instance using the specified properties.
   * @function create
   * @memberof ResNotifyCPUMode
   * @static
   * @param {IResNotifyCPUMode=} [properties] Properties to set
   * @returns {ResNotifyCPUMode} ResNotifyCPUMode instance
   */
  ResNotifyCPUMode.create = function create(properties) {
    return new ResNotifyCPUMode(properties);
  };

  /**
   * Encodes the specified ResNotifyCPUMode message. Does not implicitly {@link ResNotifyCPUMode.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyCPUMode
   * @static
   * @param {IResNotifyCPUMode} message ResNotifyCPUMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyCPUMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyCPUMode message, length delimited. Does not implicitly {@link ResNotifyCPUMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyCPUMode
   * @static
   * @param {IResNotifyCPUMode} message ResNotifyCPUMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyCPUMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyCPUMode message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyCPUMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyCPUMode} ResNotifyCPUMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyCPUMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyCPUMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyCPUMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyCPUMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyCPUMode} ResNotifyCPUMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyCPUMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyCPUMode message.
   * @function verify
   * @memberof ResNotifyCPUMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyCPUMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyCPUMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyCPUMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyCPUMode} ResNotifyCPUMode
   */
  ResNotifyCPUMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyCPUMode) return object;
    var message = new $root.ResNotifyCPUMode();
    if (object.mode != null) message.mode = object.mode | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyCPUMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyCPUMode
   * @static
   * @param {ResNotifyCPUMode} message ResNotifyCPUMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyCPUMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ResNotifyCPUMode to JSON.
   * @function toJSON
   * @memberof ResNotifyCPUMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyCPUMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyCPUMode
   * @function getTypeUrl
   * @memberof ResNotifyCPUMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyCPUMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyCPUMode";
  };

  return ResNotifyCPUMode;
})();

$root.ResNotifyStateAstroTrackingSpecial = (function () {
  /**
   * Properties of a ResNotifyStateAstroTrackingSpecial.
   * @exports IResNotifyStateAstroTrackingSpecial
   * @interface IResNotifyStateAstroTrackingSpecial
   * @property {OperationState|null} [state] ResNotifyStateAstroTrackingSpecial state
   * @property {string|null} [targetName] ResNotifyStateAstroTrackingSpecial targetName
   * @property {number|null} [index] ResNotifyStateAstroTrackingSpecial index
   */

  /**
   * Constructs a new ResNotifyStateAstroTrackingSpecial.
   * @exports ResNotifyStateAstroTrackingSpecial
   * @classdesc Represents a ResNotifyStateAstroTrackingSpecial.
   * @implements IResNotifyStateAstroTrackingSpecial
   * @constructor
   * @param {IResNotifyStateAstroTrackingSpecial=} [properties] Properties to set
   */
  function ResNotifyStateAstroTrackingSpecial(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyStateAstroTrackingSpecial state.
   * @member {OperationState} state
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @instance
   */
  ResNotifyStateAstroTrackingSpecial.prototype.state = 0;

  /**
   * ResNotifyStateAstroTrackingSpecial targetName.
   * @member {string} targetName
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @instance
   */
  ResNotifyStateAstroTrackingSpecial.prototype.targetName = "";

  /**
   * ResNotifyStateAstroTrackingSpecial index.
   * @member {number} index
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @instance
   */
  ResNotifyStateAstroTrackingSpecial.prototype.index = 0;

  /**
   * Creates a new ResNotifyStateAstroTrackingSpecial instance using the specified properties.
   * @function create
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {IResNotifyStateAstroTrackingSpecial=} [properties] Properties to set
   * @returns {ResNotifyStateAstroTrackingSpecial} ResNotifyStateAstroTrackingSpecial instance
   */
  ResNotifyStateAstroTrackingSpecial.create = function create(properties) {
    return new ResNotifyStateAstroTrackingSpecial(properties);
  };

  /**
   * Encodes the specified ResNotifyStateAstroTrackingSpecial message. Does not implicitly {@link ResNotifyStateAstroTrackingSpecial.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {IResNotifyStateAstroTrackingSpecial} message ResNotifyStateAstroTrackingSpecial message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateAstroTrackingSpecial.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    if (
      message.targetName != null &&
      Object.hasOwnProperty.call(message, "targetName")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.targetName);
    if (message.index != null && Object.hasOwnProperty.call(message, "index"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.index);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyStateAstroTrackingSpecial message, length delimited. Does not implicitly {@link ResNotifyStateAstroTrackingSpecial.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {IResNotifyStateAstroTrackingSpecial} message ResNotifyStateAstroTrackingSpecial message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateAstroTrackingSpecial.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyStateAstroTrackingSpecial message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyStateAstroTrackingSpecial} ResNotifyStateAstroTrackingSpecial
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateAstroTrackingSpecial.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyStateAstroTrackingSpecial();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        case 2: {
          message.targetName = reader.string();
          break;
        }
        case 3: {
          message.index = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyStateAstroTrackingSpecial message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyStateAstroTrackingSpecial} ResNotifyStateAstroTrackingSpecial
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateAstroTrackingSpecial.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyStateAstroTrackingSpecial message.
   * @function verify
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyStateAstroTrackingSpecial.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
          break;
      }
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      if (!$util.isString(message.targetName))
        return "targetName: string expected";
    if (message.index != null && message.hasOwnProperty("index"))
      if (!$util.isInteger(message.index)) return "index: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyStateAstroTrackingSpecial message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyStateAstroTrackingSpecial} ResNotifyStateAstroTrackingSpecial
   */
  ResNotifyStateAstroTrackingSpecial.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyStateAstroTrackingSpecial)
      return object;
    var message = new $root.ResNotifyStateAstroTrackingSpecial();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "OPERATION_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "OPERATION_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "OPERATION_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "OPERATION_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
    }
    if (object.targetName != null)
      message.targetName = String(object.targetName);
    if (object.index != null) message.index = object.index | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyStateAstroTrackingSpecial message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {ResNotifyStateAstroTrackingSpecial} message ResNotifyStateAstroTrackingSpecial
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyStateAstroTrackingSpecial.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.state = options.enums === String ? "OPERATION_STATE_IDLE" : 0;
      object.targetName = "";
      object.index = 0;
    }
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.OperationState[message.state] === undefined
            ? message.state
            : $root.OperationState[message.state]
          : message.state;
    if (message.targetName != null && message.hasOwnProperty("targetName"))
      object.targetName = message.targetName;
    if (message.index != null && message.hasOwnProperty("index"))
      object.index = message.index;
    return object;
  };

  /**
   * Converts this ResNotifyStateAstroTrackingSpecial to JSON.
   * @function toJSON
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyStateAstroTrackingSpecial.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyStateAstroTrackingSpecial
   * @function getTypeUrl
   * @memberof ResNotifyStateAstroTrackingSpecial
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyStateAstroTrackingSpecial.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyStateAstroTrackingSpecial";
  };

  return ResNotifyStateAstroTrackingSpecial;
})();

$root.ResNotifyPowerOff = (function () {
  /**
   * Properties of a ResNotifyPowerOff.
   * @exports IResNotifyPowerOff
   * @interface IResNotifyPowerOff
   */

  /**
   * Constructs a new ResNotifyPowerOff.
   * @exports ResNotifyPowerOff
   * @classdesc Represents a ResNotifyPowerOff.
   * @implements IResNotifyPowerOff
   * @constructor
   * @param {IResNotifyPowerOff=} [properties] Properties to set
   */
  function ResNotifyPowerOff(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ResNotifyPowerOff instance using the specified properties.
   * @function create
   * @memberof ResNotifyPowerOff
   * @static
   * @param {IResNotifyPowerOff=} [properties] Properties to set
   * @returns {ResNotifyPowerOff} ResNotifyPowerOff instance
   */
  ResNotifyPowerOff.create = function create(properties) {
    return new ResNotifyPowerOff(properties);
  };

  /**
   * Encodes the specified ResNotifyPowerOff message. Does not implicitly {@link ResNotifyPowerOff.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyPowerOff
   * @static
   * @param {IResNotifyPowerOff} message ResNotifyPowerOff message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPowerOff.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ResNotifyPowerOff message, length delimited. Does not implicitly {@link ResNotifyPowerOff.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyPowerOff
   * @static
   * @param {IResNotifyPowerOff} message ResNotifyPowerOff message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPowerOff.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyPowerOff message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyPowerOff
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyPowerOff} ResNotifyPowerOff
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPowerOff.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyPowerOff();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyPowerOff message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyPowerOff
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyPowerOff} ResNotifyPowerOff
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPowerOff.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyPowerOff message.
   * @function verify
   * @memberof ResNotifyPowerOff
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyPowerOff.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ResNotifyPowerOff message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyPowerOff
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyPowerOff} ResNotifyPowerOff
   */
  ResNotifyPowerOff.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyPowerOff) return object;
    return new $root.ResNotifyPowerOff();
  };

  /**
   * Creates a plain object from a ResNotifyPowerOff message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyPowerOff
   * @static
   * @param {ResNotifyPowerOff} message ResNotifyPowerOff
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyPowerOff.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ResNotifyPowerOff to JSON.
   * @function toJSON
   * @memberof ResNotifyPowerOff
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyPowerOff.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyPowerOff
   * @function getTypeUrl
   * @memberof ResNotifyPowerOff
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyPowerOff.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyPowerOff";
  };

  return ResNotifyPowerOff;
})();

$root.ResNotifyAlbumUpdate = (function () {
  /**
   * Properties of a ResNotifyAlbumUpdate.
   * @exports IResNotifyAlbumUpdate
   * @interface IResNotifyAlbumUpdate
   * @property {number|null} [mediaType] ResNotifyAlbumUpdate mediaType
   */

  /**
   * Constructs a new ResNotifyAlbumUpdate.
   * @exports ResNotifyAlbumUpdate
   * @classdesc Represents a ResNotifyAlbumUpdate.
   * @implements IResNotifyAlbumUpdate
   * @constructor
   * @param {IResNotifyAlbumUpdate=} [properties] Properties to set
   */
  function ResNotifyAlbumUpdate(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyAlbumUpdate mediaType.
   * @member {number} mediaType
   * @memberof ResNotifyAlbumUpdate
   * @instance
   */
  ResNotifyAlbumUpdate.prototype.mediaType = 0;

  /**
   * Creates a new ResNotifyAlbumUpdate instance using the specified properties.
   * @function create
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {IResNotifyAlbumUpdate=} [properties] Properties to set
   * @returns {ResNotifyAlbumUpdate} ResNotifyAlbumUpdate instance
   */
  ResNotifyAlbumUpdate.create = function create(properties) {
    return new ResNotifyAlbumUpdate(properties);
  };

  /**
   * Encodes the specified ResNotifyAlbumUpdate message. Does not implicitly {@link ResNotifyAlbumUpdate.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {IResNotifyAlbumUpdate} message ResNotifyAlbumUpdate message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyAlbumUpdate.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.mediaType != null &&
      Object.hasOwnProperty.call(message, "mediaType")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mediaType);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyAlbumUpdate message, length delimited. Does not implicitly {@link ResNotifyAlbumUpdate.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {IResNotifyAlbumUpdate} message ResNotifyAlbumUpdate message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyAlbumUpdate.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyAlbumUpdate message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyAlbumUpdate} ResNotifyAlbumUpdate
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyAlbumUpdate.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyAlbumUpdate();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mediaType = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyAlbumUpdate message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyAlbumUpdate} ResNotifyAlbumUpdate
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyAlbumUpdate.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyAlbumUpdate message.
   * @function verify
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyAlbumUpdate.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mediaType != null && message.hasOwnProperty("mediaType"))
      if (!$util.isInteger(message.mediaType))
        return "mediaType: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyAlbumUpdate message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyAlbumUpdate} ResNotifyAlbumUpdate
   */
  ResNotifyAlbumUpdate.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyAlbumUpdate) return object;
    var message = new $root.ResNotifyAlbumUpdate();
    if (object.mediaType != null) message.mediaType = object.mediaType | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyAlbumUpdate message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {ResNotifyAlbumUpdate} message ResNotifyAlbumUpdate
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyAlbumUpdate.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mediaType = 0;
    if (message.mediaType != null && message.hasOwnProperty("mediaType"))
      object.mediaType = message.mediaType;
    return object;
  };

  /**
   * Converts this ResNotifyAlbumUpdate to JSON.
   * @function toJSON
   * @memberof ResNotifyAlbumUpdate
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyAlbumUpdate.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyAlbumUpdate
   * @function getTypeUrl
   * @memberof ResNotifyAlbumUpdate
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyAlbumUpdate.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyAlbumUpdate";
  };

  return ResNotifyAlbumUpdate;
})();

$root.ResNotifyStateSentryMode = (function () {
  /**
   * Properties of a ResNotifyStateSentryMode.
   * @exports IResNotifyStateSentryMode
   * @interface IResNotifyStateSentryMode
   * @property {SentryModeState|null} [state] ResNotifyStateSentryMode state
   */

  /**
   * Constructs a new ResNotifyStateSentryMode.
   * @exports ResNotifyStateSentryMode
   * @classdesc Represents a ResNotifyStateSentryMode.
   * @implements IResNotifyStateSentryMode
   * @constructor
   * @param {IResNotifyStateSentryMode=} [properties] Properties to set
   */
  function ResNotifyStateSentryMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyStateSentryMode state.
   * @member {SentryModeState} state
   * @memberof ResNotifyStateSentryMode
   * @instance
   */
  ResNotifyStateSentryMode.prototype.state = 0;

  /**
   * Creates a new ResNotifyStateSentryMode instance using the specified properties.
   * @function create
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {IResNotifyStateSentryMode=} [properties] Properties to set
   * @returns {ResNotifyStateSentryMode} ResNotifyStateSentryMode instance
   */
  ResNotifyStateSentryMode.create = function create(properties) {
    return new ResNotifyStateSentryMode(properties);
  };

  /**
   * Encodes the specified ResNotifyStateSentryMode message. Does not implicitly {@link ResNotifyStateSentryMode.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {IResNotifyStateSentryMode} message ResNotifyStateSentryMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateSentryMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyStateSentryMode message, length delimited. Does not implicitly {@link ResNotifyStateSentryMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {IResNotifyStateSentryMode} message ResNotifyStateSentryMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStateSentryMode.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyStateSentryMode message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyStateSentryMode} ResNotifyStateSentryMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateSentryMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyStateSentryMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyStateSentryMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyStateSentryMode} ResNotifyStateSentryMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStateSentryMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyStateSentryMode message.
   * @function verify
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyStateSentryMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
          break;
      }
    return null;
  };

  /**
   * Creates a ResNotifyStateSentryMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyStateSentryMode} ResNotifyStateSentryMode
   */
  ResNotifyStateSentryMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyStateSentryMode) return object;
    var message = new $root.ResNotifyStateSentryMode();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "SENTRY_MODE_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "SENTRY_MODE_STATE_INIT":
      case 1:
        message.state = 1;
        break;
      case "SENTRY_MODE_STATE_DETECT":
      case 2:
        message.state = 2;
        break;
      case "SENTRY_MODE_STATE_TRACK":
      case 3:
        message.state = 3;
        break;
      case "SENTRY_MODE_STATE_TRACK_FINISH":
      case 4:
        message.state = 4;
        break;
      case "SENTRY_MODE_STATE_STOPPING":
      case 5:
        message.state = 5;
        break;
    }
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyStateSentryMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {ResNotifyStateSentryMode} message ResNotifyStateSentryMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyStateSentryMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults)
      object.state = options.enums === String ? "SENTRY_MODE_STATE_IDLE" : 0;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.SentryModeState[message.state] === undefined
            ? message.state
            : $root.SentryModeState[message.state]
          : message.state;
    return object;
  };

  /**
   * Converts this ResNotifyStateSentryMode to JSON.
   * @function toJSON
   * @memberof ResNotifyStateSentryMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyStateSentryMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyStateSentryMode
   * @function getTypeUrl
   * @memberof ResNotifyStateSentryMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyStateSentryMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyStateSentryMode";
  };

  return ResNotifyStateSentryMode;
})();

$root.ResNotifyOneClickGotoState = (function () {
  /**
   * Properties of a ResNotifyOneClickGotoState.
   * @exports IResNotifyOneClickGotoState
   * @interface IResNotifyOneClickGotoState
   * @property {OperationState|null} [state] ResNotifyOneClickGotoState state
   */

  /**
   * Constructs a new ResNotifyOneClickGotoState.
   * @exports ResNotifyOneClickGotoState
   * @classdesc Represents a ResNotifyOneClickGotoState.
   * @implements IResNotifyOneClickGotoState
   * @constructor
   * @param {IResNotifyOneClickGotoState=} [properties] Properties to set
   */
  function ResNotifyOneClickGotoState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyOneClickGotoState state.
   * @member {OperationState} state
   * @memberof ResNotifyOneClickGotoState
   * @instance
   */
  ResNotifyOneClickGotoState.prototype.state = 0;

  /**
   * Creates a new ResNotifyOneClickGotoState instance using the specified properties.
   * @function create
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {IResNotifyOneClickGotoState=} [properties] Properties to set
   * @returns {ResNotifyOneClickGotoState} ResNotifyOneClickGotoState instance
   */
  ResNotifyOneClickGotoState.create = function create(properties) {
    return new ResNotifyOneClickGotoState(properties);
  };

  /**
   * Encodes the specified ResNotifyOneClickGotoState message. Does not implicitly {@link ResNotifyOneClickGotoState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {IResNotifyOneClickGotoState} message ResNotifyOneClickGotoState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyOneClickGotoState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyOneClickGotoState message, length delimited. Does not implicitly {@link ResNotifyOneClickGotoState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {IResNotifyOneClickGotoState} message ResNotifyOneClickGotoState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyOneClickGotoState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyOneClickGotoState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyOneClickGotoState} ResNotifyOneClickGotoState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyOneClickGotoState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyOneClickGotoState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyOneClickGotoState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyOneClickGotoState} ResNotifyOneClickGotoState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyOneClickGotoState.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyOneClickGotoState message.
   * @function verify
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyOneClickGotoState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
          break;
      }
    return null;
  };

  /**
   * Creates a ResNotifyOneClickGotoState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyOneClickGotoState} ResNotifyOneClickGotoState
   */
  ResNotifyOneClickGotoState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyOneClickGotoState) return object;
    var message = new $root.ResNotifyOneClickGotoState();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "OPERATION_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "OPERATION_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "OPERATION_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "OPERATION_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
    }
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyOneClickGotoState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {ResNotifyOneClickGotoState} message ResNotifyOneClickGotoState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyOneClickGotoState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults)
      object.state = options.enums === String ? "OPERATION_STATE_IDLE" : 0;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.OperationState[message.state] === undefined
            ? message.state
            : $root.OperationState[message.state]
          : message.state;
    return object;
  };

  /**
   * Converts this ResNotifyOneClickGotoState to JSON.
   * @function toJSON
   * @memberof ResNotifyOneClickGotoState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyOneClickGotoState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyOneClickGotoState
   * @function getTypeUrl
   * @memberof ResNotifyOneClickGotoState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyOneClickGotoState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyOneClickGotoState";
  };

  return ResNotifyOneClickGotoState;
})();

$root.ResNotifyStreamType = (function () {
  /**
   * Properties of a ResNotifyStreamType.
   * @exports IResNotifyStreamType
   * @interface IResNotifyStreamType
   * @property {number|null} [streamType] ResNotifyStreamType streamType
   * @property {number|null} [camId] ResNotifyStreamType camId
   */

  /**
   * Constructs a new ResNotifyStreamType.
   * @exports ResNotifyStreamType
   * @classdesc Represents a ResNotifyStreamType.
   * @implements IResNotifyStreamType
   * @constructor
   * @param {IResNotifyStreamType=} [properties] Properties to set
   */
  function ResNotifyStreamType(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyStreamType streamType.
   * @member {number} streamType
   * @memberof ResNotifyStreamType
   * @instance
   */
  ResNotifyStreamType.prototype.streamType = 0;

  /**
   * ResNotifyStreamType camId.
   * @member {number} camId
   * @memberof ResNotifyStreamType
   * @instance
   */
  ResNotifyStreamType.prototype.camId = 0;

  /**
   * Creates a new ResNotifyStreamType instance using the specified properties.
   * @function create
   * @memberof ResNotifyStreamType
   * @static
   * @param {IResNotifyStreamType=} [properties] Properties to set
   * @returns {ResNotifyStreamType} ResNotifyStreamType instance
   */
  ResNotifyStreamType.create = function create(properties) {
    return new ResNotifyStreamType(properties);
  };

  /**
   * Encodes the specified ResNotifyStreamType message. Does not implicitly {@link ResNotifyStreamType.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyStreamType
   * @static
   * @param {IResNotifyStreamType} message ResNotifyStreamType message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStreamType.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.streamType != null &&
      Object.hasOwnProperty.call(message, "streamType")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.streamType);
    if (message.camId != null && Object.hasOwnProperty.call(message, "camId"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.camId);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyStreamType message, length delimited. Does not implicitly {@link ResNotifyStreamType.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyStreamType
   * @static
   * @param {IResNotifyStreamType} message ResNotifyStreamType message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyStreamType.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyStreamType message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyStreamType
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyStreamType} ResNotifyStreamType
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStreamType.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyStreamType();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.streamType = reader.int32();
          break;
        }
        case 2: {
          message.camId = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyStreamType message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyStreamType
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyStreamType} ResNotifyStreamType
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyStreamType.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyStreamType message.
   * @function verify
   * @memberof ResNotifyStreamType
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyStreamType.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.streamType != null && message.hasOwnProperty("streamType"))
      if (!$util.isInteger(message.streamType))
        return "streamType: integer expected";
    if (message.camId != null && message.hasOwnProperty("camId"))
      if (!$util.isInteger(message.camId)) return "camId: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyStreamType message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyStreamType
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyStreamType} ResNotifyStreamType
   */
  ResNotifyStreamType.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyStreamType) return object;
    var message = new $root.ResNotifyStreamType();
    if (object.streamType != null) message.streamType = object.streamType | 0;
    if (object.camId != null) message.camId = object.camId | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyStreamType message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyStreamType
   * @static
   * @param {ResNotifyStreamType} message ResNotifyStreamType
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyStreamType.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.streamType = 0;
      object.camId = 0;
    }
    if (message.streamType != null && message.hasOwnProperty("streamType"))
      object.streamType = message.streamType;
    if (message.camId != null && message.hasOwnProperty("camId"))
      object.camId = message.camId;
    return object;
  };

  /**
   * Converts this ResNotifyStreamType to JSON.
   * @function toJSON
   * @memberof ResNotifyStreamType
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyStreamType.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyStreamType
   * @function getTypeUrl
   * @memberof ResNotifyStreamType
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyStreamType.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyStreamType";
  };

  return ResNotifyStreamType;
})();

$root.ResNotifyEqSolvingState = (function () {
  /**
   * Properties of a ResNotifyEqSolvingState.
   * @exports IResNotifyEqSolvingState
   * @interface IResNotifyEqSolvingState
   * @property {ResNotifyEqSolvingState.Action|null} [step] ResNotifyEqSolvingState step
   * @property {OperationState|null} [state] ResNotifyEqSolvingState state
   */

  /**
   * Constructs a new ResNotifyEqSolvingState.
   * @exports ResNotifyEqSolvingState
   * @classdesc Represents a ResNotifyEqSolvingState.
   * @implements IResNotifyEqSolvingState
   * @constructor
   * @param {IResNotifyEqSolvingState=} [properties] Properties to set
   */
  function ResNotifyEqSolvingState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyEqSolvingState step.
   * @member {ResNotifyEqSolvingState.Action} step
   * @memberof ResNotifyEqSolvingState
   * @instance
   */
  ResNotifyEqSolvingState.prototype.step = 0;

  /**
   * ResNotifyEqSolvingState state.
   * @member {OperationState} state
   * @memberof ResNotifyEqSolvingState
   * @instance
   */
  ResNotifyEqSolvingState.prototype.state = 0;

  /**
   * Creates a new ResNotifyEqSolvingState instance using the specified properties.
   * @function create
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {IResNotifyEqSolvingState=} [properties] Properties to set
   * @returns {ResNotifyEqSolvingState} ResNotifyEqSolvingState instance
   */
  ResNotifyEqSolvingState.create = function create(properties) {
    return new ResNotifyEqSolvingState(properties);
  };

  /**
   * Encodes the specified ResNotifyEqSolvingState message. Does not implicitly {@link ResNotifyEqSolvingState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {IResNotifyEqSolvingState} message ResNotifyEqSolvingState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyEqSolvingState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.step != null && Object.hasOwnProperty.call(message, "step"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.step);
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyEqSolvingState message, length delimited. Does not implicitly {@link ResNotifyEqSolvingState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {IResNotifyEqSolvingState} message ResNotifyEqSolvingState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyEqSolvingState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyEqSolvingState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyEqSolvingState} ResNotifyEqSolvingState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyEqSolvingState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyEqSolvingState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.step = reader.int32();
          break;
        }
        case 2: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyEqSolvingState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyEqSolvingState} ResNotifyEqSolvingState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyEqSolvingState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyEqSolvingState message.
   * @function verify
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyEqSolvingState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.step != null && message.hasOwnProperty("step"))
      switch (message.step) {
        default:
          return "step: enum value expected";
        case 0:
        case 1:
        case 2:
          break;
      }
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
          break;
      }
    return null;
  };

  /**
   * Creates a ResNotifyEqSolvingState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyEqSolvingState} ResNotifyEqSolvingState
   */
  ResNotifyEqSolvingState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyEqSolvingState) return object;
    var message = new $root.ResNotifyEqSolvingState();
    switch (object.step) {
      default:
        if (typeof object.step === "number") {
          message.step = object.step;
          break;
        }
        break;
      case "UNSPECIFIED":
      case 0:
        message.step = 0;
        break;
      case "FOCUS":
      case 1:
        message.step = 1;
        break;
      case "SOLVING":
      case 2:
        message.step = 2;
        break;
    }
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "OPERATION_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "OPERATION_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "OPERATION_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "OPERATION_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
    }
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyEqSolvingState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {ResNotifyEqSolvingState} message ResNotifyEqSolvingState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyEqSolvingState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.step = options.enums === String ? "UNSPECIFIED" : 0;
      object.state = options.enums === String ? "OPERATION_STATE_IDLE" : 0;
    }
    if (message.step != null && message.hasOwnProperty("step"))
      object.step =
        options.enums === String
          ? $root.ResNotifyEqSolvingState.Action[message.step] === undefined
            ? message.step
            : $root.ResNotifyEqSolvingState.Action[message.step]
          : message.step;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.OperationState[message.state] === undefined
            ? message.state
            : $root.OperationState[message.state]
          : message.state;
    return object;
  };

  /**
   * Converts this ResNotifyEqSolvingState to JSON.
   * @function toJSON
   * @memberof ResNotifyEqSolvingState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyEqSolvingState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyEqSolvingState
   * @function getTypeUrl
   * @memberof ResNotifyEqSolvingState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyEqSolvingState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyEqSolvingState";
  };

  /**
   * Action enum.
   * @name ResNotifyEqSolvingState.Action
   * @enum {number}
   * @property {number} UNSPECIFIED=0 UNSPECIFIED value
   * @property {number} FOCUS=1 FOCUS value
   * @property {number} SOLVING=2 SOLVING value
   */
  ResNotifyEqSolvingState.Action = (function () {
    var valuesById = {},
      values = Object.create(valuesById);
    values[(valuesById[0] = "UNSPECIFIED")] = 0;
    values[(valuesById[1] = "FOCUS")] = 1;
    values[(valuesById[2] = "SOLVING")] = 2;
    return values;
  })();

  return ResNotifyEqSolvingState;
})();

$root.ResNotifyLongExpPhotoProgress = (function () {
  /**
   * Properties of a ResNotifyLongExpPhotoProgress.
   * @exports IResNotifyLongExpPhotoProgress
   * @interface IResNotifyLongExpPhotoProgress
   * @property {number|null} [functionId] ResNotifyLongExpPhotoProgress functionId
   * @property {number|null} [totalTime] ResNotifyLongExpPhotoProgress totalTime
   * @property {number|null} [exposuredTime] ResNotifyLongExpPhotoProgress exposuredTime
   */

  /**
   * Constructs a new ResNotifyLongExpPhotoProgress.
   * @exports ResNotifyLongExpPhotoProgress
   * @classdesc Represents a ResNotifyLongExpPhotoProgress.
   * @implements IResNotifyLongExpPhotoProgress
   * @constructor
   * @param {IResNotifyLongExpPhotoProgress=} [properties] Properties to set
   */
  function ResNotifyLongExpPhotoProgress(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyLongExpPhotoProgress functionId.
   * @member {number} functionId
   * @memberof ResNotifyLongExpPhotoProgress
   * @instance
   */
  ResNotifyLongExpPhotoProgress.prototype.functionId = 0;

  /**
   * ResNotifyLongExpPhotoProgress totalTime.
   * @member {number} totalTime
   * @memberof ResNotifyLongExpPhotoProgress
   * @instance
   */
  ResNotifyLongExpPhotoProgress.prototype.totalTime = 0;

  /**
   * ResNotifyLongExpPhotoProgress exposuredTime.
   * @member {number} exposuredTime
   * @memberof ResNotifyLongExpPhotoProgress
   * @instance
   */
  ResNotifyLongExpPhotoProgress.prototype.exposuredTime = 0;

  /**
   * Creates a new ResNotifyLongExpPhotoProgress instance using the specified properties.
   * @function create
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {IResNotifyLongExpPhotoProgress=} [properties] Properties to set
   * @returns {ResNotifyLongExpPhotoProgress} ResNotifyLongExpPhotoProgress instance
   */
  ResNotifyLongExpPhotoProgress.create = function create(properties) {
    return new ResNotifyLongExpPhotoProgress(properties);
  };

  /**
   * Encodes the specified ResNotifyLongExpPhotoProgress message. Does not implicitly {@link ResNotifyLongExpPhotoProgress.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {IResNotifyLongExpPhotoProgress} message ResNotifyLongExpPhotoProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyLongExpPhotoProgress.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.functionId != null &&
      Object.hasOwnProperty.call(message, "functionId")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint32(message.functionId);
    if (
      message.totalTime != null &&
      Object.hasOwnProperty.call(message, "totalTime")
    )
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.totalTime);
    if (
      message.exposuredTime != null &&
      Object.hasOwnProperty.call(message, "exposuredTime")
    )
      writer.uint32(/* id 3, wireType 1 =*/ 25).double(message.exposuredTime);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyLongExpPhotoProgress message, length delimited. Does not implicitly {@link ResNotifyLongExpPhotoProgress.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {IResNotifyLongExpPhotoProgress} message ResNotifyLongExpPhotoProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyLongExpPhotoProgress.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyLongExpPhotoProgress message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyLongExpPhotoProgress} ResNotifyLongExpPhotoProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyLongExpPhotoProgress.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyLongExpPhotoProgress();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.functionId = reader.uint32();
          break;
        }
        case 2: {
          message.totalTime = reader.double();
          break;
        }
        case 3: {
          message.exposuredTime = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyLongExpPhotoProgress message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyLongExpPhotoProgress} ResNotifyLongExpPhotoProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyLongExpPhotoProgress.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyLongExpPhotoProgress message.
   * @function verify
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyLongExpPhotoProgress.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.functionId != null && message.hasOwnProperty("functionId"))
      if (!$util.isInteger(message.functionId))
        return "functionId: integer expected";
    if (message.totalTime != null && message.hasOwnProperty("totalTime"))
      if (typeof message.totalTime !== "number")
        return "totalTime: number expected";
    if (
      message.exposuredTime != null &&
      message.hasOwnProperty("exposuredTime")
    )
      if (typeof message.exposuredTime !== "number")
        return "exposuredTime: number expected";
    return null;
  };

  /**
   * Creates a ResNotifyLongExpPhotoProgress message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyLongExpPhotoProgress} ResNotifyLongExpPhotoProgress
   */
  ResNotifyLongExpPhotoProgress.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyLongExpPhotoProgress) return object;
    var message = new $root.ResNotifyLongExpPhotoProgress();
    if (object.functionId != null) message.functionId = object.functionId >>> 0;
    if (object.totalTime != null) message.totalTime = Number(object.totalTime);
    if (object.exposuredTime != null)
      message.exposuredTime = Number(object.exposuredTime);
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyLongExpPhotoProgress message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {ResNotifyLongExpPhotoProgress} message ResNotifyLongExpPhotoProgress
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyLongExpPhotoProgress.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.functionId = 0;
      object.totalTime = 0;
      object.exposuredTime = 0;
    }
    if (message.functionId != null && message.hasOwnProperty("functionId"))
      object.functionId = message.functionId;
    if (message.totalTime != null && message.hasOwnProperty("totalTime"))
      object.totalTime =
        options.json && !isFinite(message.totalTime)
          ? String(message.totalTime)
          : message.totalTime;
    if (
      message.exposuredTime != null &&
      message.hasOwnProperty("exposuredTime")
    )
      object.exposuredTime =
        options.json && !isFinite(message.exposuredTime)
          ? String(message.exposuredTime)
          : message.exposuredTime;
    return object;
  };

  /**
   * Converts this ResNotifyLongExpPhotoProgress to JSON.
   * @function toJSON
   * @memberof ResNotifyLongExpPhotoProgress
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyLongExpPhotoProgress.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyLongExpPhotoProgress
   * @function getTypeUrl
   * @memberof ResNotifyLongExpPhotoProgress
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyLongExpPhotoProgress.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyLongExpPhotoProgress";
  };

  return ResNotifyLongExpPhotoProgress;
})();

$root.ResNotifyShootingScheduleResultAndState = (function () {
  /**
   * Properties of a ResNotifyShootingScheduleResultAndState.
   * @exports IResNotifyShootingScheduleResultAndState
   * @interface IResNotifyShootingScheduleResultAndState
   * @property {string|null} [scheduleId] ResNotifyShootingScheduleResultAndState scheduleId
   * @property {number|null} [result] ResNotifyShootingScheduleResultAndState result
   * @property {number|null} [state] ResNotifyShootingScheduleResultAndState state
   */

  /**
   * Constructs a new ResNotifyShootingScheduleResultAndState.
   * @exports ResNotifyShootingScheduleResultAndState
   * @classdesc Represents a ResNotifyShootingScheduleResultAndState.
   * @implements IResNotifyShootingScheduleResultAndState
   * @constructor
   * @param {IResNotifyShootingScheduleResultAndState=} [properties] Properties to set
   */
  function ResNotifyShootingScheduleResultAndState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyShootingScheduleResultAndState scheduleId.
   * @member {string} scheduleId
   * @memberof ResNotifyShootingScheduleResultAndState
   * @instance
   */
  ResNotifyShootingScheduleResultAndState.prototype.scheduleId = "";

  /**
   * ResNotifyShootingScheduleResultAndState result.
   * @member {number} result
   * @memberof ResNotifyShootingScheduleResultAndState
   * @instance
   */
  ResNotifyShootingScheduleResultAndState.prototype.result = 0;

  /**
   * ResNotifyShootingScheduleResultAndState state.
   * @member {number} state
   * @memberof ResNotifyShootingScheduleResultAndState
   * @instance
   */
  ResNotifyShootingScheduleResultAndState.prototype.state = 0;

  /**
   * Creates a new ResNotifyShootingScheduleResultAndState instance using the specified properties.
   * @function create
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {IResNotifyShootingScheduleResultAndState=} [properties] Properties to set
   * @returns {ResNotifyShootingScheduleResultAndState} ResNotifyShootingScheduleResultAndState instance
   */
  ResNotifyShootingScheduleResultAndState.create = function create(properties) {
    return new ResNotifyShootingScheduleResultAndState(properties);
  };

  /**
   * Encodes the specified ResNotifyShootingScheduleResultAndState message. Does not implicitly {@link ResNotifyShootingScheduleResultAndState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {IResNotifyShootingScheduleResultAndState} message ResNotifyShootingScheduleResultAndState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyShootingScheduleResultAndState.encode = function encode(
    message,
    writer
  ) {
    if (!writer) writer = $Writer.create();
    if (
      message.scheduleId != null &&
      Object.hasOwnProperty.call(message, "scheduleId")
    )
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.scheduleId);
    if (message.result != null && Object.hasOwnProperty.call(message, "result"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.result);
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyShootingScheduleResultAndState message, length delimited. Does not implicitly {@link ResNotifyShootingScheduleResultAndState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {IResNotifyShootingScheduleResultAndState} message ResNotifyShootingScheduleResultAndState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyShootingScheduleResultAndState.encodeDelimited =
    function encodeDelimited(message, writer) {
      return this.encode(message, writer).ldelim();
    };

  /**
   * Decodes a ResNotifyShootingScheduleResultAndState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyShootingScheduleResultAndState} ResNotifyShootingScheduleResultAndState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyShootingScheduleResultAndState.decode = function decode(
    reader,
    length
  ) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyShootingScheduleResultAndState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.scheduleId = reader.string();
          break;
        }
        case 2: {
          message.result = reader.int32();
          break;
        }
        case 3: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyShootingScheduleResultAndState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyShootingScheduleResultAndState} ResNotifyShootingScheduleResultAndState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyShootingScheduleResultAndState.decodeDelimited =
    function decodeDelimited(reader) {
      if (!(reader instanceof $Reader)) reader = new $Reader(reader);
      return this.decode(reader, reader.uint32());
    };

  /**
   * Verifies a ResNotifyShootingScheduleResultAndState message.
   * @function verify
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyShootingScheduleResultAndState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.scheduleId != null && message.hasOwnProperty("scheduleId"))
      if (!$util.isString(message.scheduleId))
        return "scheduleId: string expected";
    if (message.result != null && message.hasOwnProperty("result"))
      if (!$util.isInteger(message.result)) return "result: integer expected";
    if (message.state != null && message.hasOwnProperty("state"))
      if (!$util.isInteger(message.state)) return "state: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyShootingScheduleResultAndState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyShootingScheduleResultAndState} ResNotifyShootingScheduleResultAndState
   */
  ResNotifyShootingScheduleResultAndState.fromObject = function fromObject(
    object
  ) {
    if (object instanceof $root.ResNotifyShootingScheduleResultAndState)
      return object;
    var message = new $root.ResNotifyShootingScheduleResultAndState();
    if (object.scheduleId != null)
      message.scheduleId = String(object.scheduleId);
    if (object.result != null) message.result = object.result | 0;
    if (object.state != null) message.state = object.state | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyShootingScheduleResultAndState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {ResNotifyShootingScheduleResultAndState} message ResNotifyShootingScheduleResultAndState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyShootingScheduleResultAndState.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.scheduleId = "";
      object.result = 0;
      object.state = 0;
    }
    if (message.scheduleId != null && message.hasOwnProperty("scheduleId"))
      object.scheduleId = message.scheduleId;
    if (message.result != null && message.hasOwnProperty("result"))
      object.result = message.result;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state = message.state;
    return object;
  };

  /**
   * Converts this ResNotifyShootingScheduleResultAndState to JSON.
   * @function toJSON
   * @memberof ResNotifyShootingScheduleResultAndState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyShootingScheduleResultAndState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyShootingScheduleResultAndState
   * @function getTypeUrl
   * @memberof ResNotifyShootingScheduleResultAndState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyShootingScheduleResultAndState.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyShootingScheduleResultAndState";
  };

  return ResNotifyShootingScheduleResultAndState;
})();

$root.ResNotifyShootingTaskState = (function () {
  /**
   * Properties of a ResNotifyShootingTaskState.
   * @exports IResNotifyShootingTaskState
   * @interface IResNotifyShootingTaskState
   * @property {string|null} [scheduleTaskId] ResNotifyShootingTaskState scheduleTaskId
   * @property {number|null} [state] ResNotifyShootingTaskState state
   * @property {number|null} [code] ResNotifyShootingTaskState code
   */

  /**
   * Constructs a new ResNotifyShootingTaskState.
   * @exports ResNotifyShootingTaskState
   * @classdesc Represents a ResNotifyShootingTaskState.
   * @implements IResNotifyShootingTaskState
   * @constructor
   * @param {IResNotifyShootingTaskState=} [properties] Properties to set
   */
  function ResNotifyShootingTaskState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyShootingTaskState scheduleTaskId.
   * @member {string} scheduleTaskId
   * @memberof ResNotifyShootingTaskState
   * @instance
   */
  ResNotifyShootingTaskState.prototype.scheduleTaskId = "";

  /**
   * ResNotifyShootingTaskState state.
   * @member {number} state
   * @memberof ResNotifyShootingTaskState
   * @instance
   */
  ResNotifyShootingTaskState.prototype.state = 0;

  /**
   * ResNotifyShootingTaskState code.
   * @member {number} code
   * @memberof ResNotifyShootingTaskState
   * @instance
   */
  ResNotifyShootingTaskState.prototype.code = 0;

  /**
   * Creates a new ResNotifyShootingTaskState instance using the specified properties.
   * @function create
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {IResNotifyShootingTaskState=} [properties] Properties to set
   * @returns {ResNotifyShootingTaskState} ResNotifyShootingTaskState instance
   */
  ResNotifyShootingTaskState.create = function create(properties) {
    return new ResNotifyShootingTaskState(properties);
  };

  /**
   * Encodes the specified ResNotifyShootingTaskState message. Does not implicitly {@link ResNotifyShootingTaskState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {IResNotifyShootingTaskState} message ResNotifyShootingTaskState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyShootingTaskState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.scheduleTaskId != null &&
      Object.hasOwnProperty.call(message, "scheduleTaskId")
    )
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.scheduleTaskId);
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.state);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyShootingTaskState message, length delimited. Does not implicitly {@link ResNotifyShootingTaskState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {IResNotifyShootingTaskState} message ResNotifyShootingTaskState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyShootingTaskState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyShootingTaskState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyShootingTaskState} ResNotifyShootingTaskState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyShootingTaskState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyShootingTaskState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.scheduleTaskId = reader.string();
          break;
        }
        case 2: {
          message.state = reader.int32();
          break;
        }
        case 3: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyShootingTaskState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyShootingTaskState} ResNotifyShootingTaskState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyShootingTaskState.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyShootingTaskState message.
   * @function verify
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyShootingTaskState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.scheduleTaskId != null &&
      message.hasOwnProperty("scheduleTaskId")
    )
      if (!$util.isString(message.scheduleTaskId))
        return "scheduleTaskId: string expected";
    if (message.state != null && message.hasOwnProperty("state"))
      if (!$util.isInteger(message.state)) return "state: integer expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyShootingTaskState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyShootingTaskState} ResNotifyShootingTaskState
   */
  ResNotifyShootingTaskState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyShootingTaskState) return object;
    var message = new $root.ResNotifyShootingTaskState();
    if (object.scheduleTaskId != null)
      message.scheduleTaskId = String(object.scheduleTaskId);
    if (object.state != null) message.state = object.state | 0;
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyShootingTaskState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {ResNotifyShootingTaskState} message ResNotifyShootingTaskState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyShootingTaskState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.scheduleTaskId = "";
      object.state = 0;
      object.code = 0;
    }
    if (
      message.scheduleTaskId != null &&
      message.hasOwnProperty("scheduleTaskId")
    )
      object.scheduleTaskId = message.scheduleTaskId;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state = message.state;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResNotifyShootingTaskState to JSON.
   * @function toJSON
   * @memberof ResNotifyShootingTaskState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyShootingTaskState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyShootingTaskState
   * @function getTypeUrl
   * @memberof ResNotifyShootingTaskState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyShootingTaskState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyShootingTaskState";
  };

  return ResNotifyShootingTaskState;
})();

$root.ResNotifySkySeacherState = (function () {
  /**
   * Properties of a ResNotifySkySeacherState.
   * @exports IResNotifySkySeacherState
   * @interface IResNotifySkySeacherState
   * @property {OperationState|null} [state] ResNotifySkySeacherState state
   */

  /**
   * Constructs a new ResNotifySkySeacherState.
   * @exports ResNotifySkySeacherState
   * @classdesc Represents a ResNotifySkySeacherState.
   * @implements IResNotifySkySeacherState
   * @constructor
   * @param {IResNotifySkySeacherState=} [properties] Properties to set
   */
  function ResNotifySkySeacherState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifySkySeacherState state.
   * @member {OperationState} state
   * @memberof ResNotifySkySeacherState
   * @instance
   */
  ResNotifySkySeacherState.prototype.state = 0;

  /**
   * Creates a new ResNotifySkySeacherState instance using the specified properties.
   * @function create
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {IResNotifySkySeacherState=} [properties] Properties to set
   * @returns {ResNotifySkySeacherState} ResNotifySkySeacherState instance
   */
  ResNotifySkySeacherState.create = function create(properties) {
    return new ResNotifySkySeacherState(properties);
  };

  /**
   * Encodes the specified ResNotifySkySeacherState message. Does not implicitly {@link ResNotifySkySeacherState.verify|verify} messages.
   * @function encode
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {IResNotifySkySeacherState} message ResNotifySkySeacherState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifySkySeacherState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.state);
    return writer;
  };

  /**
   * Encodes the specified ResNotifySkySeacherState message, length delimited. Does not implicitly {@link ResNotifySkySeacherState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {IResNotifySkySeacherState} message ResNotifySkySeacherState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifySkySeacherState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifySkySeacherState message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifySkySeacherState} ResNotifySkySeacherState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifySkySeacherState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifySkySeacherState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.state = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifySkySeacherState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifySkySeacherState} ResNotifySkySeacherState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifySkySeacherState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifySkySeacherState message.
   * @function verify
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifySkySeacherState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
          break;
      }
    return null;
  };

  /**
   * Creates a ResNotifySkySeacherState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifySkySeacherState} ResNotifySkySeacherState
   */
  ResNotifySkySeacherState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifySkySeacherState) return object;
    var message = new $root.ResNotifySkySeacherState();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "OPERATION_STATE_IDLE":
      case 0:
        message.state = 0;
        break;
      case "OPERATION_STATE_RUNNING":
      case 1:
        message.state = 1;
        break;
      case "OPERATION_STATE_STOPPING":
      case 2:
        message.state = 2;
        break;
      case "OPERATION_STATE_STOPPED":
      case 3:
        message.state = 3;
        break;
    }
    return message;
  };

  /**
   * Creates a plain object from a ResNotifySkySeacherState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {ResNotifySkySeacherState} message ResNotifySkySeacherState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifySkySeacherState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults)
      object.state = options.enums === String ? "OPERATION_STATE_IDLE" : 0;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.OperationState[message.state] === undefined
            ? message.state
            : $root.OperationState[message.state]
          : message.state;
    return object;
  };

  /**
   * Converts this ResNotifySkySeacherState to JSON.
   * @function toJSON
   * @memberof ResNotifySkySeacherState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifySkySeacherState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifySkySeacherState
   * @function getTypeUrl
   * @memberof ResNotifySkySeacherState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifySkySeacherState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifySkySeacherState";
  };

  return ResNotifySkySeacherState;
})();

$root.ResNotifyFocus = (function () {
  /**
   * Properties of a ResNotifyFocus.
   * @exports IResNotifyFocus
   * @interface IResNotifyFocus
   * @property {number|null} [focus] ResNotifyFocus focus
   */

  /**
   * Constructs a new ResNotifyFocus.
   * @exports ResNotifyFocus
   * @classdesc Represents a ResNotifyFocus.
   * @implements IResNotifyFocus
   * @constructor
   * @param {IResNotifyFocus=} [properties] Properties to set
   */
  function ResNotifyFocus(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyFocus focus.
   * @member {number} focus
   * @memberof ResNotifyFocus
   * @instance
   */
  ResNotifyFocus.prototype.focus = 0;

  /**
   * Creates a new ResNotifyFocus instance using the specified properties.
   * @function create
   * @memberof ResNotifyFocus
   * @static
   * @param {IResNotifyFocus=} [properties] Properties to set
   * @returns {ResNotifyFocus} ResNotifyFocus instance
   */
  ResNotifyFocus.create = function create(properties) {
    return new ResNotifyFocus(properties);
  };

  /**
   * Encodes the specified ResNotifyFocus message. Does not implicitly {@link ResNotifyFocus.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyFocus
   * @static
   * @param {IResNotifyFocus} message ResNotifyFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyFocus.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.focus != null && Object.hasOwnProperty.call(message, "focus"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.focus);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyFocus message, length delimited. Does not implicitly {@link ResNotifyFocus.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyFocus
   * @static
   * @param {IResNotifyFocus} message ResNotifyFocus message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyFocus.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyFocus message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyFocus} ResNotifyFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyFocus.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyFocus();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.focus = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyFocus message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyFocus
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyFocus} ResNotifyFocus
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyFocus.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyFocus message.
   * @function verify
   * @memberof ResNotifyFocus
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyFocus.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.focus != null && message.hasOwnProperty("focus"))
      if (!$util.isInteger(message.focus)) return "focus: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyFocus message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyFocus
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyFocus} ResNotifyFocus
   */
  ResNotifyFocus.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyFocus) return object;
    var message = new $root.ResNotifyFocus();
    if (object.focus != null) message.focus = object.focus | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyFocus message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyFocus
   * @static
   * @param {ResNotifyFocus} message ResNotifyFocus
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyFocus.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.focus = 0;
    if (message.focus != null && message.hasOwnProperty("focus"))
      object.focus = message.focus;
    return object;
  };

  /**
   * Converts this ResNotifyFocus to JSON.
   * @function toJSON
   * @memberof ResNotifyFocus
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyFocus.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyFocus
   * @function getTypeUrl
   * @memberof ResNotifyFocus
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyFocus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyFocus";
  };

  return ResNotifyFocus;
})();

$root.ReqStartPanoramaByGrid = (function () {
  /**
   * Properties of a ReqStartPanoramaByGrid.
   * @exports IReqStartPanoramaByGrid
   * @interface IReqStartPanoramaByGrid
   */

  /**
   * Constructs a new ReqStartPanoramaByGrid.
   * @exports ReqStartPanoramaByGrid
   * @classdesc Represents a ReqStartPanoramaByGrid.
   * @implements IReqStartPanoramaByGrid
   * @constructor
   * @param {IReqStartPanoramaByGrid=} [properties] Properties to set
   */
  function ReqStartPanoramaByGrid(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStartPanoramaByGrid instance using the specified properties.
   * @function create
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {IReqStartPanoramaByGrid=} [properties] Properties to set
   * @returns {ReqStartPanoramaByGrid} ReqStartPanoramaByGrid instance
   */
  ReqStartPanoramaByGrid.create = function create(properties) {
    return new ReqStartPanoramaByGrid(properties);
  };

  /**
   * Encodes the specified ReqStartPanoramaByGrid message. Does not implicitly {@link ReqStartPanoramaByGrid.verify|verify} messages.
   * @function encode
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {IReqStartPanoramaByGrid} message ReqStartPanoramaByGrid message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartPanoramaByGrid.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStartPanoramaByGrid message, length delimited. Does not implicitly {@link ReqStartPanoramaByGrid.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {IReqStartPanoramaByGrid} message ReqStartPanoramaByGrid message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartPanoramaByGrid.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartPanoramaByGrid message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartPanoramaByGrid} ReqStartPanoramaByGrid
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartPanoramaByGrid.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartPanoramaByGrid();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartPanoramaByGrid message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartPanoramaByGrid} ReqStartPanoramaByGrid
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartPanoramaByGrid.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartPanoramaByGrid message.
   * @function verify
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartPanoramaByGrid.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStartPanoramaByGrid message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartPanoramaByGrid} ReqStartPanoramaByGrid
   */
  ReqStartPanoramaByGrid.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartPanoramaByGrid) return object;
    return new $root.ReqStartPanoramaByGrid();
  };

  /**
   * Creates a plain object from a ReqStartPanoramaByGrid message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {ReqStartPanoramaByGrid} message ReqStartPanoramaByGrid
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartPanoramaByGrid.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStartPanoramaByGrid to JSON.
   * @function toJSON
   * @memberof ReqStartPanoramaByGrid
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartPanoramaByGrid.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartPanoramaByGrid
   * @function getTypeUrl
   * @memberof ReqStartPanoramaByGrid
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartPanoramaByGrid.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartPanoramaByGrid";
  };

  return ReqStartPanoramaByGrid;
})();

$root.ReqStartPanoramaByEulerRange = (function () {
  /**
   * Properties of a ReqStartPanoramaByEulerRange.
   * @exports IReqStartPanoramaByEulerRange
   * @interface IReqStartPanoramaByEulerRange
   * @property {number|null} [yawRange] ReqStartPanoramaByEulerRange yawRange
   * @property {number|null} [pitchRange] ReqStartPanoramaByEulerRange pitchRange
   */

  /**
   * Constructs a new ReqStartPanoramaByEulerRange.
   * @exports ReqStartPanoramaByEulerRange
   * @classdesc Represents a ReqStartPanoramaByEulerRange.
   * @implements IReqStartPanoramaByEulerRange
   * @constructor
   * @param {IReqStartPanoramaByEulerRange=} [properties] Properties to set
   */
  function ReqStartPanoramaByEulerRange(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqStartPanoramaByEulerRange yawRange.
   * @member {number} yawRange
   * @memberof ReqStartPanoramaByEulerRange
   * @instance
   */
  ReqStartPanoramaByEulerRange.prototype.yawRange = 0;

  /**
   * ReqStartPanoramaByEulerRange pitchRange.
   * @member {number} pitchRange
   * @memberof ReqStartPanoramaByEulerRange
   * @instance
   */
  ReqStartPanoramaByEulerRange.prototype.pitchRange = 0;

  /**
   * Creates a new ReqStartPanoramaByEulerRange instance using the specified properties.
   * @function create
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {IReqStartPanoramaByEulerRange=} [properties] Properties to set
   * @returns {ReqStartPanoramaByEulerRange} ReqStartPanoramaByEulerRange instance
   */
  ReqStartPanoramaByEulerRange.create = function create(properties) {
    return new ReqStartPanoramaByEulerRange(properties);
  };

  /**
   * Encodes the specified ReqStartPanoramaByEulerRange message. Does not implicitly {@link ReqStartPanoramaByEulerRange.verify|verify} messages.
   * @function encode
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {IReqStartPanoramaByEulerRange} message ReqStartPanoramaByEulerRange message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartPanoramaByEulerRange.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.yawRange != null &&
      Object.hasOwnProperty.call(message, "yawRange")
    )
      writer.uint32(/* id 1, wireType 5 =*/ 13).float(message.yawRange);
    if (
      message.pitchRange != null &&
      Object.hasOwnProperty.call(message, "pitchRange")
    )
      writer.uint32(/* id 2, wireType 5 =*/ 21).float(message.pitchRange);
    return writer;
  };

  /**
   * Encodes the specified ReqStartPanoramaByEulerRange message, length delimited. Does not implicitly {@link ReqStartPanoramaByEulerRange.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {IReqStartPanoramaByEulerRange} message ReqStartPanoramaByEulerRange message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartPanoramaByEulerRange.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartPanoramaByEulerRange message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartPanoramaByEulerRange} ReqStartPanoramaByEulerRange
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartPanoramaByEulerRange.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartPanoramaByEulerRange();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.yawRange = reader.float();
          break;
        }
        case 2: {
          message.pitchRange = reader.float();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartPanoramaByEulerRange message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartPanoramaByEulerRange} ReqStartPanoramaByEulerRange
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartPanoramaByEulerRange.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartPanoramaByEulerRange message.
   * @function verify
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartPanoramaByEulerRange.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.yawRange != null && message.hasOwnProperty("yawRange"))
      if (typeof message.yawRange !== "number")
        return "yawRange: number expected";
    if (message.pitchRange != null && message.hasOwnProperty("pitchRange"))
      if (typeof message.pitchRange !== "number")
        return "pitchRange: number expected";
    return null;
  };

  /**
   * Creates a ReqStartPanoramaByEulerRange message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartPanoramaByEulerRange} ReqStartPanoramaByEulerRange
   */
  ReqStartPanoramaByEulerRange.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartPanoramaByEulerRange) return object;
    var message = new $root.ReqStartPanoramaByEulerRange();
    if (object.yawRange != null) message.yawRange = Number(object.yawRange);
    if (object.pitchRange != null)
      message.pitchRange = Number(object.pitchRange);
    return message;
  };

  /**
   * Creates a plain object from a ReqStartPanoramaByEulerRange message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {ReqStartPanoramaByEulerRange} message ReqStartPanoramaByEulerRange
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartPanoramaByEulerRange.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.yawRange = 0;
      object.pitchRange = 0;
    }
    if (message.yawRange != null && message.hasOwnProperty("yawRange"))
      object.yawRange =
        options.json && !isFinite(message.yawRange)
          ? String(message.yawRange)
          : message.yawRange;
    if (message.pitchRange != null && message.hasOwnProperty("pitchRange"))
      object.pitchRange =
        options.json && !isFinite(message.pitchRange)
          ? String(message.pitchRange)
          : message.pitchRange;
    return object;
  };

  /**
   * Converts this ReqStartPanoramaByEulerRange to JSON.
   * @function toJSON
   * @memberof ReqStartPanoramaByEulerRange
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartPanoramaByEulerRange.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartPanoramaByEulerRange
   * @function getTypeUrl
   * @memberof ReqStartPanoramaByEulerRange
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartPanoramaByEulerRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartPanoramaByEulerRange";
  };

  return ReqStartPanoramaByEulerRange;
})();

$root.ReqStartPanoramaStitchUpload = (function () {
  /**
   * Properties of a ReqStartPanoramaStitchUpload.
   * @exports IReqStartPanoramaStitchUpload
   * @interface IReqStartPanoramaStitchUpload
   * @property {string|null} [userId] ReqStartPanoramaStitchUpload userId
   * @property {string|null} [busiNo] ReqStartPanoramaStitchUpload busiNo
   * @property {number|null} [appPlatform] ReqStartPanoramaStitchUpload appPlatform
   * @property {string|null} [panoramaName] ReqStartPanoramaStitchUpload panoramaName
   * @property {string|null} [ak] ReqStartPanoramaStitchUpload ak
   * @property {string|null} [sk] ReqStartPanoramaStitchUpload sk
   * @property {string|null} [token] ReqStartPanoramaStitchUpload token
   */

  /**
   * Constructs a new ReqStartPanoramaStitchUpload.
   * @exports ReqStartPanoramaStitchUpload
   * @classdesc Represents a ReqStartPanoramaStitchUpload.
   * @implements IReqStartPanoramaStitchUpload
   * @constructor
   * @param {IReqStartPanoramaStitchUpload=} [properties] Properties to set
   */
  function ReqStartPanoramaStitchUpload(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqStartPanoramaStitchUpload userId.
   * @member {string} userId
   * @memberof ReqStartPanoramaStitchUpload
   * @instance
   */
  ReqStartPanoramaStitchUpload.prototype.userId = "";

  /**
   * ReqStartPanoramaStitchUpload busiNo.
   * @member {string} busiNo
   * @memberof ReqStartPanoramaStitchUpload
   * @instance
   */
  ReqStartPanoramaStitchUpload.prototype.busiNo = "";

  /**
   * ReqStartPanoramaStitchUpload appPlatform.
   * @member {number} appPlatform
   * @memberof ReqStartPanoramaStitchUpload
   * @instance
   */
  ReqStartPanoramaStitchUpload.prototype.appPlatform = 0;

  /**
   * ReqStartPanoramaStitchUpload panoramaName.
   * @member {string} panoramaName
   * @memberof ReqStartPanoramaStitchUpload
   * @instance
   */
  ReqStartPanoramaStitchUpload.prototype.panoramaName = "";

  /**
   * ReqStartPanoramaStitchUpload ak.
   * @member {string} ak
   * @memberof ReqStartPanoramaStitchUpload
   * @instance
   */
  ReqStartPanoramaStitchUpload.prototype.ak = "";

  /**
   * ReqStartPanoramaStitchUpload sk.
   * @member {string} sk
   * @memberof ReqStartPanoramaStitchUpload
   * @instance
   */
  ReqStartPanoramaStitchUpload.prototype.sk = "";

  /**
   * ReqStartPanoramaStitchUpload token.
   * @member {string} token
   * @memberof ReqStartPanoramaStitchUpload
   * @instance
   */
  ReqStartPanoramaStitchUpload.prototype.token = "";

  /**
   * Creates a new ReqStartPanoramaStitchUpload instance using the specified properties.
   * @function create
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {IReqStartPanoramaStitchUpload=} [properties] Properties to set
   * @returns {ReqStartPanoramaStitchUpload} ReqStartPanoramaStitchUpload instance
   */
  ReqStartPanoramaStitchUpload.create = function create(properties) {
    return new ReqStartPanoramaStitchUpload(properties);
  };

  /**
   * Encodes the specified ReqStartPanoramaStitchUpload message. Does not implicitly {@link ReqStartPanoramaStitchUpload.verify|verify} messages.
   * @function encode
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {IReqStartPanoramaStitchUpload} message ReqStartPanoramaStitchUpload message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartPanoramaStitchUpload.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.userId != null && Object.hasOwnProperty.call(message, "userId"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.userId);
    if (message.busiNo != null && Object.hasOwnProperty.call(message, "busiNo"))
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.busiNo);
    if (
      message.appPlatform != null &&
      Object.hasOwnProperty.call(message, "appPlatform")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.appPlatform);
    if (
      message.panoramaName != null &&
      Object.hasOwnProperty.call(message, "panoramaName")
    )
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.panoramaName);
    if (message.ak != null && Object.hasOwnProperty.call(message, "ak"))
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.ak);
    if (message.sk != null && Object.hasOwnProperty.call(message, "sk"))
      writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.sk);
    if (message.token != null && Object.hasOwnProperty.call(message, "token"))
      writer.uint32(/* id 7, wireType 2 =*/ 58).string(message.token);
    return writer;
  };

  /**
   * Encodes the specified ReqStartPanoramaStitchUpload message, length delimited. Does not implicitly {@link ReqStartPanoramaStitchUpload.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {IReqStartPanoramaStitchUpload} message ReqStartPanoramaStitchUpload message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartPanoramaStitchUpload.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartPanoramaStitchUpload message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartPanoramaStitchUpload} ReqStartPanoramaStitchUpload
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartPanoramaStitchUpload.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartPanoramaStitchUpload();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.userId = reader.string();
          break;
        }
        case 2: {
          message.busiNo = reader.string();
          break;
        }
        case 3: {
          message.appPlatform = reader.int32();
          break;
        }
        case 4: {
          message.panoramaName = reader.string();
          break;
        }
        case 5: {
          message.ak = reader.string();
          break;
        }
        case 6: {
          message.sk = reader.string();
          break;
        }
        case 7: {
          message.token = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartPanoramaStitchUpload message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartPanoramaStitchUpload} ReqStartPanoramaStitchUpload
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartPanoramaStitchUpload.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartPanoramaStitchUpload message.
   * @function verify
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartPanoramaStitchUpload.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.userId != null && message.hasOwnProperty("userId"))
      if (!$util.isString(message.userId)) return "userId: string expected";
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      if (!$util.isString(message.busiNo)) return "busiNo: string expected";
    if (message.appPlatform != null && message.hasOwnProperty("appPlatform"))
      if (!$util.isInteger(message.appPlatform))
        return "appPlatform: integer expected";
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      if (!$util.isString(message.panoramaName))
        return "panoramaName: string expected";
    if (message.ak != null && message.hasOwnProperty("ak"))
      if (!$util.isString(message.ak)) return "ak: string expected";
    if (message.sk != null && message.hasOwnProperty("sk"))
      if (!$util.isString(message.sk)) return "sk: string expected";
    if (message.token != null && message.hasOwnProperty("token"))
      if (!$util.isString(message.token)) return "token: string expected";
    return null;
  };

  /**
   * Creates a ReqStartPanoramaStitchUpload message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartPanoramaStitchUpload} ReqStartPanoramaStitchUpload
   */
  ReqStartPanoramaStitchUpload.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartPanoramaStitchUpload) return object;
    var message = new $root.ReqStartPanoramaStitchUpload();
    if (object.userId != null) message.userId = String(object.userId);
    if (object.busiNo != null) message.busiNo = String(object.busiNo);
    if (object.appPlatform != null)
      message.appPlatform = object.appPlatform | 0;
    if (object.panoramaName != null)
      message.panoramaName = String(object.panoramaName);
    if (object.ak != null) message.ak = String(object.ak);
    if (object.sk != null) message.sk = String(object.sk);
    if (object.token != null) message.token = String(object.token);
    return message;
  };

  /**
   * Creates a plain object from a ReqStartPanoramaStitchUpload message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {ReqStartPanoramaStitchUpload} message ReqStartPanoramaStitchUpload
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartPanoramaStitchUpload.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.userId = "";
      object.busiNo = "";
      object.appPlatform = 0;
      object.panoramaName = "";
      object.ak = "";
      object.sk = "";
      object.token = "";
    }
    if (message.userId != null && message.hasOwnProperty("userId"))
      object.userId = message.userId;
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      object.busiNo = message.busiNo;
    if (message.appPlatform != null && message.hasOwnProperty("appPlatform"))
      object.appPlatform = message.appPlatform;
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      object.panoramaName = message.panoramaName;
    if (message.ak != null && message.hasOwnProperty("ak"))
      object.ak = message.ak;
    if (message.sk != null && message.hasOwnProperty("sk"))
      object.sk = message.sk;
    if (message.token != null && message.hasOwnProperty("token"))
      object.token = message.token;
    return object;
  };

  /**
   * Converts this ReqStartPanoramaStitchUpload to JSON.
   * @function toJSON
   * @memberof ReqStartPanoramaStitchUpload
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartPanoramaStitchUpload.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartPanoramaStitchUpload
   * @function getTypeUrl
   * @memberof ReqStartPanoramaStitchUpload
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartPanoramaStitchUpload.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartPanoramaStitchUpload";
  };

  return ReqStartPanoramaStitchUpload;
})();

$root.ReqStopPanorama = (function () {
  /**
   * Properties of a ReqStopPanorama.
   * @exports IReqStopPanorama
   * @interface IReqStopPanorama
   */

  /**
   * Constructs a new ReqStopPanorama.
   * @exports ReqStopPanorama
   * @classdesc Represents a ReqStopPanorama.
   * @implements IReqStopPanorama
   * @constructor
   * @param {IReqStopPanorama=} [properties] Properties to set
   */
  function ReqStopPanorama(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopPanorama instance using the specified properties.
   * @function create
   * @memberof ReqStopPanorama
   * @static
   * @param {IReqStopPanorama=} [properties] Properties to set
   * @returns {ReqStopPanorama} ReqStopPanorama instance
   */
  ReqStopPanorama.create = function create(properties) {
    return new ReqStopPanorama(properties);
  };

  /**
   * Encodes the specified ReqStopPanorama message. Does not implicitly {@link ReqStopPanorama.verify|verify} messages.
   * @function encode
   * @memberof ReqStopPanorama
   * @static
   * @param {IReqStopPanorama} message ReqStopPanorama message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopPanorama.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopPanorama message, length delimited. Does not implicitly {@link ReqStopPanorama.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopPanorama
   * @static
   * @param {IReqStopPanorama} message ReqStopPanorama message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopPanorama.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopPanorama message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopPanorama
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopPanorama} ReqStopPanorama
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopPanorama.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopPanorama();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopPanorama message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopPanorama
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopPanorama} ReqStopPanorama
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopPanorama.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopPanorama message.
   * @function verify
   * @memberof ReqStopPanorama
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopPanorama.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopPanorama message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopPanorama
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopPanorama} ReqStopPanorama
   */
  ReqStopPanorama.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopPanorama) return object;
    return new $root.ReqStopPanorama();
  };

  /**
   * Creates a plain object from a ReqStopPanorama message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopPanorama
   * @static
   * @param {ReqStopPanorama} message ReqStopPanorama
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopPanorama.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopPanorama to JSON.
   * @function toJSON
   * @memberof ReqStopPanorama
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopPanorama.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopPanorama
   * @function getTypeUrl
   * @memberof ReqStopPanorama
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopPanorama.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopPanorama";
  };

  return ReqStopPanorama;
})();

$root.ReqStopPanoramaStitchUpload = (function () {
  /**
   * Properties of a ReqStopPanoramaStitchUpload.
   * @exports IReqStopPanoramaStitchUpload
   * @interface IReqStopPanoramaStitchUpload
   */

  /**
   * Constructs a new ReqStopPanoramaStitchUpload.
   * @exports ReqStopPanoramaStitchUpload
   * @classdesc Represents a ReqStopPanoramaStitchUpload.
   * @implements IReqStopPanoramaStitchUpload
   * @constructor
   * @param {IReqStopPanoramaStitchUpload=} [properties] Properties to set
   */
  function ReqStopPanoramaStitchUpload(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopPanoramaStitchUpload instance using the specified properties.
   * @function create
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {IReqStopPanoramaStitchUpload=} [properties] Properties to set
   * @returns {ReqStopPanoramaStitchUpload} ReqStopPanoramaStitchUpload instance
   */
  ReqStopPanoramaStitchUpload.create = function create(properties) {
    return new ReqStopPanoramaStitchUpload(properties);
  };

  /**
   * Encodes the specified ReqStopPanoramaStitchUpload message. Does not implicitly {@link ReqStopPanoramaStitchUpload.verify|verify} messages.
   * @function encode
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {IReqStopPanoramaStitchUpload} message ReqStopPanoramaStitchUpload message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopPanoramaStitchUpload.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopPanoramaStitchUpload message, length delimited. Does not implicitly {@link ReqStopPanoramaStitchUpload.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {IReqStopPanoramaStitchUpload} message ReqStopPanoramaStitchUpload message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopPanoramaStitchUpload.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopPanoramaStitchUpload message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopPanoramaStitchUpload} ReqStopPanoramaStitchUpload
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopPanoramaStitchUpload.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopPanoramaStitchUpload();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopPanoramaStitchUpload message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopPanoramaStitchUpload} ReqStopPanoramaStitchUpload
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopPanoramaStitchUpload.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopPanoramaStitchUpload message.
   * @function verify
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopPanoramaStitchUpload.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopPanoramaStitchUpload message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopPanoramaStitchUpload} ReqStopPanoramaStitchUpload
   */
  ReqStopPanoramaStitchUpload.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopPanoramaStitchUpload) return object;
    return new $root.ReqStopPanoramaStitchUpload();
  };

  /**
   * Creates a plain object from a ReqStopPanoramaStitchUpload message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {ReqStopPanoramaStitchUpload} message ReqStopPanoramaStitchUpload
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopPanoramaStitchUpload.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopPanoramaStitchUpload to JSON.
   * @function toJSON
   * @memberof ReqStopPanoramaStitchUpload
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopPanoramaStitchUpload.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopPanoramaStitchUpload
   * @function getTypeUrl
   * @memberof ReqStopPanoramaStitchUpload
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopPanoramaStitchUpload.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopPanoramaStitchUpload";
  };

  return ReqStopPanoramaStitchUpload;
})();

$root.ResNotifyPanoramaStitchUploadComplete = (function () {
  /**
   * Properties of a ResNotifyPanoramaStitchUploadComplete.
   * @exports IResNotifyPanoramaStitchUploadComplete
   * @interface IResNotifyPanoramaStitchUploadComplete
   * @property {string|null} [userId] ResNotifyPanoramaStitchUploadComplete userId
   * @property {string|null} [busiNo] ResNotifyPanoramaStitchUploadComplete busiNo
   * @property {string|null} [panoramaName] ResNotifyPanoramaStitchUploadComplete panoramaName
   * @property {string|null} [mac] ResNotifyPanoramaStitchUploadComplete mac
   * @property {boolean|null} [uploadRes] ResNotifyPanoramaStitchUploadComplete uploadRes
   */

  /**
   * Constructs a new ResNotifyPanoramaStitchUploadComplete.
   * @exports ResNotifyPanoramaStitchUploadComplete
   * @classdesc Represents a ResNotifyPanoramaStitchUploadComplete.
   * @implements IResNotifyPanoramaStitchUploadComplete
   * @constructor
   * @param {IResNotifyPanoramaStitchUploadComplete=} [properties] Properties to set
   */
  function ResNotifyPanoramaStitchUploadComplete(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyPanoramaStitchUploadComplete userId.
   * @member {string} userId
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @instance
   */
  ResNotifyPanoramaStitchUploadComplete.prototype.userId = "";

  /**
   * ResNotifyPanoramaStitchUploadComplete busiNo.
   * @member {string} busiNo
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @instance
   */
  ResNotifyPanoramaStitchUploadComplete.prototype.busiNo = "";

  /**
   * ResNotifyPanoramaStitchUploadComplete panoramaName.
   * @member {string} panoramaName
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @instance
   */
  ResNotifyPanoramaStitchUploadComplete.prototype.panoramaName = "";

  /**
   * ResNotifyPanoramaStitchUploadComplete mac.
   * @member {string} mac
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @instance
   */
  ResNotifyPanoramaStitchUploadComplete.prototype.mac = "";

  /**
   * ResNotifyPanoramaStitchUploadComplete uploadRes.
   * @member {boolean} uploadRes
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @instance
   */
  ResNotifyPanoramaStitchUploadComplete.prototype.uploadRes = false;

  /**
   * Creates a new ResNotifyPanoramaStitchUploadComplete instance using the specified properties.
   * @function create
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {IResNotifyPanoramaStitchUploadComplete=} [properties] Properties to set
   * @returns {ResNotifyPanoramaStitchUploadComplete} ResNotifyPanoramaStitchUploadComplete instance
   */
  ResNotifyPanoramaStitchUploadComplete.create = function create(properties) {
    return new ResNotifyPanoramaStitchUploadComplete(properties);
  };

  /**
   * Encodes the specified ResNotifyPanoramaStitchUploadComplete message. Does not implicitly {@link ResNotifyPanoramaStitchUploadComplete.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {IResNotifyPanoramaStitchUploadComplete} message ResNotifyPanoramaStitchUploadComplete message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPanoramaStitchUploadComplete.encode = function encode(
    message,
    writer
  ) {
    if (!writer) writer = $Writer.create();
    if (message.userId != null && Object.hasOwnProperty.call(message, "userId"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.userId);
    if (message.busiNo != null && Object.hasOwnProperty.call(message, "busiNo"))
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.busiNo);
    if (
      message.panoramaName != null &&
      Object.hasOwnProperty.call(message, "panoramaName")
    )
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.panoramaName);
    if (message.mac != null && Object.hasOwnProperty.call(message, "mac"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.mac);
    if (
      message.uploadRes != null &&
      Object.hasOwnProperty.call(message, "uploadRes")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).bool(message.uploadRes);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyPanoramaStitchUploadComplete message, length delimited. Does not implicitly {@link ResNotifyPanoramaStitchUploadComplete.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {IResNotifyPanoramaStitchUploadComplete} message ResNotifyPanoramaStitchUploadComplete message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPanoramaStitchUploadComplete.encodeDelimited =
    function encodeDelimited(message, writer) {
      return this.encode(message, writer).ldelim();
    };

  /**
   * Decodes a ResNotifyPanoramaStitchUploadComplete message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyPanoramaStitchUploadComplete} ResNotifyPanoramaStitchUploadComplete
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPanoramaStitchUploadComplete.decode = function decode(
    reader,
    length
  ) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyPanoramaStitchUploadComplete();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.userId = reader.string();
          break;
        }
        case 2: {
          message.busiNo = reader.string();
          break;
        }
        case 3: {
          message.panoramaName = reader.string();
          break;
        }
        case 4: {
          message.mac = reader.string();
          break;
        }
        case 5: {
          message.uploadRes = reader.bool();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyPanoramaStitchUploadComplete message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyPanoramaStitchUploadComplete} ResNotifyPanoramaStitchUploadComplete
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPanoramaStitchUploadComplete.decodeDelimited =
    function decodeDelimited(reader) {
      if (!(reader instanceof $Reader)) reader = new $Reader(reader);
      return this.decode(reader, reader.uint32());
    };

  /**
   * Verifies a ResNotifyPanoramaStitchUploadComplete message.
   * @function verify
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyPanoramaStitchUploadComplete.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.userId != null && message.hasOwnProperty("userId"))
      if (!$util.isString(message.userId)) return "userId: string expected";
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      if (!$util.isString(message.busiNo)) return "busiNo: string expected";
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      if (!$util.isString(message.panoramaName))
        return "panoramaName: string expected";
    if (message.mac != null && message.hasOwnProperty("mac"))
      if (!$util.isString(message.mac)) return "mac: string expected";
    if (message.uploadRes != null && message.hasOwnProperty("uploadRes"))
      if (typeof message.uploadRes !== "boolean")
        return "uploadRes: boolean expected";
    return null;
  };

  /**
   * Creates a ResNotifyPanoramaStitchUploadComplete message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyPanoramaStitchUploadComplete} ResNotifyPanoramaStitchUploadComplete
   */
  ResNotifyPanoramaStitchUploadComplete.fromObject = function fromObject(
    object
  ) {
    if (object instanceof $root.ResNotifyPanoramaStitchUploadComplete)
      return object;
    var message = new $root.ResNotifyPanoramaStitchUploadComplete();
    if (object.userId != null) message.userId = String(object.userId);
    if (object.busiNo != null) message.busiNo = String(object.busiNo);
    if (object.panoramaName != null)
      message.panoramaName = String(object.panoramaName);
    if (object.mac != null) message.mac = String(object.mac);
    if (object.uploadRes != null) message.uploadRes = Boolean(object.uploadRes);
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyPanoramaStitchUploadComplete message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {ResNotifyPanoramaStitchUploadComplete} message ResNotifyPanoramaStitchUploadComplete
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyPanoramaStitchUploadComplete.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.userId = "";
      object.busiNo = "";
      object.panoramaName = "";
      object.mac = "";
      object.uploadRes = false;
    }
    if (message.userId != null && message.hasOwnProperty("userId"))
      object.userId = message.userId;
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      object.busiNo = message.busiNo;
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      object.panoramaName = message.panoramaName;
    if (message.mac != null && message.hasOwnProperty("mac"))
      object.mac = message.mac;
    if (message.uploadRes != null && message.hasOwnProperty("uploadRes"))
      object.uploadRes = message.uploadRes;
    return object;
  };

  /**
   * Converts this ResNotifyPanoramaStitchUploadComplete to JSON.
   * @function toJSON
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyPanoramaStitchUploadComplete.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyPanoramaStitchUploadComplete
   * @function getTypeUrl
   * @memberof ResNotifyPanoramaStitchUploadComplete
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyPanoramaStitchUploadComplete.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyPanoramaStitchUploadComplete";
  };

  return ResNotifyPanoramaStitchUploadComplete;
})();

$root.ResNotifyPanoramaCompressionProgress = (function () {
  /**
   * Properties of a ResNotifyPanoramaCompressionProgress.
   * @exports IResNotifyPanoramaCompressionProgress
   * @interface IResNotifyPanoramaCompressionProgress
   * @property {string|null} [userId] ResNotifyPanoramaCompressionProgress userId
   * @property {string|null} [busiNo] ResNotifyPanoramaCompressionProgress busiNo
   * @property {string|null} [panoramaName] ResNotifyPanoramaCompressionProgress panoramaName
   * @property {string|null} [mac] ResNotifyPanoramaCompressionProgress mac
   * @property {number|null} [totalFilesNum] ResNotifyPanoramaCompressionProgress totalFilesNum
   * @property {number|null} [compressedFilesNum] ResNotifyPanoramaCompressionProgress compressedFilesNum
   */

  /**
   * Constructs a new ResNotifyPanoramaCompressionProgress.
   * @exports ResNotifyPanoramaCompressionProgress
   * @classdesc Represents a ResNotifyPanoramaCompressionProgress.
   * @implements IResNotifyPanoramaCompressionProgress
   * @constructor
   * @param {IResNotifyPanoramaCompressionProgress=} [properties] Properties to set
   */
  function ResNotifyPanoramaCompressionProgress(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyPanoramaCompressionProgress userId.
   * @member {string} userId
   * @memberof ResNotifyPanoramaCompressionProgress
   * @instance
   */
  ResNotifyPanoramaCompressionProgress.prototype.userId = "";

  /**
   * ResNotifyPanoramaCompressionProgress busiNo.
   * @member {string} busiNo
   * @memberof ResNotifyPanoramaCompressionProgress
   * @instance
   */
  ResNotifyPanoramaCompressionProgress.prototype.busiNo = "";

  /**
   * ResNotifyPanoramaCompressionProgress panoramaName.
   * @member {string} panoramaName
   * @memberof ResNotifyPanoramaCompressionProgress
   * @instance
   */
  ResNotifyPanoramaCompressionProgress.prototype.panoramaName = "";

  /**
   * ResNotifyPanoramaCompressionProgress mac.
   * @member {string} mac
   * @memberof ResNotifyPanoramaCompressionProgress
   * @instance
   */
  ResNotifyPanoramaCompressionProgress.prototype.mac = "";

  /**
   * ResNotifyPanoramaCompressionProgress totalFilesNum.
   * @member {number} totalFilesNum
   * @memberof ResNotifyPanoramaCompressionProgress
   * @instance
   */
  ResNotifyPanoramaCompressionProgress.prototype.totalFilesNum = 0;

  /**
   * ResNotifyPanoramaCompressionProgress compressedFilesNum.
   * @member {number} compressedFilesNum
   * @memberof ResNotifyPanoramaCompressionProgress
   * @instance
   */
  ResNotifyPanoramaCompressionProgress.prototype.compressedFilesNum = 0;

  /**
   * Creates a new ResNotifyPanoramaCompressionProgress instance using the specified properties.
   * @function create
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {IResNotifyPanoramaCompressionProgress=} [properties] Properties to set
   * @returns {ResNotifyPanoramaCompressionProgress} ResNotifyPanoramaCompressionProgress instance
   */
  ResNotifyPanoramaCompressionProgress.create = function create(properties) {
    return new ResNotifyPanoramaCompressionProgress(properties);
  };

  /**
   * Encodes the specified ResNotifyPanoramaCompressionProgress message. Does not implicitly {@link ResNotifyPanoramaCompressionProgress.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {IResNotifyPanoramaCompressionProgress} message ResNotifyPanoramaCompressionProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPanoramaCompressionProgress.encode = function encode(
    message,
    writer
  ) {
    if (!writer) writer = $Writer.create();
    if (message.userId != null && Object.hasOwnProperty.call(message, "userId"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.userId);
    if (message.busiNo != null && Object.hasOwnProperty.call(message, "busiNo"))
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.busiNo);
    if (
      message.panoramaName != null &&
      Object.hasOwnProperty.call(message, "panoramaName")
    )
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.panoramaName);
    if (message.mac != null && Object.hasOwnProperty.call(message, "mac"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.mac);
    if (
      message.totalFilesNum != null &&
      Object.hasOwnProperty.call(message, "totalFilesNum")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).uint32(message.totalFilesNum);
    if (
      message.compressedFilesNum != null &&
      Object.hasOwnProperty.call(message, "compressedFilesNum")
    )
      writer
        .uint32(/* id 6, wireType 0 =*/ 48)
        .uint32(message.compressedFilesNum);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyPanoramaCompressionProgress message, length delimited. Does not implicitly {@link ResNotifyPanoramaCompressionProgress.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {IResNotifyPanoramaCompressionProgress} message ResNotifyPanoramaCompressionProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPanoramaCompressionProgress.encodeDelimited =
    function encodeDelimited(message, writer) {
      return this.encode(message, writer).ldelim();
    };

  /**
   * Decodes a ResNotifyPanoramaCompressionProgress message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyPanoramaCompressionProgress} ResNotifyPanoramaCompressionProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPanoramaCompressionProgress.decode = function decode(
    reader,
    length
  ) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyPanoramaCompressionProgress();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.userId = reader.string();
          break;
        }
        case 2: {
          message.busiNo = reader.string();
          break;
        }
        case 3: {
          message.panoramaName = reader.string();
          break;
        }
        case 4: {
          message.mac = reader.string();
          break;
        }
        case 5: {
          message.totalFilesNum = reader.uint32();
          break;
        }
        case 6: {
          message.compressedFilesNum = reader.uint32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyPanoramaCompressionProgress message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyPanoramaCompressionProgress} ResNotifyPanoramaCompressionProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPanoramaCompressionProgress.decodeDelimited =
    function decodeDelimited(reader) {
      if (!(reader instanceof $Reader)) reader = new $Reader(reader);
      return this.decode(reader, reader.uint32());
    };

  /**
   * Verifies a ResNotifyPanoramaCompressionProgress message.
   * @function verify
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyPanoramaCompressionProgress.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.userId != null && message.hasOwnProperty("userId"))
      if (!$util.isString(message.userId)) return "userId: string expected";
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      if (!$util.isString(message.busiNo)) return "busiNo: string expected";
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      if (!$util.isString(message.panoramaName))
        return "panoramaName: string expected";
    if (message.mac != null && message.hasOwnProperty("mac"))
      if (!$util.isString(message.mac)) return "mac: string expected";
    if (
      message.totalFilesNum != null &&
      message.hasOwnProperty("totalFilesNum")
    )
      if (!$util.isInteger(message.totalFilesNum))
        return "totalFilesNum: integer expected";
    if (
      message.compressedFilesNum != null &&
      message.hasOwnProperty("compressedFilesNum")
    )
      if (!$util.isInteger(message.compressedFilesNum))
        return "compressedFilesNum: integer expected";
    return null;
  };

  /**
   * Creates a ResNotifyPanoramaCompressionProgress message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyPanoramaCompressionProgress} ResNotifyPanoramaCompressionProgress
   */
  ResNotifyPanoramaCompressionProgress.fromObject = function fromObject(
    object
  ) {
    if (object instanceof $root.ResNotifyPanoramaCompressionProgress)
      return object;
    var message = new $root.ResNotifyPanoramaCompressionProgress();
    if (object.userId != null) message.userId = String(object.userId);
    if (object.busiNo != null) message.busiNo = String(object.busiNo);
    if (object.panoramaName != null)
      message.panoramaName = String(object.panoramaName);
    if (object.mac != null) message.mac = String(object.mac);
    if (object.totalFilesNum != null)
      message.totalFilesNum = object.totalFilesNum >>> 0;
    if (object.compressedFilesNum != null)
      message.compressedFilesNum = object.compressedFilesNum >>> 0;
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyPanoramaCompressionProgress message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {ResNotifyPanoramaCompressionProgress} message ResNotifyPanoramaCompressionProgress
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyPanoramaCompressionProgress.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.userId = "";
      object.busiNo = "";
      object.panoramaName = "";
      object.mac = "";
      object.totalFilesNum = 0;
      object.compressedFilesNum = 0;
    }
    if (message.userId != null && message.hasOwnProperty("userId"))
      object.userId = message.userId;
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      object.busiNo = message.busiNo;
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      object.panoramaName = message.panoramaName;
    if (message.mac != null && message.hasOwnProperty("mac"))
      object.mac = message.mac;
    if (
      message.totalFilesNum != null &&
      message.hasOwnProperty("totalFilesNum")
    )
      object.totalFilesNum = message.totalFilesNum;
    if (
      message.compressedFilesNum != null &&
      message.hasOwnProperty("compressedFilesNum")
    )
      object.compressedFilesNum = message.compressedFilesNum;
    return object;
  };

  /**
   * Converts this ResNotifyPanoramaCompressionProgress to JSON.
   * @function toJSON
   * @memberof ResNotifyPanoramaCompressionProgress
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyPanoramaCompressionProgress.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyPanoramaCompressionProgress
   * @function getTypeUrl
   * @memberof ResNotifyPanoramaCompressionProgress
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyPanoramaCompressionProgress.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyPanoramaCompressionProgress";
  };

  return ResNotifyPanoramaCompressionProgress;
})();

$root.ResNotifyPanoramaUploadProgress = (function () {
  /**
   * Properties of a ResNotifyPanoramaUploadProgress.
   * @exports IResNotifyPanoramaUploadProgress
   * @interface IResNotifyPanoramaUploadProgress
   * @property {string|null} [userId] ResNotifyPanoramaUploadProgress userId
   * @property {string|null} [busiNo] ResNotifyPanoramaUploadProgress busiNo
   * @property {string|null} [panoramaName] ResNotifyPanoramaUploadProgress panoramaName
   * @property {string|null} [mac] ResNotifyPanoramaUploadProgress mac
   * @property {number|Long|null} [totalSize] ResNotifyPanoramaUploadProgress totalSize
   * @property {number|Long|null} [uploadedSize] ResNotifyPanoramaUploadProgress uploadedSize
   */

  /**
   * Constructs a new ResNotifyPanoramaUploadProgress.
   * @exports ResNotifyPanoramaUploadProgress
   * @classdesc Represents a ResNotifyPanoramaUploadProgress.
   * @implements IResNotifyPanoramaUploadProgress
   * @constructor
   * @param {IResNotifyPanoramaUploadProgress=} [properties] Properties to set
   */
  function ResNotifyPanoramaUploadProgress(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResNotifyPanoramaUploadProgress userId.
   * @member {string} userId
   * @memberof ResNotifyPanoramaUploadProgress
   * @instance
   */
  ResNotifyPanoramaUploadProgress.prototype.userId = "";

  /**
   * ResNotifyPanoramaUploadProgress busiNo.
   * @member {string} busiNo
   * @memberof ResNotifyPanoramaUploadProgress
   * @instance
   */
  ResNotifyPanoramaUploadProgress.prototype.busiNo = "";

  /**
   * ResNotifyPanoramaUploadProgress panoramaName.
   * @member {string} panoramaName
   * @memberof ResNotifyPanoramaUploadProgress
   * @instance
   */
  ResNotifyPanoramaUploadProgress.prototype.panoramaName = "";

  /**
   * ResNotifyPanoramaUploadProgress mac.
   * @member {string} mac
   * @memberof ResNotifyPanoramaUploadProgress
   * @instance
   */
  ResNotifyPanoramaUploadProgress.prototype.mac = "";

  /**
   * ResNotifyPanoramaUploadProgress totalSize.
   * @member {number|Long} totalSize
   * @memberof ResNotifyPanoramaUploadProgress
   * @instance
   */
  ResNotifyPanoramaUploadProgress.prototype.totalSize = $util.Long
    ? $util.Long.fromBits(0, 0, true)
    : 0;

  /**
   * ResNotifyPanoramaUploadProgress uploadedSize.
   * @member {number|Long} uploadedSize
   * @memberof ResNotifyPanoramaUploadProgress
   * @instance
   */
  ResNotifyPanoramaUploadProgress.prototype.uploadedSize = $util.Long
    ? $util.Long.fromBits(0, 0, true)
    : 0;

  /**
   * Creates a new ResNotifyPanoramaUploadProgress instance using the specified properties.
   * @function create
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {IResNotifyPanoramaUploadProgress=} [properties] Properties to set
   * @returns {ResNotifyPanoramaUploadProgress} ResNotifyPanoramaUploadProgress instance
   */
  ResNotifyPanoramaUploadProgress.create = function create(properties) {
    return new ResNotifyPanoramaUploadProgress(properties);
  };

  /**
   * Encodes the specified ResNotifyPanoramaUploadProgress message. Does not implicitly {@link ResNotifyPanoramaUploadProgress.verify|verify} messages.
   * @function encode
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {IResNotifyPanoramaUploadProgress} message ResNotifyPanoramaUploadProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPanoramaUploadProgress.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.userId != null && Object.hasOwnProperty.call(message, "userId"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.userId);
    if (message.busiNo != null && Object.hasOwnProperty.call(message, "busiNo"))
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.busiNo);
    if (
      message.panoramaName != null &&
      Object.hasOwnProperty.call(message, "panoramaName")
    )
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.panoramaName);
    if (message.mac != null && Object.hasOwnProperty.call(message, "mac"))
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.mac);
    if (
      message.totalSize != null &&
      Object.hasOwnProperty.call(message, "totalSize")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).uint64(message.totalSize);
    if (
      message.uploadedSize != null &&
      Object.hasOwnProperty.call(message, "uploadedSize")
    )
      writer.uint32(/* id 6, wireType 0 =*/ 48).uint64(message.uploadedSize);
    return writer;
  };

  /**
   * Encodes the specified ResNotifyPanoramaUploadProgress message, length delimited. Does not implicitly {@link ResNotifyPanoramaUploadProgress.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {IResNotifyPanoramaUploadProgress} message ResNotifyPanoramaUploadProgress message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResNotifyPanoramaUploadProgress.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResNotifyPanoramaUploadProgress message from the specified reader or buffer.
   * @function decode
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResNotifyPanoramaUploadProgress} ResNotifyPanoramaUploadProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPanoramaUploadProgress.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResNotifyPanoramaUploadProgress();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.userId = reader.string();
          break;
        }
        case 2: {
          message.busiNo = reader.string();
          break;
        }
        case 3: {
          message.panoramaName = reader.string();
          break;
        }
        case 4: {
          message.mac = reader.string();
          break;
        }
        case 5: {
          message.totalSize = reader.uint64();
          break;
        }
        case 6: {
          message.uploadedSize = reader.uint64();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResNotifyPanoramaUploadProgress message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResNotifyPanoramaUploadProgress} ResNotifyPanoramaUploadProgress
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResNotifyPanoramaUploadProgress.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResNotifyPanoramaUploadProgress message.
   * @function verify
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResNotifyPanoramaUploadProgress.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.userId != null && message.hasOwnProperty("userId"))
      if (!$util.isString(message.userId)) return "userId: string expected";
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      if (!$util.isString(message.busiNo)) return "busiNo: string expected";
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      if (!$util.isString(message.panoramaName))
        return "panoramaName: string expected";
    if (message.mac != null && message.hasOwnProperty("mac"))
      if (!$util.isString(message.mac)) return "mac: string expected";
    if (message.totalSize != null && message.hasOwnProperty("totalSize"))
      if (
        !$util.isInteger(message.totalSize) &&
        !(
          message.totalSize &&
          $util.isInteger(message.totalSize.low) &&
          $util.isInteger(message.totalSize.high)
        )
      )
        return "totalSize: integer|Long expected";
    if (message.uploadedSize != null && message.hasOwnProperty("uploadedSize"))
      if (
        !$util.isInteger(message.uploadedSize) &&
        !(
          message.uploadedSize &&
          $util.isInteger(message.uploadedSize.low) &&
          $util.isInteger(message.uploadedSize.high)
        )
      )
        return "uploadedSize: integer|Long expected";
    return null;
  };

  /**
   * Creates a ResNotifyPanoramaUploadProgress message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResNotifyPanoramaUploadProgress} ResNotifyPanoramaUploadProgress
   */
  ResNotifyPanoramaUploadProgress.fromObject = function fromObject(object) {
    if (object instanceof $root.ResNotifyPanoramaUploadProgress) return object;
    var message = new $root.ResNotifyPanoramaUploadProgress();
    if (object.userId != null) message.userId = String(object.userId);
    if (object.busiNo != null) message.busiNo = String(object.busiNo);
    if (object.panoramaName != null)
      message.panoramaName = String(object.panoramaName);
    if (object.mac != null) message.mac = String(object.mac);
    if (object.totalSize != null)
      if ($util.Long)
        (message.totalSize = $util.Long.fromValue(
          object.totalSize
        )).unsigned = true;
      else if (typeof object.totalSize === "string")
        message.totalSize = parseInt(object.totalSize, 10);
      else if (typeof object.totalSize === "number")
        message.totalSize = object.totalSize;
      else if (typeof object.totalSize === "object")
        message.totalSize = new $util.LongBits(
          object.totalSize.low >>> 0,
          object.totalSize.high >>> 0
        ).toNumber(true);
    if (object.uploadedSize != null)
      if ($util.Long)
        (message.uploadedSize = $util.Long.fromValue(
          object.uploadedSize
        )).unsigned = true;
      else if (typeof object.uploadedSize === "string")
        message.uploadedSize = parseInt(object.uploadedSize, 10);
      else if (typeof object.uploadedSize === "number")
        message.uploadedSize = object.uploadedSize;
      else if (typeof object.uploadedSize === "object")
        message.uploadedSize = new $util.LongBits(
          object.uploadedSize.low >>> 0,
          object.uploadedSize.high >>> 0
        ).toNumber(true);
    return message;
  };

  /**
   * Creates a plain object from a ResNotifyPanoramaUploadProgress message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {ResNotifyPanoramaUploadProgress} message ResNotifyPanoramaUploadProgress
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResNotifyPanoramaUploadProgress.toObject = function toObject(
    message,
    options
  ) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.userId = "";
      object.busiNo = "";
      object.panoramaName = "";
      object.mac = "";
      if ($util.Long) {
        var long = new $util.Long(0, 0, true);
        object.totalSize =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.totalSize = options.longs === String ? "0" : 0;
      if ($util.Long) {
        var long = new $util.Long(0, 0, true);
        object.uploadedSize =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.uploadedSize = options.longs === String ? "0" : 0;
    }
    if (message.userId != null && message.hasOwnProperty("userId"))
      object.userId = message.userId;
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      object.busiNo = message.busiNo;
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      object.panoramaName = message.panoramaName;
    if (message.mac != null && message.hasOwnProperty("mac"))
      object.mac = message.mac;
    if (message.totalSize != null && message.hasOwnProperty("totalSize"))
      if (typeof message.totalSize === "number")
        object.totalSize =
          options.longs === String
            ? String(message.totalSize)
            : message.totalSize;
      else
        object.totalSize =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.totalSize)
            : options.longs === Number
            ? new $util.LongBits(
                message.totalSize.low >>> 0,
                message.totalSize.high >>> 0
              ).toNumber(true)
            : message.totalSize;
    if (message.uploadedSize != null && message.hasOwnProperty("uploadedSize"))
      if (typeof message.uploadedSize === "number")
        object.uploadedSize =
          options.longs === String
            ? String(message.uploadedSize)
            : message.uploadedSize;
      else
        object.uploadedSize =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.uploadedSize)
            : options.longs === Number
            ? new $util.LongBits(
                message.uploadedSize.low >>> 0,
                message.uploadedSize.high >>> 0
              ).toNumber(true)
            : message.uploadedSize;
    return object;
  };

  /**
   * Converts this ResNotifyPanoramaUploadProgress to JSON.
   * @function toJSON
   * @memberof ResNotifyPanoramaUploadProgress
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResNotifyPanoramaUploadProgress.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResNotifyPanoramaUploadProgress
   * @function getTypeUrl
   * @memberof ResNotifyPanoramaUploadProgress
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResNotifyPanoramaUploadProgress.getTypeUrl = function getTypeUrl(
    typeUrlPrefix
  ) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResNotifyPanoramaUploadProgress";
  };

  return ResNotifyPanoramaUploadProgress;
})();

$root.ResGetStitchUploadState = (function () {
  /**
   * Properties of a ResGetStitchUploadState.
   * @exports IResGetStitchUploadState
   * @interface IResGetStitchUploadState
   * @property {number|null} [code] ResGetStitchUploadState code
   * @property {string|null} [userId] ResGetStitchUploadState userId
   * @property {string|null} [busiNo] ResGetStitchUploadState busiNo
   * @property {string|null} [panoramaName] ResGetStitchUploadState panoramaName
   * @property {string|null} [mac] ResGetStitchUploadState mac
   * @property {number|null} [totalFilesNum] ResGetStitchUploadState totalFilesNum
   * @property {number|null} [compressedFilesNum] ResGetStitchUploadState compressedFilesNum
   * @property {number|Long|null} [totalSize] ResGetStitchUploadState totalSize
   * @property {number|Long|null} [uploadedSize] ResGetStitchUploadState uploadedSize
   * @property {number|null} [step] ResGetStitchUploadState step
   */

  /**
   * Constructs a new ResGetStitchUploadState.
   * @exports ResGetStitchUploadState
   * @classdesc Represents a ResGetStitchUploadState.
   * @implements IResGetStitchUploadState
   * @constructor
   * @param {IResGetStitchUploadState=} [properties] Properties to set
   */
  function ResGetStitchUploadState(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetStitchUploadState code.
   * @member {number} code
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.code = 0;

  /**
   * ResGetStitchUploadState userId.
   * @member {string} userId
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.userId = "";

  /**
   * ResGetStitchUploadState busiNo.
   * @member {string} busiNo
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.busiNo = "";

  /**
   * ResGetStitchUploadState panoramaName.
   * @member {string} panoramaName
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.panoramaName = "";

  /**
   * ResGetStitchUploadState mac.
   * @member {string} mac
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.mac = "";

  /**
   * ResGetStitchUploadState totalFilesNum.
   * @member {number} totalFilesNum
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.totalFilesNum = 0;

  /**
   * ResGetStitchUploadState compressedFilesNum.
   * @member {number} compressedFilesNum
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.compressedFilesNum = 0;

  /**
   * ResGetStitchUploadState totalSize.
   * @member {number|Long} totalSize
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.totalSize = $util.Long
    ? $util.Long.fromBits(0, 0, true)
    : 0;

  /**
   * ResGetStitchUploadState uploadedSize.
   * @member {number|Long} uploadedSize
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.uploadedSize = $util.Long
    ? $util.Long.fromBits(0, 0, true)
    : 0;

  /**
   * ResGetStitchUploadState step.
   * @member {number} step
   * @memberof ResGetStitchUploadState
   * @instance
   */
  ResGetStitchUploadState.prototype.step = 0;

  /**
   * Creates a new ResGetStitchUploadState instance using the specified properties.
   * @function create
   * @memberof ResGetStitchUploadState
   * @static
   * @param {IResGetStitchUploadState=} [properties] Properties to set
   * @returns {ResGetStitchUploadState} ResGetStitchUploadState instance
   */
  ResGetStitchUploadState.create = function create(properties) {
    return new ResGetStitchUploadState(properties);
  };

  /**
   * Encodes the specified ResGetStitchUploadState message. Does not implicitly {@link ResGetStitchUploadState.verify|verify} messages.
   * @function encode
   * @memberof ResGetStitchUploadState
   * @static
   * @param {IResGetStitchUploadState} message ResGetStitchUploadState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetStitchUploadState.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    if (message.userId != null && Object.hasOwnProperty.call(message, "userId"))
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.userId);
    if (message.busiNo != null && Object.hasOwnProperty.call(message, "busiNo"))
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.busiNo);
    if (
      message.panoramaName != null &&
      Object.hasOwnProperty.call(message, "panoramaName")
    )
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.panoramaName);
    if (message.mac != null && Object.hasOwnProperty.call(message, "mac"))
      writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.mac);
    if (
      message.totalFilesNum != null &&
      Object.hasOwnProperty.call(message, "totalFilesNum")
    )
      writer.uint32(/* id 6, wireType 0 =*/ 48).uint32(message.totalFilesNum);
    if (
      message.compressedFilesNum != null &&
      Object.hasOwnProperty.call(message, "compressedFilesNum")
    )
      writer
        .uint32(/* id 7, wireType 0 =*/ 56)
        .uint32(message.compressedFilesNum);
    if (
      message.totalSize != null &&
      Object.hasOwnProperty.call(message, "totalSize")
    )
      writer.uint32(/* id 8, wireType 0 =*/ 64).uint64(message.totalSize);
    if (
      message.uploadedSize != null &&
      Object.hasOwnProperty.call(message, "uploadedSize")
    )
      writer.uint32(/* id 9, wireType 0 =*/ 72).uint64(message.uploadedSize);
    if (message.step != null && Object.hasOwnProperty.call(message, "step"))
      writer.uint32(/* id 10, wireType 0 =*/ 80).uint32(message.step);
    return writer;
  };

  /**
   * Encodes the specified ResGetStitchUploadState message, length delimited. Does not implicitly {@link ResGetStitchUploadState.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetStitchUploadState
   * @static
   * @param {IResGetStitchUploadState} message ResGetStitchUploadState message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetStitchUploadState.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetStitchUploadState message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetStitchUploadState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetStitchUploadState} ResGetStitchUploadState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetStitchUploadState.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetStitchUploadState();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        case 2: {
          message.userId = reader.string();
          break;
        }
        case 3: {
          message.busiNo = reader.string();
          break;
        }
        case 4: {
          message.panoramaName = reader.string();
          break;
        }
        case 5: {
          message.mac = reader.string();
          break;
        }
        case 6: {
          message.totalFilesNum = reader.uint32();
          break;
        }
        case 7: {
          message.compressedFilesNum = reader.uint32();
          break;
        }
        case 8: {
          message.totalSize = reader.uint64();
          break;
        }
        case 9: {
          message.uploadedSize = reader.uint64();
          break;
        }
        case 10: {
          message.step = reader.uint32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetStitchUploadState message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetStitchUploadState
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetStitchUploadState} ResGetStitchUploadState
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetStitchUploadState.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetStitchUploadState message.
   * @function verify
   * @memberof ResGetStitchUploadState
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetStitchUploadState.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.userId != null && message.hasOwnProperty("userId"))
      if (!$util.isString(message.userId)) return "userId: string expected";
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      if (!$util.isString(message.busiNo)) return "busiNo: string expected";
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      if (!$util.isString(message.panoramaName))
        return "panoramaName: string expected";
    if (message.mac != null && message.hasOwnProperty("mac"))
      if (!$util.isString(message.mac)) return "mac: string expected";
    if (
      message.totalFilesNum != null &&
      message.hasOwnProperty("totalFilesNum")
    )
      if (!$util.isInteger(message.totalFilesNum))
        return "totalFilesNum: integer expected";
    if (
      message.compressedFilesNum != null &&
      message.hasOwnProperty("compressedFilesNum")
    )
      if (!$util.isInteger(message.compressedFilesNum))
        return "compressedFilesNum: integer expected";
    if (message.totalSize != null && message.hasOwnProperty("totalSize"))
      if (
        !$util.isInteger(message.totalSize) &&
        !(
          message.totalSize &&
          $util.isInteger(message.totalSize.low) &&
          $util.isInteger(message.totalSize.high)
        )
      )
        return "totalSize: integer|Long expected";
    if (message.uploadedSize != null && message.hasOwnProperty("uploadedSize"))
      if (
        !$util.isInteger(message.uploadedSize) &&
        !(
          message.uploadedSize &&
          $util.isInteger(message.uploadedSize.low) &&
          $util.isInteger(message.uploadedSize.high)
        )
      )
        return "uploadedSize: integer|Long expected";
    if (message.step != null && message.hasOwnProperty("step"))
      if (!$util.isInteger(message.step)) return "step: integer expected";
    return null;
  };

  /**
   * Creates a ResGetStitchUploadState message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetStitchUploadState
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetStitchUploadState} ResGetStitchUploadState
   */
  ResGetStitchUploadState.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetStitchUploadState) return object;
    var message = new $root.ResGetStitchUploadState();
    if (object.code != null) message.code = object.code | 0;
    if (object.userId != null) message.userId = String(object.userId);
    if (object.busiNo != null) message.busiNo = String(object.busiNo);
    if (object.panoramaName != null)
      message.panoramaName = String(object.panoramaName);
    if (object.mac != null) message.mac = String(object.mac);
    if (object.totalFilesNum != null)
      message.totalFilesNum = object.totalFilesNum >>> 0;
    if (object.compressedFilesNum != null)
      message.compressedFilesNum = object.compressedFilesNum >>> 0;
    if (object.totalSize != null)
      if ($util.Long)
        (message.totalSize = $util.Long.fromValue(
          object.totalSize
        )).unsigned = true;
      else if (typeof object.totalSize === "string")
        message.totalSize = parseInt(object.totalSize, 10);
      else if (typeof object.totalSize === "number")
        message.totalSize = object.totalSize;
      else if (typeof object.totalSize === "object")
        message.totalSize = new $util.LongBits(
          object.totalSize.low >>> 0,
          object.totalSize.high >>> 0
        ).toNumber(true);
    if (object.uploadedSize != null)
      if ($util.Long)
        (message.uploadedSize = $util.Long.fromValue(
          object.uploadedSize
        )).unsigned = true;
      else if (typeof object.uploadedSize === "string")
        message.uploadedSize = parseInt(object.uploadedSize, 10);
      else if (typeof object.uploadedSize === "number")
        message.uploadedSize = object.uploadedSize;
      else if (typeof object.uploadedSize === "object")
        message.uploadedSize = new $util.LongBits(
          object.uploadedSize.low >>> 0,
          object.uploadedSize.high >>> 0
        ).toNumber(true);
    if (object.step != null) message.step = object.step >>> 0;
    return message;
  };

  /**
   * Creates a plain object from a ResGetStitchUploadState message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetStitchUploadState
   * @static
   * @param {ResGetStitchUploadState} message ResGetStitchUploadState
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetStitchUploadState.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.code = 0;
      object.userId = "";
      object.busiNo = "";
      object.panoramaName = "";
      object.mac = "";
      object.totalFilesNum = 0;
      object.compressedFilesNum = 0;
      if ($util.Long) {
        var long = new $util.Long(0, 0, true);
        object.totalSize =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.totalSize = options.longs === String ? "0" : 0;
      if ($util.Long) {
        var long = new $util.Long(0, 0, true);
        object.uploadedSize =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.uploadedSize = options.longs === String ? "0" : 0;
      object.step = 0;
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.userId != null && message.hasOwnProperty("userId"))
      object.userId = message.userId;
    if (message.busiNo != null && message.hasOwnProperty("busiNo"))
      object.busiNo = message.busiNo;
    if (message.panoramaName != null && message.hasOwnProperty("panoramaName"))
      object.panoramaName = message.panoramaName;
    if (message.mac != null && message.hasOwnProperty("mac"))
      object.mac = message.mac;
    if (
      message.totalFilesNum != null &&
      message.hasOwnProperty("totalFilesNum")
    )
      object.totalFilesNum = message.totalFilesNum;
    if (
      message.compressedFilesNum != null &&
      message.hasOwnProperty("compressedFilesNum")
    )
      object.compressedFilesNum = message.compressedFilesNum;
    if (message.totalSize != null && message.hasOwnProperty("totalSize"))
      if (typeof message.totalSize === "number")
        object.totalSize =
          options.longs === String
            ? String(message.totalSize)
            : message.totalSize;
      else
        object.totalSize =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.totalSize)
            : options.longs === Number
            ? new $util.LongBits(
                message.totalSize.low >>> 0,
                message.totalSize.high >>> 0
              ).toNumber(true)
            : message.totalSize;
    if (message.uploadedSize != null && message.hasOwnProperty("uploadedSize"))
      if (typeof message.uploadedSize === "number")
        object.uploadedSize =
          options.longs === String
            ? String(message.uploadedSize)
            : message.uploadedSize;
      else
        object.uploadedSize =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.uploadedSize)
            : options.longs === Number
            ? new $util.LongBits(
                message.uploadedSize.low >>> 0,
                message.uploadedSize.high >>> 0
              ).toNumber(true)
            : message.uploadedSize;
    if (message.step != null && message.hasOwnProperty("step"))
      object.step = message.step;
    return object;
  };

  /**
   * Converts this ResGetStitchUploadState to JSON.
   * @function toJSON
   * @memberof ResGetStitchUploadState
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetStitchUploadState.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetStitchUploadState
   * @function getTypeUrl
   * @memberof ResGetStitchUploadState
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetStitchUploadState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetStitchUploadState";
  };

  return ResGetStitchUploadState;
})();

/**
 * ModuleId enum.
 * @exports ModuleId
 * @enum {number}
 * @property {number} MODULE_NONE=0 MODULE_NONE value
 * @property {number} MODULE_CAMERA_TELE=1 MODULE_CAMERA_TELE value
 * @property {number} MODULE_CAMERA_WIDE=2 MODULE_CAMERA_WIDE value
 * @property {number} MODULE_ASTRO=3 MODULE_ASTRO value
 * @property {number} MODULE_SYSTEM=4 MODULE_SYSTEM value
 * @property {number} MODULE_RGB_POWER=5 MODULE_RGB_POWER value
 * @property {number} MODULE_MOTOR=6 MODULE_MOTOR value
 * @property {number} MODULE_TRACK=7 MODULE_TRACK value
 * @property {number} MODULE_FOCUS=8 MODULE_FOCUS value
 * @property {number} MODULE_NOTIFY=9 MODULE_NOTIFY value
 * @property {number} MODULE_PANORAMA=10 MODULE_PANORAMA value
 * @property {number} MODULE_SHOOTING_SCHEDULE=13 MODULE_SHOOTING_SCHEDULE value
 */
$root.ModuleId = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "MODULE_NONE")] = 0;
  values[(valuesById[1] = "MODULE_CAMERA_TELE")] = 1;
  values[(valuesById[2] = "MODULE_CAMERA_WIDE")] = 2;
  values[(valuesById[3] = "MODULE_ASTRO")] = 3;
  values[(valuesById[4] = "MODULE_SYSTEM")] = 4;
  values[(valuesById[5] = "MODULE_RGB_POWER")] = 5;
  values[(valuesById[6] = "MODULE_MOTOR")] = 6;
  values[(valuesById[7] = "MODULE_TRACK")] = 7;
  values[(valuesById[8] = "MODULE_FOCUS")] = 8;
  values[(valuesById[9] = "MODULE_NOTIFY")] = 9;
  values[(valuesById[10] = "MODULE_PANORAMA")] = 10;
  values[(valuesById[13] = "MODULE_SHOOTING_SCHEDULE")] = 13;
  return values;
})();

/**
 * MessageTypeId enum.
 * @exports MessageTypeId
 * @enum {number}
 * @property {number} TYPE_REQUEST=0 TYPE_REQUEST value
 * @property {number} TYPE_REQUEST_RESPONSE=1 TYPE_REQUEST_RESPONSE value
 * @property {number} TYPE_NOTIFICATION=2 TYPE_NOTIFICATION value
 * @property {number} TYPE_NOTIFICATION_RESPONSE=3 TYPE_NOTIFICATION_RESPONSE value
 */
$root.MessageTypeId = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "TYPE_REQUEST")] = 0;
  values[(valuesById[1] = "TYPE_REQUEST_RESPONSE")] = 1;
  values[(valuesById[2] = "TYPE_NOTIFICATION")] = 2;
  values[(valuesById[3] = "TYPE_NOTIFICATION_RESPONSE")] = 3;
  return values;
})();

/**
 * DwarfCMD enum.
 * @exports DwarfCMD
 * @enum {number}
 * @property {number} NO_CMD=0 NO_CMD value
 * @property {number} CMD_CAMERA_TELE_OPEN_CAMERA=10000 CMD_CAMERA_TELE_OPEN_CAMERA value
 * @property {number} CMD_CAMERA_TELE_CLOSE_CAMERA=10001 CMD_CAMERA_TELE_CLOSE_CAMERA value
 * @property {number} CMD_CAMERA_TELE_PHOTOGRAPH=10002 CMD_CAMERA_TELE_PHOTOGRAPH value
 * @property {number} CMD_CAMERA_TELE_BURST=10003 CMD_CAMERA_TELE_BURST value
 * @property {number} CMD_CAMERA_TELE_STOP_BURST=10004 CMD_CAMERA_TELE_STOP_BURST value
 * @property {number} CMD_CAMERA_TELE_START_RECORD=10005 CMD_CAMERA_TELE_START_RECORD value
 * @property {number} CMD_CAMERA_TELE_STOP_RECORD=10006 CMD_CAMERA_TELE_STOP_RECORD value
 * @property {number} CMD_CAMERA_TELE_SET_EXP_MODE=10007 CMD_CAMERA_TELE_SET_EXP_MODE value
 * @property {number} CMD_CAMERA_TELE_GET_EXP_MODE=10008 CMD_CAMERA_TELE_GET_EXP_MODE value
 * @property {number} CMD_CAMERA_TELE_SET_EXP=10009 CMD_CAMERA_TELE_SET_EXP value
 * @property {number} CMD_CAMERA_TELE_GET_EXP=10010 CMD_CAMERA_TELE_GET_EXP value
 * @property {number} CMD_CAMERA_TELE_SET_GAIN_MODE=10011 CMD_CAMERA_TELE_SET_GAIN_MODE value
 * @property {number} CMD_CAMERA_TELE_GET_GAIN_MODE=10012 CMD_CAMERA_TELE_GET_GAIN_MODE value
 * @property {number} CMD_CAMERA_TELE_SET_GAIN=10013 CMD_CAMERA_TELE_SET_GAIN value
 * @property {number} CMD_CAMERA_TELE_GET_GAIN=10014 CMD_CAMERA_TELE_GET_GAIN value
 * @property {number} CMD_CAMERA_TELE_SET_BRIGHTNESS=10015 CMD_CAMERA_TELE_SET_BRIGHTNESS value
 * @property {number} CMD_CAMERA_TELE_GET_BRIGHTNESS=10016 CMD_CAMERA_TELE_GET_BRIGHTNESS value
 * @property {number} CMD_CAMERA_TELE_SET_CONTRAST=10017 CMD_CAMERA_TELE_SET_CONTRAST value
 * @property {number} CMD_CAMERA_TELE_GET_CONTRAST=10018 CMD_CAMERA_TELE_GET_CONTRAST value
 * @property {number} CMD_CAMERA_TELE_SET_SATURATION=10019 CMD_CAMERA_TELE_SET_SATURATION value
 * @property {number} CMD_CAMERA_TELE_GET_SATURATION=10020 CMD_CAMERA_TELE_GET_SATURATION value
 * @property {number} CMD_CAMERA_TELE_SET_HUE=10021 CMD_CAMERA_TELE_SET_HUE value
 * @property {number} CMD_CAMERA_TELE_GET_HUE=10022 CMD_CAMERA_TELE_GET_HUE value
 * @property {number} CMD_CAMERA_TELE_SET_SHARPNESS=10023 CMD_CAMERA_TELE_SET_SHARPNESS value
 * @property {number} CMD_CAMERA_TELE_GET_SHARPNESS=10024 CMD_CAMERA_TELE_GET_SHARPNESS value
 * @property {number} CMD_CAMERA_TELE_SET_WB_MODE=10025 CMD_CAMERA_TELE_SET_WB_MODE value
 * @property {number} CMD_CAMERA_TELE_GET_WB_MODE=10026 CMD_CAMERA_TELE_GET_WB_MODE value
 * @property {number} CMD_CAMERA_TELE_SET_WB_SCENE=10027 CMD_CAMERA_TELE_SET_WB_SCENE value
 * @property {number} CMD_CAMERA_TELE_GET_WB_SCENE=10028 CMD_CAMERA_TELE_GET_WB_SCENE value
 * @property {number} CMD_CAMERA_TELE_SET_WB_CT=10029 CMD_CAMERA_TELE_SET_WB_CT value
 * @property {number} CMD_CAMERA_TELE_GET_WB_CT=10030 CMD_CAMERA_TELE_GET_WB_CT value
 * @property {number} CMD_CAMERA_TELE_SET_IRCUT=10031 CMD_CAMERA_TELE_SET_IRCUT value
 * @property {number} CMD_CAMERA_TELE_GET_IRCUT=10032 CMD_CAMERA_TELE_GET_IRCUT value
 * @property {number} CMD_CAMERA_TELE_START_TIMELAPSE_PHOTO=10033 CMD_CAMERA_TELE_START_TIMELAPSE_PHOTO value
 * @property {number} CMD_CAMERA_TELE_STOP_TIMELAPSE_PHOTO=10034 CMD_CAMERA_TELE_STOP_TIMELAPSE_PHOTO value
 * @property {number} CMD_CAMERA_TELE_SET_ALL_PARAMS=10035 CMD_CAMERA_TELE_SET_ALL_PARAMS value
 * @property {number} CMD_CAMERA_TELE_GET_ALL_PARAMS=10036 CMD_CAMERA_TELE_GET_ALL_PARAMS value
 * @property {number} CMD_CAMERA_TELE_SET_FEATURE_PARAM=10037 CMD_CAMERA_TELE_SET_FEATURE_PARAM value
 * @property {number} CMD_CAMERA_TELE_GET_ALL_FEATURE_PARAMS=10038 CMD_CAMERA_TELE_GET_ALL_FEATURE_PARAMS value
 * @property {number} CMD_CAMERA_TELE_GET_SYSTEM_WORKING_STATE=10039 CMD_CAMERA_TELE_GET_SYSTEM_WORKING_STATE value
 * @property {number} CMD_CAMERA_TELE_SET_JPG_QUALITY=10040 CMD_CAMERA_TELE_SET_JPG_QUALITY value
 * @property {number} CMD_CAMERA_TELE_PHOTO_RAW=10041 CMD_CAMERA_TELE_PHOTO_RAW value
 * @property {number} CMD_CAMERA_TELE_SET_RTSP_BITRATE_TYPE=10042 CMD_CAMERA_TELE_SET_RTSP_BITRATE_TYPE value
 * @property {number} CMD_ASTRO_START_CALIBRATION=11000 CMD_ASTRO_START_CALIBRATION value
 * @property {number} CMD_ASTRO_STOP_CALIBRATION=11001 CMD_ASTRO_STOP_CALIBRATION value
 * @property {number} CMD_ASTRO_START_GOTO_DSO=11002 CMD_ASTRO_START_GOTO_DSO value
 * @property {number} CMD_ASTRO_START_GOTO_SOLAR_SYSTEM=11003 CMD_ASTRO_START_GOTO_SOLAR_SYSTEM value
 * @property {number} CMD_ASTRO_STOP_GOTO=11004 CMD_ASTRO_STOP_GOTO value
 * @property {number} CMD_ASTRO_START_CAPTURE_RAW_LIVE_STACKING=11005 CMD_ASTRO_START_CAPTURE_RAW_LIVE_STACKING value
 * @property {number} CMD_ASTRO_STOP_CAPTURE_RAW_LIVE_STACKING=11006 CMD_ASTRO_STOP_CAPTURE_RAW_LIVE_STACKING value
 * @property {number} CMD_ASTRO_START_CAPTURE_RAW_DARK=11007 CMD_ASTRO_START_CAPTURE_RAW_DARK value
 * @property {number} CMD_ASTRO_STOP_CAPTURE_RAW_DARK=11008 CMD_ASTRO_STOP_CAPTURE_RAW_DARK value
 * @property {number} CMD_ASTRO_CHECK_GOT_DARK=11009 CMD_ASTRO_CHECK_GOT_DARK value
 * @property {number} CMD_ASTRO_GO_LIVE=11010 CMD_ASTRO_GO_LIVE value
 * @property {number} CMD_ASTRO_START_TRACK_SPECIAL_TARGET=11011 CMD_ASTRO_START_TRACK_SPECIAL_TARGET value
 * @property {number} CMD_ASTRO_STOP_TRACK_SPECIAL_TARGET=11012 CMD_ASTRO_STOP_TRACK_SPECIAL_TARGET value
 * @property {number} CMD_ASTRO_START_ONE_CLICK_GOTO_DSO=11013 CMD_ASTRO_START_ONE_CLICK_GOTO_DSO value
 * @property {number} CMD_ASTRO_START_ONE_CLICK_GOTO_SOLAR_SYSTEM=11014 CMD_ASTRO_START_ONE_CLICK_GOTO_SOLAR_SYSTEM value
 * @property {number} CMD_ASTRO_STOP_ONE_CLICK_GOTO=11015 CMD_ASTRO_STOP_ONE_CLICK_GOTO value
 * @property {number} CMD_ASTRO_START_WIDE_CAPTURE_LIVE_STACKING=11016 CMD_ASTRO_START_WIDE_CAPTURE_LIVE_STACKING value
 * @property {number} CMD_ASTRO_STOP_WIDE_CAPTURE_LIVE_STACKING=11017 CMD_ASTRO_STOP_WIDE_CAPTURE_LIVE_STACKING value
 * @property {number} CMD_ASTRO_START_EQ_SOLVING=11018 CMD_ASTRO_START_EQ_SOLVING value
 * @property {number} CMD_ASTRO_STOP_EQ_SOLVING=11019 CMD_ASTRO_STOP_EQ_SOLVING value
 * @property {number} CMD_ASTRO_WIDE_GO_LIVE=11020 CMD_ASTRO_WIDE_GO_LIVE value
 * @property {number} CMD_ASTRO_START_CAPTURE_RAW_DARK_WITH_PARAM=11021 CMD_ASTRO_START_CAPTURE_RAW_DARK_WITH_PARAM value
 * @property {number} CMD_ASTRO_STOP_CAPTURE_RAW_DARK_WITH_PARAM=11022 CMD_ASTRO_STOP_CAPTURE_RAW_DARK_WITH_PARAM value
 * @property {number} CMD_ASTRO_GET_DARK_FRAME_LIST=11023 CMD_ASTRO_GET_DARK_FRAME_LIST value
 * @property {number} CMD_ASTRO_DEL_DARK_FRAME_LIST=11024 CMD_ASTRO_DEL_DARK_FRAME_LIST value
 * @property {number} CMD_ASTRO_START_CAPTURE_WIDE_RAW_DARK_WITH_PARAM=11025 CMD_ASTRO_START_CAPTURE_WIDE_RAW_DARK_WITH_PARAM value
 * @property {number} CMD_ASTRO_STOP_CAPTURE_WIDE_RAW_DARK_WITH_PARAM=11026 CMD_ASTRO_STOP_CAPTURE_WIDE_RAW_DARK_WITH_PARAM value
 * @property {number} CMD_ASTRO_GET_WIDE_DARK_FRAME_LIST=11027 CMD_ASTRO_GET_WIDE_DARK_FRAME_LIST value
 * @property {number} CMD_ASTRO_DEL_WIDE_DARK_FRAME_LIST=11028 CMD_ASTRO_DEL_WIDE_DARK_FRAME_LIST value
 * @property {number} CMD_CAMERA_WIDE_OPEN_CAMERA=12000 CMD_CAMERA_WIDE_OPEN_CAMERA value
 * @property {number} CMD_CAMERA_WIDE_CLOSE_CAMERA=12001 CMD_CAMERA_WIDE_CLOSE_CAMERA value
 * @property {number} CMD_CAMERA_WIDE_SET_EXP_MODE=12002 CMD_CAMERA_WIDE_SET_EXP_MODE value
 * @property {number} CMD_CAMERA_WIDE_GET_EXP_MODE=12003 CMD_CAMERA_WIDE_GET_EXP_MODE value
 * @property {number} CMD_CAMERA_WIDE_SET_EXP=12004 CMD_CAMERA_WIDE_SET_EXP value
 * @property {number} CMD_CAMERA_WIDE_GET_EXP=12005 CMD_CAMERA_WIDE_GET_EXP value
 * @property {number} CMD_CAMERA_WIDE_SET_GAIN=12006 CMD_CAMERA_WIDE_SET_GAIN value
 * @property {number} CMD_CAMERA_WIDE_GET_GAIN=12007 CMD_CAMERA_WIDE_GET_GAIN value
 * @property {number} CMD_CAMERA_WIDE_SET_BRIGHTNESS=12008 CMD_CAMERA_WIDE_SET_BRIGHTNESS value
 * @property {number} CMD_CAMERA_WIDE_GET_BRIGHTNESS=12009 CMD_CAMERA_WIDE_GET_BRIGHTNESS value
 * @property {number} CMD_CAMERA_WIDE_SET_CONTRAST=12010 CMD_CAMERA_WIDE_SET_CONTRAST value
 * @property {number} CMD_CAMERA_WIDE_GET_CONTRAST=12011 CMD_CAMERA_WIDE_GET_CONTRAST value
 * @property {number} CMD_CAMERA_WIDE_SET_SATURATION=12012 CMD_CAMERA_WIDE_SET_SATURATION value
 * @property {number} CMD_CAMERA_WIDE_GET_SATURATION=12013 CMD_CAMERA_WIDE_GET_SATURATION value
 * @property {number} CMD_CAMERA_WIDE_SET_HUE=12014 CMD_CAMERA_WIDE_SET_HUE value
 * @property {number} CMD_CAMERA_WIDE_GET_HUE=12015 CMD_CAMERA_WIDE_GET_HUE value
 * @property {number} CMD_CAMERA_WIDE_SET_SHARPNESS=12016 CMD_CAMERA_WIDE_SET_SHARPNESS value
 * @property {number} CMD_CAMERA_WIDE_GET_SHARPNESS=12017 CMD_CAMERA_WIDE_GET_SHARPNESS value
 * @property {number} CMD_CAMERA_WIDE_SET_WB_MODE=12018 CMD_CAMERA_WIDE_SET_WB_MODE value
 * @property {number} CMD_CAMERA_WIDE_GET_WB_MODE=12019 CMD_CAMERA_WIDE_GET_WB_MODE value
 * @property {number} CMD_CAMERA_WIDE_SET_WB_CT=12020 CMD_CAMERA_WIDE_SET_WB_CT value
 * @property {number} CMD_CAMERA_WIDE_GET_WB_CT=12021 CMD_CAMERA_WIDE_GET_WB_CT value
 * @property {number} CMD_CAMERA_WIDE_PHOTOGRAPH=12022 CMD_CAMERA_WIDE_PHOTOGRAPH value
 * @property {number} CMD_CAMERA_WIDE_BURST=12023 CMD_CAMERA_WIDE_BURST value
 * @property {number} CMD_CAMERA_WIDE_STOP_BURST=12024 CMD_CAMERA_WIDE_STOP_BURST value
 * @property {number} CMD_CAMERA_WIDE_START_TIMELAPSE_PHOTO=12025 CMD_CAMERA_WIDE_START_TIMELAPSE_PHOTO value
 * @property {number} CMD_CAMERA_WIDE_STOP_TIMELAPSE_PHOTO=12026 CMD_CAMERA_WIDE_STOP_TIMELAPSE_PHOTO value
 * @property {number} CMD_CAMERA_WIDE_GET_ALL_PARAMS=12027 CMD_CAMERA_WIDE_GET_ALL_PARAMS value
 * @property {number} CMD_CAMERA_WIDE_SET_ALL_PARAMS=12028 CMD_CAMERA_WIDE_SET_ALL_PARAMS value
 * @property {number} CMD_CAMERA_WIDE_START_RECORD=12030 CMD_CAMERA_WIDE_START_RECORD value
 * @property {number} CMD_CAMERA_WIDE_STOP_RECORD=12031 CMD_CAMERA_WIDE_STOP_RECORD value
 * @property {number} CMD_SYSTEM_SET_TIME=13000 CMD_SYSTEM_SET_TIME value
 * @property {number} CMD_SYSTEM_SET_TIME_ZONE=13001 CMD_SYSTEM_SET_TIME_ZONE value
 * @property {number} CMD_SYSTEM_SET_MTP_MODE=13002 CMD_SYSTEM_SET_MTP_MODE value
 * @property {number} CMD_SYSTEM_SET_CPU_MODE=13003 CMD_SYSTEM_SET_CPU_MODE value
 * @property {number} CMD_SYSTEM_SET_MASTERLOCK=13004 CMD_SYSTEM_SET_MASTERLOCK value
 * @property {number} CMD_RGB_POWER_OPEN_RGB=13500 CMD_RGB_POWER_OPEN_RGB value
 * @property {number} CMD_RGB_POWER_CLOSE_RGB=13501 CMD_RGB_POWER_CLOSE_RGB value
 * @property {number} CMD_RGB_POWER_POWER_DOWN=13502 CMD_RGB_POWER_POWER_DOWN value
 * @property {number} CMD_RGB_POWER_POWERIND_ON=13503 CMD_RGB_POWER_POWERIND_ON value
 * @property {number} CMD_RGB_POWER_POWERIND_OFF=13504 CMD_RGB_POWER_POWERIND_OFF value
 * @property {number} CMD_RGB_POWER_REBOOT=13505 CMD_RGB_POWER_REBOOT value
 * @property {number} CMD_STEP_MOTOR_RUN=14000 CMD_STEP_MOTOR_RUN value
 * @property {number} CMD_STEP_MOTOR_RUN_TO=14001 CMD_STEP_MOTOR_RUN_TO value
 * @property {number} CMD_STEP_MOTOR_STOP=14002 CMD_STEP_MOTOR_STOP value
 * @property {number} CMD_STEP_MOTOR_RESET=14003 CMD_STEP_MOTOR_RESET value
 * @property {number} CMD_STEP_MOTOR_CHANGE_SPEED=14004 CMD_STEP_MOTOR_CHANGE_SPEED value
 * @property {number} CMD_STEP_MOTOR_CHANGE_DIRECTION=14005 CMD_STEP_MOTOR_CHANGE_DIRECTION value
 * @property {number} CMD_STEP_MOTOR_SERVICE_JOYSTICK=14006 CMD_STEP_MOTOR_SERVICE_JOYSTICK value
 * @property {number} CMD_STEP_MOTOR_SERVICE_JOYSTICK_FIXED_ANGLE=14007 CMD_STEP_MOTOR_SERVICE_JOYSTICK_FIXED_ANGLE value
 * @property {number} CMD_STEP_MOTOR_SERVICE_JOYSTICK_STOP=14008 CMD_STEP_MOTOR_SERVICE_JOYSTICK_STOP value
 * @property {number} CMD_STEP_MOTOR_SERVICE_DUAL_CAMERA_LINKAGE=14009 CMD_STEP_MOTOR_SERVICE_DUAL_CAMERA_LINKAGE value
 * @property {number} CMD_STEP_MOTOR_RUN_IN_PULSE=14010 CMD_STEP_MOTOR_RUN_IN_PULSE value
 * @property {number} CMD_STEP_MOTOR_GET_POSITION=14011 CMD_STEP_MOTOR_GET_POSITION value
 * @property {number} CMD_TRACK_START_TRACK=14800 CMD_TRACK_START_TRACK value
 * @property {number} CMD_TRACK_STOP_TRACK=14801 CMD_TRACK_STOP_TRACK value
 * @property {number} CMD_SENTRY_MODE_START=14802 CMD_SENTRY_MODE_START value
 * @property {number} CMD_SENTRY_MODE_STOP=14803 CMD_SENTRY_MODE_STOP value
 * @property {number} CMD_MOT_START=14804 CMD_MOT_START value
 * @property {number} CMD_MOT_TRACK_ONE=14805 CMD_MOT_TRACK_ONE value
 * @property {number} CMD_UFOTRACK_MODE_START=14806 CMD_UFOTRACK_MODE_START value
 * @property {number} CMD_UFOTRACK_MODE_STOP=14807 CMD_UFOTRACK_MODE_STOP value
 * @property {number} CMD_MOT_WIDE_TRACK_ONE=14808 CMD_MOT_WIDE_TRACK_ONE value
 * @property {number} CMD_WIDE_TELE_TRACK_SWITCH=14809 CMD_WIDE_TELE_TRACK_SWITCH value
 * @property {number} CMD_UFO_HAND_AOTO_MODE=14810 CMD_UFO_HAND_AOTO_MODE value
 * @property {number} CMD_FOCUS_AUTO_FOCUS=15000 CMD_FOCUS_AUTO_FOCUS value
 * @property {number} CMD_FOCUS_MANUAL_SINGLE_STEP_FOCUS=15001 CMD_FOCUS_MANUAL_SINGLE_STEP_FOCUS value
 * @property {number} CMD_FOCUS_START_MANUAL_CONTINU_FOCUS=15002 CMD_FOCUS_START_MANUAL_CONTINU_FOCUS value
 * @property {number} CMD_FOCUS_STOP_MANUAL_CONTINU_FOCUS=15003 CMD_FOCUS_STOP_MANUAL_CONTINU_FOCUS value
 * @property {number} CMD_FOCUS_START_ASTRO_AUTO_FOCUS=15004 CMD_FOCUS_START_ASTRO_AUTO_FOCUS value
 * @property {number} CMD_FOCUS_STOP_ASTRO_AUTO_FOCUS=15005 CMD_FOCUS_STOP_ASTRO_AUTO_FOCUS value
 * @property {number} CMD_NOTIFY_TELE_WIDI_PICTURE_MATCHING=15200 CMD_NOTIFY_TELE_WIDI_PICTURE_MATCHING value
 * @property {number} CMD_NOTIFY_ELE=15201 CMD_NOTIFY_ELE value
 * @property {number} CMD_NOTIFY_CHARGE=15202 CMD_NOTIFY_CHARGE value
 * @property {number} CMD_NOTIFY_SDCARD_INFO=15203 CMD_NOTIFY_SDCARD_INFO value
 * @property {number} CMD_NOTIFY_TELE_RECORD_TIME=15204 CMD_NOTIFY_TELE_RECORD_TIME value
 * @property {number} CMD_NOTIFY_TELE_TIMELAPSE_OUT_TIME=15205 CMD_NOTIFY_TELE_TIMELAPSE_OUT_TIME value
 * @property {number} CMD_NOTIFY_STATE_CAPTURE_RAW_DARK=15206 CMD_NOTIFY_STATE_CAPTURE_RAW_DARK value
 * @property {number} CMD_NOTIFY_PROGRASS_CAPTURE_RAW_DARK=15207 CMD_NOTIFY_PROGRASS_CAPTURE_RAW_DARK value
 * @property {number} CMD_NOTIFY_STATE_CAPTURE_RAW_LIVE_STACKING=15208 CMD_NOTIFY_STATE_CAPTURE_RAW_LIVE_STACKING value
 * @property {number} CMD_NOTIFY_PROGRASS_CAPTURE_RAW_LIVE_STACKING=15209 CMD_NOTIFY_PROGRASS_CAPTURE_RAW_LIVE_STACKING value
 * @property {number} CMD_NOTIFY_STATE_ASTRO_CALIBRATION=15210 CMD_NOTIFY_STATE_ASTRO_CALIBRATION value
 * @property {number} CMD_NOTIFY_STATE_ASTRO_GOTO=15211 CMD_NOTIFY_STATE_ASTRO_GOTO value
 * @property {number} CMD_NOTIFY_STATE_ASTRO_TRACKING=15212 CMD_NOTIFY_STATE_ASTRO_TRACKING value
 * @property {number} CMD_NOTIFY_TELE_SET_PARAM=15213 CMD_NOTIFY_TELE_SET_PARAM value
 * @property {number} CMD_NOTIFY_WIDE_SET_PARAM=15214 CMD_NOTIFY_WIDE_SET_PARAM value
 * @property {number} CMD_NOTIFY_TELE_FUNCTION_STATE=15215 CMD_NOTIFY_TELE_FUNCTION_STATE value
 * @property {number} CMD_NOTIFY_WIDE_FUNCTION_STATE=15216 CMD_NOTIFY_WIDE_FUNCTION_STATE value
 * @property {number} CMD_NOTIFY_SET_FEATURE_PARAM=15217 CMD_NOTIFY_SET_FEATURE_PARAM value
 * @property {number} CMD_NOTIFY_TELE_BURST_PROGRESS=15218 CMD_NOTIFY_TELE_BURST_PROGRESS value
 * @property {number} CMD_NOTIFY_PANORAMA_PROGRESS=15219 CMD_NOTIFY_PANORAMA_PROGRESS value
 * @property {number} CMD_NOTIFY_WIDE_BURST_PROGRESS=15220 CMD_NOTIFY_WIDE_BURST_PROGRESS value
 * @property {number} CMD_NOTIFY_RGB_STATE=15221 CMD_NOTIFY_RGB_STATE value
 * @property {number} CMD_NOTIFY_POWER_IND_STATE=15222 CMD_NOTIFY_POWER_IND_STATE value
 * @property {number} CMD_NOTIFY_WS_HOST_SLAVE_MODE=15223 CMD_NOTIFY_WS_HOST_SLAVE_MODE value
 * @property {number} CMD_NOTIFY_MTP_STATE=15224 CMD_NOTIFY_MTP_STATE value
 * @property {number} CMD_NOTIFY_TRACK_RESULT=15225 CMD_NOTIFY_TRACK_RESULT value
 * @property {number} CMD_NOTIFY_WIDE_TIMELAPSE_OUT_TIME=15226 CMD_NOTIFY_WIDE_TIMELAPSE_OUT_TIME value
 * @property {number} CMD_NOTIFY_CPU_MODE=15227 CMD_NOTIFY_CPU_MODE value
 * @property {number} CMD_NOTIFY_STATE_ASTRO_TRACKING_SPECIAL=15228 CMD_NOTIFY_STATE_ASTRO_TRACKING_SPECIAL value
 * @property {number} CMD_NOTIFY_POWER_OFF=15229 CMD_NOTIFY_POWER_OFF value
 * @property {number} CMD_NOTIFY_ALBUM_UPDATE=15230 CMD_NOTIFY_ALBUM_UPDATE value
 * @property {number} CMD_NOTIFY_SENTRY_MODE_STATE=15231 CMD_NOTIFY_SENTRY_MODE_STATE value
 * @property {number} CMD_NOTIFY_SENTRY_MODE_TRACK_RESULT=15232 CMD_NOTIFY_SENTRY_MODE_TRACK_RESULT value
 * @property {number} CMD_NOTIFY_STATE_ASTRO_ONE_CLICK_GOTO=15233 CMD_NOTIFY_STATE_ASTRO_ONE_CLICK_GOTO value
 * @property {number} CMD_NOTIFY_STREAM_TYPE=15234 CMD_NOTIFY_STREAM_TYPE value
 * @property {number} CMD_NOTIFY_WIDE_RECORD_TIME=15235 CMD_NOTIFY_WIDE_RECORD_TIME value
 * @property {number} CMD_NOTIFY_STATE_WIDE_CAPTURE_RAW_LIVE_STACKING=15236 CMD_NOTIFY_STATE_WIDE_CAPTURE_RAW_LIVE_STACKING value
 * @property {number} CMD_NOTIFY_PROGRASS_WIDE_CAPTURE_RAW_LIVE_STACKING=15237 CMD_NOTIFY_PROGRASS_WIDE_CAPTURE_RAW_LIVE_STACKING value
 * @property {number} CMD_NOTIFY_MULTI_TRACK_RESULT=15238 CMD_NOTIFY_MULTI_TRACK_RESULT value
 * @property {number} CMD_NOTIFY_EQ_SOLVING_STATE=15239 CMD_NOTIFY_EQ_SOLVING_STATE value
 * @property {number} CMD_NOTIFY_UFO_MODE_STATE=15240 CMD_NOTIFY_UFO_MODE_STATE value
 * @property {number} CMD_NOTIFY_TELE_LONG_EXP_PROGRESS=15241 CMD_NOTIFY_TELE_LONG_EXP_PROGRESS value
 * @property {number} CMD_NOTIFY_WIDE_LONG_EXP_PROGRESS=15242 CMD_NOTIFY_WIDE_LONG_EXP_PROGRESS value
 * @property {number} CMD_NOTIFY_TEMPERATURE=15243 CMD_NOTIFY_TEMPERATURE value
 * @property {number} CMD_NOTIFY_PANORAMA_UPLOAD_COMPRESS_PROGRESS=15244 CMD_NOTIFY_PANORAMA_UPLOAD_COMPRESS_PROGRESS value
 * @property {number} CMD_NOTIFY_PANORAMA_UPLOAD_UPLOAD_PROGRESS=15245 CMD_NOTIFY_PANORAMA_UPLOAD_UPLOAD_PROGRESS value
 * @property {number} CMD_NOTIFY_PANORAMA_UPLOAD_COMPLETE=15246 CMD_NOTIFY_PANORAMA_UPLOAD_COMPLETE value
 * @property {number} CMD_NOTIFY_STATE_CAPTURE_WIDE_RAW_DARK=15247 CMD_NOTIFY_STATE_CAPTURE_WIDE_RAW_DARK value
 * @property {number} CMD_NOTIFY_SHOOTING_SCHEDULE_RESULT_AND_STATE=15248 CMD_NOTIFY_SHOOTING_SCHEDULE_RESULT_AND_STATE value
 * @property {number} CMD_NOTIFY_SHOOTING_TASK_STATE=15249 CMD_NOTIFY_SHOOTING_TASK_STATE value
 * @property {number} CMD_NOTIFY_SKY_SEACHER_STATE=15250 CMD_NOTIFY_SKY_SEACHER_STATE value
 * @property {number} CMD_NOTIFY_WIDE_MULTI_TRACK_RESULT=15251 CMD_NOTIFY_WIDE_MULTI_TRACK_RESULT value
 * @property {number} CMD_NOTIFY_WIDE_TRACK_RESULT=15252 CMD_NOTIFY_WIDE_TRACK_RESULT value
 * @property {number} CMD_NOTIFY_FOCUS=15257 CMD_NOTIFY_FOCUS value
 * @property {number} CMD_PANORAMA_START_GRID=15500 CMD_PANORAMA_START_GRID value
 * @property {number} CMD_PANORAMA_STOP=15501 CMD_PANORAMA_STOP value
 * @property {number} CMD_PANORAMA_START_EULER_RANGE=15502 CMD_PANORAMA_START_EULER_RANGE value
 */
$root.DwarfCMD = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "NO_CMD")] = 0;
  values[(valuesById[10000] = "CMD_CAMERA_TELE_OPEN_CAMERA")] = 10000;
  values[(valuesById[10001] = "CMD_CAMERA_TELE_CLOSE_CAMERA")] = 10001;
  values[(valuesById[10002] = "CMD_CAMERA_TELE_PHOTOGRAPH")] = 10002;
  values[(valuesById[10003] = "CMD_CAMERA_TELE_BURST")] = 10003;
  values[(valuesById[10004] = "CMD_CAMERA_TELE_STOP_BURST")] = 10004;
  values[(valuesById[10005] = "CMD_CAMERA_TELE_START_RECORD")] = 10005;
  values[(valuesById[10006] = "CMD_CAMERA_TELE_STOP_RECORD")] = 10006;
  values[(valuesById[10007] = "CMD_CAMERA_TELE_SET_EXP_MODE")] = 10007;
  values[(valuesById[10008] = "CMD_CAMERA_TELE_GET_EXP_MODE")] = 10008;
  values[(valuesById[10009] = "CMD_CAMERA_TELE_SET_EXP")] = 10009;
  values[(valuesById[10010] = "CMD_CAMERA_TELE_GET_EXP")] = 10010;
  values[(valuesById[10011] = "CMD_CAMERA_TELE_SET_GAIN_MODE")] = 10011;
  values[(valuesById[10012] = "CMD_CAMERA_TELE_GET_GAIN_MODE")] = 10012;
  values[(valuesById[10013] = "CMD_CAMERA_TELE_SET_GAIN")] = 10013;
  values[(valuesById[10014] = "CMD_CAMERA_TELE_GET_GAIN")] = 10014;
  values[(valuesById[10015] = "CMD_CAMERA_TELE_SET_BRIGHTNESS")] = 10015;
  values[(valuesById[10016] = "CMD_CAMERA_TELE_GET_BRIGHTNESS")] = 10016;
  values[(valuesById[10017] = "CMD_CAMERA_TELE_SET_CONTRAST")] = 10017;
  values[(valuesById[10018] = "CMD_CAMERA_TELE_GET_CONTRAST")] = 10018;
  values[(valuesById[10019] = "CMD_CAMERA_TELE_SET_SATURATION")] = 10019;
  values[(valuesById[10020] = "CMD_CAMERA_TELE_GET_SATURATION")] = 10020;
  values[(valuesById[10021] = "CMD_CAMERA_TELE_SET_HUE")] = 10021;
  values[(valuesById[10022] = "CMD_CAMERA_TELE_GET_HUE")] = 10022;
  values[(valuesById[10023] = "CMD_CAMERA_TELE_SET_SHARPNESS")] = 10023;
  values[(valuesById[10024] = "CMD_CAMERA_TELE_GET_SHARPNESS")] = 10024;
  values[(valuesById[10025] = "CMD_CAMERA_TELE_SET_WB_MODE")] = 10025;
  values[(valuesById[10026] = "CMD_CAMERA_TELE_GET_WB_MODE")] = 10026;
  values[(valuesById[10027] = "CMD_CAMERA_TELE_SET_WB_SCENE")] = 10027;
  values[(valuesById[10028] = "CMD_CAMERA_TELE_GET_WB_SCENE")] = 10028;
  values[(valuesById[10029] = "CMD_CAMERA_TELE_SET_WB_CT")] = 10029;
  values[(valuesById[10030] = "CMD_CAMERA_TELE_GET_WB_CT")] = 10030;
  values[(valuesById[10031] = "CMD_CAMERA_TELE_SET_IRCUT")] = 10031;
  values[(valuesById[10032] = "CMD_CAMERA_TELE_GET_IRCUT")] = 10032;
  values[(valuesById[10033] = "CMD_CAMERA_TELE_START_TIMELAPSE_PHOTO")] = 10033;
  values[(valuesById[10034] = "CMD_CAMERA_TELE_STOP_TIMELAPSE_PHOTO")] = 10034;
  values[(valuesById[10035] = "CMD_CAMERA_TELE_SET_ALL_PARAMS")] = 10035;
  values[(valuesById[10036] = "CMD_CAMERA_TELE_GET_ALL_PARAMS")] = 10036;
  values[(valuesById[10037] = "CMD_CAMERA_TELE_SET_FEATURE_PARAM")] = 10037;
  values[
    (valuesById[10038] = "CMD_CAMERA_TELE_GET_ALL_FEATURE_PARAMS")
  ] = 10038;
  values[
    (valuesById[10039] = "CMD_CAMERA_TELE_GET_SYSTEM_WORKING_STATE")
  ] = 10039;
  values[(valuesById[10040] = "CMD_CAMERA_TELE_SET_JPG_QUALITY")] = 10040;
  values[(valuesById[10041] = "CMD_CAMERA_TELE_PHOTO_RAW")] = 10041;
  values[(valuesById[10042] = "CMD_CAMERA_TELE_SET_RTSP_BITRATE_TYPE")] = 10042;
  values[(valuesById[11000] = "CMD_ASTRO_START_CALIBRATION")] = 11000;
  values[(valuesById[11001] = "CMD_ASTRO_STOP_CALIBRATION")] = 11001;
  values[(valuesById[11002] = "CMD_ASTRO_START_GOTO_DSO")] = 11002;
  values[(valuesById[11003] = "CMD_ASTRO_START_GOTO_SOLAR_SYSTEM")] = 11003;
  values[(valuesById[11004] = "CMD_ASTRO_STOP_GOTO")] = 11004;
  values[
    (valuesById[11005] = "CMD_ASTRO_START_CAPTURE_RAW_LIVE_STACKING")
  ] = 11005;
  values[
    (valuesById[11006] = "CMD_ASTRO_STOP_CAPTURE_RAW_LIVE_STACKING")
  ] = 11006;
  values[(valuesById[11007] = "CMD_ASTRO_START_CAPTURE_RAW_DARK")] = 11007;
  values[(valuesById[11008] = "CMD_ASTRO_STOP_CAPTURE_RAW_DARK")] = 11008;
  values[(valuesById[11009] = "CMD_ASTRO_CHECK_GOT_DARK")] = 11009;
  values[(valuesById[11010] = "CMD_ASTRO_GO_LIVE")] = 11010;
  values[(valuesById[11011] = "CMD_ASTRO_START_TRACK_SPECIAL_TARGET")] = 11011;
  values[(valuesById[11012] = "CMD_ASTRO_STOP_TRACK_SPECIAL_TARGET")] = 11012;
  values[(valuesById[11013] = "CMD_ASTRO_START_ONE_CLICK_GOTO_DSO")] = 11013;
  values[
    (valuesById[11014] = "CMD_ASTRO_START_ONE_CLICK_GOTO_SOLAR_SYSTEM")
  ] = 11014;
  values[(valuesById[11015] = "CMD_ASTRO_STOP_ONE_CLICK_GOTO")] = 11015;
  values[
    (valuesById[11016] = "CMD_ASTRO_START_WIDE_CAPTURE_LIVE_STACKING")
  ] = 11016;
  values[
    (valuesById[11017] = "CMD_ASTRO_STOP_WIDE_CAPTURE_LIVE_STACKING")
  ] = 11017;
  values[(valuesById[11018] = "CMD_ASTRO_START_EQ_SOLVING")] = 11018;
  values[(valuesById[11019] = "CMD_ASTRO_STOP_EQ_SOLVING")] = 11019;
  values[(valuesById[11020] = "CMD_ASTRO_WIDE_GO_LIVE")] = 11020;
  values[
    (valuesById[11021] = "CMD_ASTRO_START_CAPTURE_RAW_DARK_WITH_PARAM")
  ] = 11021;
  values[
    (valuesById[11022] = "CMD_ASTRO_STOP_CAPTURE_RAW_DARK_WITH_PARAM")
  ] = 11022;
  values[(valuesById[11023] = "CMD_ASTRO_GET_DARK_FRAME_LIST")] = 11023;
  values[(valuesById[11024] = "CMD_ASTRO_DEL_DARK_FRAME_LIST")] = 11024;
  values[
    (valuesById[11025] = "CMD_ASTRO_START_CAPTURE_WIDE_RAW_DARK_WITH_PARAM")
  ] = 11025;
  values[
    (valuesById[11026] = "CMD_ASTRO_STOP_CAPTURE_WIDE_RAW_DARK_WITH_PARAM")
  ] = 11026;
  values[(valuesById[11027] = "CMD_ASTRO_GET_WIDE_DARK_FRAME_LIST")] = 11027;
  values[(valuesById[11028] = "CMD_ASTRO_DEL_WIDE_DARK_FRAME_LIST")] = 11028;
  values[(valuesById[12000] = "CMD_CAMERA_WIDE_OPEN_CAMERA")] = 12000;
  values[(valuesById[12001] = "CMD_CAMERA_WIDE_CLOSE_CAMERA")] = 12001;
  values[(valuesById[12002] = "CMD_CAMERA_WIDE_SET_EXP_MODE")] = 12002;
  values[(valuesById[12003] = "CMD_CAMERA_WIDE_GET_EXP_MODE")] = 12003;
  values[(valuesById[12004] = "CMD_CAMERA_WIDE_SET_EXP")] = 12004;
  values[(valuesById[12005] = "CMD_CAMERA_WIDE_GET_EXP")] = 12005;
  values[(valuesById[12006] = "CMD_CAMERA_WIDE_SET_GAIN")] = 12006;
  values[(valuesById[12007] = "CMD_CAMERA_WIDE_GET_GAIN")] = 12007;
  values[(valuesById[12008] = "CMD_CAMERA_WIDE_SET_BRIGHTNESS")] = 12008;
  values[(valuesById[12009] = "CMD_CAMERA_WIDE_GET_BRIGHTNESS")] = 12009;
  values[(valuesById[12010] = "CMD_CAMERA_WIDE_SET_CONTRAST")] = 12010;
  values[(valuesById[12011] = "CMD_CAMERA_WIDE_GET_CONTRAST")] = 12011;
  values[(valuesById[12012] = "CMD_CAMERA_WIDE_SET_SATURATION")] = 12012;
  values[(valuesById[12013] = "CMD_CAMERA_WIDE_GET_SATURATION")] = 12013;
  values[(valuesById[12014] = "CMD_CAMERA_WIDE_SET_HUE")] = 12014;
  values[(valuesById[12015] = "CMD_CAMERA_WIDE_GET_HUE")] = 12015;
  values[(valuesById[12016] = "CMD_CAMERA_WIDE_SET_SHARPNESS")] = 12016;
  values[(valuesById[12017] = "CMD_CAMERA_WIDE_GET_SHARPNESS")] = 12017;
  values[(valuesById[12018] = "CMD_CAMERA_WIDE_SET_WB_MODE")] = 12018;
  values[(valuesById[12019] = "CMD_CAMERA_WIDE_GET_WB_MODE")] = 12019;
  values[(valuesById[12020] = "CMD_CAMERA_WIDE_SET_WB_CT")] = 12020;
  values[(valuesById[12021] = "CMD_CAMERA_WIDE_GET_WB_CT")] = 12021;
  values[(valuesById[12022] = "CMD_CAMERA_WIDE_PHOTOGRAPH")] = 12022;
  values[(valuesById[12023] = "CMD_CAMERA_WIDE_BURST")] = 12023;
  values[(valuesById[12024] = "CMD_CAMERA_WIDE_STOP_BURST")] = 12024;
  values[(valuesById[12025] = "CMD_CAMERA_WIDE_START_TIMELAPSE_PHOTO")] = 12025;
  values[(valuesById[12026] = "CMD_CAMERA_WIDE_STOP_TIMELAPSE_PHOTO")] = 12026;
  values[(valuesById[12027] = "CMD_CAMERA_WIDE_GET_ALL_PARAMS")] = 12027;
  values[(valuesById[12028] = "CMD_CAMERA_WIDE_SET_ALL_PARAMS")] = 12028;
  values[(valuesById[12030] = "CMD_CAMERA_WIDE_START_RECORD")] = 12030;
  values[(valuesById[12031] = "CMD_CAMERA_WIDE_STOP_RECORD")] = 12031;
  values[(valuesById[13000] = "CMD_SYSTEM_SET_TIME")] = 13000;
  values[(valuesById[13001] = "CMD_SYSTEM_SET_TIME_ZONE")] = 13001;
  values[(valuesById[13002] = "CMD_SYSTEM_SET_MTP_MODE")] = 13002;
  values[(valuesById[13003] = "CMD_SYSTEM_SET_CPU_MODE")] = 13003;
  values[(valuesById[13004] = "CMD_SYSTEM_SET_MASTERLOCK")] = 13004;
  values[(valuesById[13500] = "CMD_RGB_POWER_OPEN_RGB")] = 13500;
  values[(valuesById[13501] = "CMD_RGB_POWER_CLOSE_RGB")] = 13501;
  values[(valuesById[13502] = "CMD_RGB_POWER_POWER_DOWN")] = 13502;
  values[(valuesById[13503] = "CMD_RGB_POWER_POWERIND_ON")] = 13503;
  values[(valuesById[13504] = "CMD_RGB_POWER_POWERIND_OFF")] = 13504;
  values[(valuesById[13505] = "CMD_RGB_POWER_REBOOT")] = 13505;
  values[(valuesById[14000] = "CMD_STEP_MOTOR_RUN")] = 14000;
  values[(valuesById[14001] = "CMD_STEP_MOTOR_RUN_TO")] = 14001;
  values[(valuesById[14002] = "CMD_STEP_MOTOR_STOP")] = 14002;
  values[(valuesById[14003] = "CMD_STEP_MOTOR_RESET")] = 14003;
  values[(valuesById[14004] = "CMD_STEP_MOTOR_CHANGE_SPEED")] = 14004;
  values[(valuesById[14005] = "CMD_STEP_MOTOR_CHANGE_DIRECTION")] = 14005;
  values[(valuesById[14006] = "CMD_STEP_MOTOR_SERVICE_JOYSTICK")] = 14006;
  values[
    (valuesById[14007] = "CMD_STEP_MOTOR_SERVICE_JOYSTICK_FIXED_ANGLE")
  ] = 14007;
  values[(valuesById[14008] = "CMD_STEP_MOTOR_SERVICE_JOYSTICK_STOP")] = 14008;
  values[
    (valuesById[14009] = "CMD_STEP_MOTOR_SERVICE_DUAL_CAMERA_LINKAGE")
  ] = 14009;
  values[(valuesById[14010] = "CMD_STEP_MOTOR_RUN_IN_PULSE")] = 14010;
  values[(valuesById[14011] = "CMD_STEP_MOTOR_GET_POSITION")] = 14011;
  values[(valuesById[14800] = "CMD_TRACK_START_TRACK")] = 14800;
  values[(valuesById[14801] = "CMD_TRACK_STOP_TRACK")] = 14801;
  values[(valuesById[14802] = "CMD_SENTRY_MODE_START")] = 14802;
  values[(valuesById[14803] = "CMD_SENTRY_MODE_STOP")] = 14803;
  values[(valuesById[14804] = "CMD_MOT_START")] = 14804;
  values[(valuesById[14805] = "CMD_MOT_TRACK_ONE")] = 14805;
  values[(valuesById[14806] = "CMD_UFOTRACK_MODE_START")] = 14806;
  values[(valuesById[14807] = "CMD_UFOTRACK_MODE_STOP")] = 14807;
  values[(valuesById[14808] = "CMD_MOT_WIDE_TRACK_ONE")] = 14808;
  values[(valuesById[14809] = "CMD_WIDE_TELE_TRACK_SWITCH")] = 14809;
  values[(valuesById[14810] = "CMD_UFO_HAND_AOTO_MODE")] = 14810;
  values[(valuesById[15000] = "CMD_FOCUS_AUTO_FOCUS")] = 15000;
  values[(valuesById[15001] = "CMD_FOCUS_MANUAL_SINGLE_STEP_FOCUS")] = 15001;
  values[(valuesById[15002] = "CMD_FOCUS_START_MANUAL_CONTINU_FOCUS")] = 15002;
  values[(valuesById[15003] = "CMD_FOCUS_STOP_MANUAL_CONTINU_FOCUS")] = 15003;
  values[(valuesById[15004] = "CMD_FOCUS_START_ASTRO_AUTO_FOCUS")] = 15004;
  values[(valuesById[15005] = "CMD_FOCUS_STOP_ASTRO_AUTO_FOCUS")] = 15005;
  values[(valuesById[15200] = "CMD_NOTIFY_TELE_WIDI_PICTURE_MATCHING")] = 15200;
  values[(valuesById[15201] = "CMD_NOTIFY_ELE")] = 15201;
  values[(valuesById[15202] = "CMD_NOTIFY_CHARGE")] = 15202;
  values[(valuesById[15203] = "CMD_NOTIFY_SDCARD_INFO")] = 15203;
  values[(valuesById[15204] = "CMD_NOTIFY_TELE_RECORD_TIME")] = 15204;
  values[(valuesById[15205] = "CMD_NOTIFY_TELE_TIMELAPSE_OUT_TIME")] = 15205;
  values[(valuesById[15206] = "CMD_NOTIFY_STATE_CAPTURE_RAW_DARK")] = 15206;
  values[(valuesById[15207] = "CMD_NOTIFY_PROGRASS_CAPTURE_RAW_DARK")] = 15207;
  values[
    (valuesById[15208] = "CMD_NOTIFY_STATE_CAPTURE_RAW_LIVE_STACKING")
  ] = 15208;
  values[
    (valuesById[15209] = "CMD_NOTIFY_PROGRASS_CAPTURE_RAW_LIVE_STACKING")
  ] = 15209;
  values[(valuesById[15210] = "CMD_NOTIFY_STATE_ASTRO_CALIBRATION")] = 15210;
  values[(valuesById[15211] = "CMD_NOTIFY_STATE_ASTRO_GOTO")] = 15211;
  values[(valuesById[15212] = "CMD_NOTIFY_STATE_ASTRO_TRACKING")] = 15212;
  values[(valuesById[15213] = "CMD_NOTIFY_TELE_SET_PARAM")] = 15213;
  values[(valuesById[15214] = "CMD_NOTIFY_WIDE_SET_PARAM")] = 15214;
  values[(valuesById[15215] = "CMD_NOTIFY_TELE_FUNCTION_STATE")] = 15215;
  values[(valuesById[15216] = "CMD_NOTIFY_WIDE_FUNCTION_STATE")] = 15216;
  values[(valuesById[15217] = "CMD_NOTIFY_SET_FEATURE_PARAM")] = 15217;
  values[(valuesById[15218] = "CMD_NOTIFY_TELE_BURST_PROGRESS")] = 15218;
  values[(valuesById[15219] = "CMD_NOTIFY_PANORAMA_PROGRESS")] = 15219;
  values[(valuesById[15220] = "CMD_NOTIFY_WIDE_BURST_PROGRESS")] = 15220;
  values[(valuesById[15221] = "CMD_NOTIFY_RGB_STATE")] = 15221;
  values[(valuesById[15222] = "CMD_NOTIFY_POWER_IND_STATE")] = 15222;
  values[(valuesById[15223] = "CMD_NOTIFY_WS_HOST_SLAVE_MODE")] = 15223;
  values[(valuesById[15224] = "CMD_NOTIFY_MTP_STATE")] = 15224;
  values[(valuesById[15225] = "CMD_NOTIFY_TRACK_RESULT")] = 15225;
  values[(valuesById[15226] = "CMD_NOTIFY_WIDE_TIMELAPSE_OUT_TIME")] = 15226;
  values[(valuesById[15227] = "CMD_NOTIFY_CPU_MODE")] = 15227;
  values[
    (valuesById[15228] = "CMD_NOTIFY_STATE_ASTRO_TRACKING_SPECIAL")
  ] = 15228;
  values[(valuesById[15229] = "CMD_NOTIFY_POWER_OFF")] = 15229;
  values[(valuesById[15230] = "CMD_NOTIFY_ALBUM_UPDATE")] = 15230;
  values[(valuesById[15231] = "CMD_NOTIFY_SENTRY_MODE_STATE")] = 15231;
  values[(valuesById[15232] = "CMD_NOTIFY_SENTRY_MODE_TRACK_RESULT")] = 15232;
  values[(valuesById[15233] = "CMD_NOTIFY_STATE_ASTRO_ONE_CLICK_GOTO")] = 15233;
  values[(valuesById[15234] = "CMD_NOTIFY_STREAM_TYPE")] = 15234;
  values[(valuesById[15235] = "CMD_NOTIFY_WIDE_RECORD_TIME")] = 15235;
  values[
    (valuesById[15236] = "CMD_NOTIFY_STATE_WIDE_CAPTURE_RAW_LIVE_STACKING")
  ] = 15236;
  values[
    (valuesById[15237] = "CMD_NOTIFY_PROGRASS_WIDE_CAPTURE_RAW_LIVE_STACKING")
  ] = 15237;
  values[(valuesById[15238] = "CMD_NOTIFY_MULTI_TRACK_RESULT")] = 15238;
  values[(valuesById[15239] = "CMD_NOTIFY_EQ_SOLVING_STATE")] = 15239;
  values[(valuesById[15240] = "CMD_NOTIFY_UFO_MODE_STATE")] = 15240;
  values[(valuesById[15241] = "CMD_NOTIFY_TELE_LONG_EXP_PROGRESS")] = 15241;
  values[(valuesById[15242] = "CMD_NOTIFY_WIDE_LONG_EXP_PROGRESS")] = 15242;
  values[(valuesById[15243] = "CMD_NOTIFY_TEMPERATURE")] = 15243;
  values[
    (valuesById[15244] = "CMD_NOTIFY_PANORAMA_UPLOAD_COMPRESS_PROGRESS")
  ] = 15244;
  values[
    (valuesById[15245] = "CMD_NOTIFY_PANORAMA_UPLOAD_UPLOAD_PROGRESS")
  ] = 15245;
  values[(valuesById[15246] = "CMD_NOTIFY_PANORAMA_UPLOAD_COMPLETE")] = 15246;
  values[
    (valuesById[15247] = "CMD_NOTIFY_STATE_CAPTURE_WIDE_RAW_DARK")
  ] = 15247;
  values[
    (valuesById[15248] = "CMD_NOTIFY_SHOOTING_SCHEDULE_RESULT_AND_STATE")
  ] = 15248;
  values[(valuesById[15249] = "CMD_NOTIFY_SHOOTING_TASK_STATE")] = 15249;
  values[(valuesById[15250] = "CMD_NOTIFY_SKY_SEACHER_STATE")] = 15250;
  values[(valuesById[15251] = "CMD_NOTIFY_WIDE_MULTI_TRACK_RESULT")] = 15251;
  values[(valuesById[15252] = "CMD_NOTIFY_WIDE_TRACK_RESULT")] = 15252;
  values[(valuesById[15257] = "CMD_NOTIFY_FOCUS")] = 15257;
  values[(valuesById[15500] = "CMD_PANORAMA_START_GRID")] = 15500;
  values[(valuesById[15501] = "CMD_PANORAMA_STOP")] = 15501;
  values[(valuesById[15502] = "CMD_PANORAMA_START_EULER_RANGE")] = 15502;
  return values;
})();

/**
 * DwarfErrorCode enum.
 * @exports DwarfErrorCode
 * @enum {number}
 * @property {number} OK=0 OK value
 * @property {number} WS_PARSE_PROTOBUF_ERROR=-1 WS_PARSE_PROTOBUF_ERROR value
 * @property {number} WS_SDCARD_NOT_EXIST=-2 WS_SDCARD_NOT_EXIST value
 * @property {number} WS_INVALID_PARAM=-3 WS_INVALID_PARAM value
 * @property {number} WS_SDCARD_WRITE_ERROR=-4 WS_SDCARD_WRITE_ERROR value
 * @property {number} CODE_CAMERA_TELE_OPENED=-10500 CODE_CAMERA_TELE_OPENED value
 * @property {number} CODE_CAMERA_TELE_CLOSED=-10501 CODE_CAMERA_TELE_CLOSED value
 * @property {number} CODE_CAMERA_TELE_ISP_SET_FAILED=-10502 CODE_CAMERA_TELE_ISP_SET_FAILED value
 * @property {number} CODE_CAMERA_TELE_OPEN_FAILED=-10504 CODE_CAMERA_TELE_OPEN_FAILED value
 * @property {number} CODE_CAMERA_TELE_RECORDING=-10506 CODE_CAMERA_TELE_RECORDING value
 * @property {number} CODE_CAMERA_TELE_WORKING_BUSY_STACK=-10507 CODE_CAMERA_TELE_WORKING_BUSY_STACK value
 * @property {number} CODE_CAMERA_TELE_CAPTURE_RAW_FAILED=-10510 CODE_CAMERA_TELE_CAPTURE_RAW_FAILED value
 * @property {number} CODE_CAMERA_TELE_WORKING_BUSY=-10511 CODE_CAMERA_TELE_WORKING_BUSY value
 * @property {number} CODE_ASTRO_PLATE_SOLVING_FAILED=-11500 CODE_ASTRO_PLATE_SOLVING_FAILED value
 * @property {number} CODE_ASTRO_FUNCTION_BUSY=-11501 CODE_ASTRO_FUNCTION_BUSY value
 * @property {number} CODE_ASTRO_DARK_GAIN_OUT_OF_RANGE=-11502 CODE_ASTRO_DARK_GAIN_OUT_OF_RANGE value
 * @property {number} CODE_ASTRO_DARK_NOT_FOUND=-11503 CODE_ASTRO_DARK_NOT_FOUND value
 * @property {number} CODE_ASTRO_CALIBRATION_FAILED=-11504 CODE_ASTRO_CALIBRATION_FAILED value
 * @property {number} CODE_ASTRO_GOTO_FAILED=-11505 CODE_ASTRO_GOTO_FAILED value
 * @property {number} CODE_ASTRO_NEED_GOTO=-11513 CODE_ASTRO_NEED_GOTO value
 * @property {number} CODE_ASTRO_NEED_ADJUST_SHOOT_PARAM=-11514 CODE_ASTRO_NEED_ADJUST_SHOOT_PARAM value
 * @property {number} CODE_ASTRO_EQ_SOLVING_FAILED=-11516 CODE_ASTRO_EQ_SOLVING_FAILED value
 * @property {number} CODE_ASTRO_SKY_SEARCH_FAILED=-11517 CODE_ASTRO_SKY_SEARCH_FAILED value
 * @property {number} CODE_CAMERA_WIDE_OPENED=-12500 CODE_CAMERA_WIDE_OPENED value
 * @property {number} CODE_CAMERA_WIDE_CLOSED=-12501 CODE_CAMERA_WIDE_CLOSED value
 * @property {number} CODE_CAMERA_WIDE_CANNOT_FOUND=-12502 CODE_CAMERA_WIDE_CANNOT_FOUND value
 * @property {number} CODE_CAMERA_WIDE_OPEN_FAILED=-12503 CODE_CAMERA_WIDE_OPEN_FAILED value
 * @property {number} CODE_CAMERA_WIDE_CLOSE_FAILED=-12504 CODE_CAMERA_WIDE_CLOSE_FAILED value
 * @property {number} CODE_CAMERA_WIDE_SET_ISP_FAILED=-12505 CODE_CAMERA_WIDE_SET_ISP_FAILED value
 * @property {number} CODE_CAMERA_WIDE_PHOTOGRAPHING=-12506 CODE_CAMERA_WIDE_PHOTOGRAPHING value
 * @property {number} CODE_CAMERA_WIDE_EXP_TOO_LONG=-12508 CODE_CAMERA_WIDE_EXP_TOO_LONG value
 * @property {number} CODE_SYSTEM_SET_TIME_FAILED=-13300 CODE_SYSTEM_SET_TIME_FAILED value
 * @property {number} CODE_SYSTEM_SET_TIMEZONE_FAILED=-13301 CODE_SYSTEM_SET_TIMEZONE_FAILED value
 * @property {number} CODE_SYSTEM_SETTING_TIMEZONE_FAILED=-13302 CODE_SYSTEM_SETTING_TIMEZONE_FAILED value
 * @property {number} CODE_RGB_POWER_UART_INIT_FAILED=-13800 CODE_RGB_POWER_UART_INIT_FAILED value
 * @property {number} CODE_STEP_MOTOR_INVALID_PARAMETER_ID=-14504 CODE_STEP_MOTOR_INVALID_PARAMETER_ID value
 * @property {number} CODE_STEP_MOTOR_LIMIT_POSITION_WARNING=-14518 CODE_STEP_MOTOR_LIMIT_POSITION_WARNING value
 * @property {number} CODE_STEP_MOTOR_LIMIT_POSITION_HITTED=-14519 CODE_STEP_MOTOR_LIMIT_POSITION_HITTED value
 * @property {number} CODE_STEP_MOTOR_POSITION_NEED_RESET=-14520 CODE_STEP_MOTOR_POSITION_NEED_RESET value
 * @property {number} CODE_TRACK_TRACKER_INITING=-14900 CODE_TRACK_TRACKER_INITING value
 * @property {number} CODE_TRACK_TRACKER_FAILED=-14901 CODE_TRACK_TRACKER_FAILED value
 * @property {number} CODE_FOCUS_ASTRO_AUTO_FOCUS_SLOW_ERROR=-15100 CODE_FOCUS_ASTRO_AUTO_FOCUS_SLOW_ERROR value
 * @property {number} CODE_FOCUS_ASTRO_AUTO_FOCUS_FAST_ERROR=-15101 CODE_FOCUS_ASTRO_AUTO_FOCUS_FAST_ERROR value
 * @property {number} CODE_PANORAMA_PHOTO_FAILED=-15600 CODE_PANORAMA_PHOTO_FAILED value
 * @property {number} CODE_PANORAMA_MOTOR_RESET_FAILED=-15601 CODE_PANORAMA_MOTOR_RESET_FAILED value
 */
$root.DwarfErrorCode = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "OK")] = 0;
  values[(valuesById[-1] = "WS_PARSE_PROTOBUF_ERROR")] = -1;
  values[(valuesById[-2] = "WS_SDCARD_NOT_EXIST")] = -2;
  values[(valuesById[-3] = "WS_INVALID_PARAM")] = -3;
  values[(valuesById[-4] = "WS_SDCARD_WRITE_ERROR")] = -4;
  values[(valuesById[-10500] = "CODE_CAMERA_TELE_OPENED")] = -10500;
  values[(valuesById[-10501] = "CODE_CAMERA_TELE_CLOSED")] = -10501;
  values[(valuesById[-10502] = "CODE_CAMERA_TELE_ISP_SET_FAILED")] = -10502;
  values[(valuesById[-10504] = "CODE_CAMERA_TELE_OPEN_FAILED")] = -10504;
  values[(valuesById[-10506] = "CODE_CAMERA_TELE_RECORDING")] = -10506;
  values[(valuesById[-10507] = "CODE_CAMERA_TELE_WORKING_BUSY_STACK")] = -10507;
  values[(valuesById[-10510] = "CODE_CAMERA_TELE_CAPTURE_RAW_FAILED")] = -10510;
  values[(valuesById[-10511] = "CODE_CAMERA_TELE_WORKING_BUSY")] = -10511;
  values[(valuesById[-11500] = "CODE_ASTRO_PLATE_SOLVING_FAILED")] = -11500;
  values[(valuesById[-11501] = "CODE_ASTRO_FUNCTION_BUSY")] = -11501;
  values[(valuesById[-11502] = "CODE_ASTRO_DARK_GAIN_OUT_OF_RANGE")] = -11502;
  values[(valuesById[-11503] = "CODE_ASTRO_DARK_NOT_FOUND")] = -11503;
  values[(valuesById[-11504] = "CODE_ASTRO_CALIBRATION_FAILED")] = -11504;
  values[(valuesById[-11505] = "CODE_ASTRO_GOTO_FAILED")] = -11505;
  values[(valuesById[-11513] = "CODE_ASTRO_NEED_GOTO")] = -11513;
  values[(valuesById[-11514] = "CODE_ASTRO_NEED_ADJUST_SHOOT_PARAM")] = -11514;
  values[(valuesById[-11516] = "CODE_ASTRO_EQ_SOLVING_FAILED")] = -11516;
  values[(valuesById[-11517] = "CODE_ASTRO_SKY_SEARCH_FAILED")] = -11517;
  values[(valuesById[-12500] = "CODE_CAMERA_WIDE_OPENED")] = -12500;
  values[(valuesById[-12501] = "CODE_CAMERA_WIDE_CLOSED")] = -12501;
  values[(valuesById[-12502] = "CODE_CAMERA_WIDE_CANNOT_FOUND")] = -12502;
  values[(valuesById[-12503] = "CODE_CAMERA_WIDE_OPEN_FAILED")] = -12503;
  values[(valuesById[-12504] = "CODE_CAMERA_WIDE_CLOSE_FAILED")] = -12504;
  values[(valuesById[-12505] = "CODE_CAMERA_WIDE_SET_ISP_FAILED")] = -12505;
  values[(valuesById[-12506] = "CODE_CAMERA_WIDE_PHOTOGRAPHING")] = -12506;
  values[(valuesById[-12508] = "CODE_CAMERA_WIDE_EXP_TOO_LONG")] = -12508;
  values[(valuesById[-13300] = "CODE_SYSTEM_SET_TIME_FAILED")] = -13300;
  values[(valuesById[-13301] = "CODE_SYSTEM_SET_TIMEZONE_FAILED")] = -13301;
  values[(valuesById[-13302] = "CODE_SYSTEM_SETTING_TIMEZONE_FAILED")] = -13302;
  values[(valuesById[-13800] = "CODE_RGB_POWER_UART_INIT_FAILED")] = -13800;
  values[(valuesById[-14504] = "CODE_STEP_MOTOR_INVALID_PARAMETER_ID")] =
    -14504;
  values[(valuesById[-14518] = "CODE_STEP_MOTOR_LIMIT_POSITION_WARNING")] =
    -14518;
  values[(valuesById[-14519] = "CODE_STEP_MOTOR_LIMIT_POSITION_HITTED")] =
    -14519;
  values[(valuesById[-14520] = "CODE_STEP_MOTOR_POSITION_NEED_RESET")] = -14520;
  values[(valuesById[-14900] = "CODE_TRACK_TRACKER_INITING")] = -14900;
  values[(valuesById[-14901] = "CODE_TRACK_TRACKER_FAILED")] = -14901;
  values[(valuesById[-15100] = "CODE_FOCUS_ASTRO_AUTO_FOCUS_SLOW_ERROR")] =
    -15100;
  values[(valuesById[-15101] = "CODE_FOCUS_ASTRO_AUTO_FOCUS_FAST_ERROR")] =
    -15101;
  values[(valuesById[-15600] = "CODE_PANORAMA_PHOTO_FAILED")] = -15600;
  values[(valuesById[-15601] = "CODE_PANORAMA_MOTOR_RESET_FAILED")] = -15601;
  return values;
})();

/**
 * AstroTrackingSpecial enum.
 * @exports AstroTrackingSpecial
 * @enum {number}
 * @property {number} TRACKING_SUN=0 TRACKING_SUN value
 * @property {number} TRACKING_MOON=1 TRACKING_MOON value
 */
$root.AstroTrackingSpecial = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "TRACKING_SUN")] = 0;
  values[(valuesById[1] = "TRACKING_MOON")] = 1;
  return values;
})();

/**
 * SolarSystemTarget enum.
 * @exports SolarSystemTarget
 * @enum {number}
 * @property {number} Unknown=0 Unknown value
 * @property {number} Mercury=1 Mercury value
 * @property {number} Venus=2 Venus value
 * @property {number} Mars=3 Mars value
 * @property {number} Jupiter=4 Jupiter value
 * @property {number} Saturn=5 Saturn value
 * @property {number} Uranus=6 Uranus value
 * @property {number} Neptune=7 Neptune value
 * @property {number} Moon=8 Moon value
 * @property {number} Sun=9 Sun value
 */
$root.SolarSystemTarget = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "Unknown")] = 0;
  values[(valuesById[1] = "Mercury")] = 1;
  values[(valuesById[2] = "Venus")] = 2;
  values[(valuesById[3] = "Mars")] = 3;
  values[(valuesById[4] = "Jupiter")] = 4;
  values[(valuesById[5] = "Saturn")] = 5;
  values[(valuesById[6] = "Uranus")] = 6;
  values[(valuesById[7] = "Neptune")] = 7;
  values[(valuesById[8] = "Moon")] = 8;
  values[(valuesById[9] = "Sun")] = 9;
  return values;
})();

/**
 * PhotoMode enum.
 * @exports PhotoMode
 * @enum {number}
 * @property {number} Auto=0 Auto value
 * @property {number} Manual=1 Manual value
 */
$root.PhotoMode = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "Auto")] = 0;
  values[(valuesById[1] = "Manual")] = 1;
  return values;
})();

/**
 * WBMode enum.
 * @exports WBMode
 * @enum {number}
 * @property {number} ColorTemperature=0 ColorTemperature value
 * @property {number} SceneMode=1 SceneMode value
 */
$root.WBMode = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "ColorTemperature")] = 0;
  values[(valuesById[1] = "SceneMode")] = 1;
  return values;
})();

/**
 * IrCut enum.
 * @exports IrCut
 * @enum {number}
 * @property {number} CUT=0 CUT value
 * @property {number} PASS=1 PASS value
 */
$root.IrCut = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "CUT")] = 0;
  values[(valuesById[1] = "PASS")] = 1;
  return values;
})();

$root.ReqOpenRgb = (function () {
  /**
   * Properties of a ReqOpenRgb.
   * @exports IReqOpenRgb
   * @interface IReqOpenRgb
   */

  /**
   * Constructs a new ReqOpenRgb.
   * @exports ReqOpenRgb
   * @classdesc Represents a ReqOpenRgb.
   * @implements IReqOpenRgb
   * @constructor
   * @param {IReqOpenRgb=} [properties] Properties to set
   */
  function ReqOpenRgb(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqOpenRgb instance using the specified properties.
   * @function create
   * @memberof ReqOpenRgb
   * @static
   * @param {IReqOpenRgb=} [properties] Properties to set
   * @returns {ReqOpenRgb} ReqOpenRgb instance
   */
  ReqOpenRgb.create = function create(properties) {
    return new ReqOpenRgb(properties);
  };

  /**
   * Encodes the specified ReqOpenRgb message. Does not implicitly {@link ReqOpenRgb.verify|verify} messages.
   * @function encode
   * @memberof ReqOpenRgb
   * @static
   * @param {IReqOpenRgb} message ReqOpenRgb message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOpenRgb.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqOpenRgb message, length delimited. Does not implicitly {@link ReqOpenRgb.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqOpenRgb
   * @static
   * @param {IReqOpenRgb} message ReqOpenRgb message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOpenRgb.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqOpenRgb message from the specified reader or buffer.
   * @function decode
   * @memberof ReqOpenRgb
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqOpenRgb} ReqOpenRgb
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOpenRgb.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqOpenRgb();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqOpenRgb message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqOpenRgb
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqOpenRgb} ReqOpenRgb
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOpenRgb.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqOpenRgb message.
   * @function verify
   * @memberof ReqOpenRgb
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqOpenRgb.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqOpenRgb message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqOpenRgb
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqOpenRgb} ReqOpenRgb
   */
  ReqOpenRgb.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqOpenRgb) return object;
    return new $root.ReqOpenRgb();
  };

  /**
   * Creates a plain object from a ReqOpenRgb message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqOpenRgb
   * @static
   * @param {ReqOpenRgb} message ReqOpenRgb
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqOpenRgb.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqOpenRgb to JSON.
   * @function toJSON
   * @memberof ReqOpenRgb
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqOpenRgb.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqOpenRgb
   * @function getTypeUrl
   * @memberof ReqOpenRgb
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqOpenRgb.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqOpenRgb";
  };

  return ReqOpenRgb;
})();

$root.ReqCloseRgb = (function () {
  /**
   * Properties of a ReqCloseRgb.
   * @exports IReqCloseRgb
   * @interface IReqCloseRgb
   */

  /**
   * Constructs a new ReqCloseRgb.
   * @exports ReqCloseRgb
   * @classdesc Represents a ReqCloseRgb.
   * @implements IReqCloseRgb
   * @constructor
   * @param {IReqCloseRgb=} [properties] Properties to set
   */
  function ReqCloseRgb(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqCloseRgb instance using the specified properties.
   * @function create
   * @memberof ReqCloseRgb
   * @static
   * @param {IReqCloseRgb=} [properties] Properties to set
   * @returns {ReqCloseRgb} ReqCloseRgb instance
   */
  ReqCloseRgb.create = function create(properties) {
    return new ReqCloseRgb(properties);
  };

  /**
   * Encodes the specified ReqCloseRgb message. Does not implicitly {@link ReqCloseRgb.verify|verify} messages.
   * @function encode
   * @memberof ReqCloseRgb
   * @static
   * @param {IReqCloseRgb} message ReqCloseRgb message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCloseRgb.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqCloseRgb message, length delimited. Does not implicitly {@link ReqCloseRgb.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCloseRgb
   * @static
   * @param {IReqCloseRgb} message ReqCloseRgb message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCloseRgb.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCloseRgb message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCloseRgb
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCloseRgb} ReqCloseRgb
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCloseRgb.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCloseRgb();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCloseRgb message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCloseRgb
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCloseRgb} ReqCloseRgb
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCloseRgb.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCloseRgb message.
   * @function verify
   * @memberof ReqCloseRgb
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCloseRgb.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqCloseRgb message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCloseRgb
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCloseRgb} ReqCloseRgb
   */
  ReqCloseRgb.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCloseRgb) return object;
    return new $root.ReqCloseRgb();
  };

  /**
   * Creates a plain object from a ReqCloseRgb message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCloseRgb
   * @static
   * @param {ReqCloseRgb} message ReqCloseRgb
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCloseRgb.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqCloseRgb to JSON.
   * @function toJSON
   * @memberof ReqCloseRgb
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCloseRgb.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCloseRgb
   * @function getTypeUrl
   * @memberof ReqCloseRgb
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCloseRgb.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCloseRgb";
  };

  return ReqCloseRgb;
})();

$root.ReqPowerDown = (function () {
  /**
   * Properties of a ReqPowerDown.
   * @exports IReqPowerDown
   * @interface IReqPowerDown
   */

  /**
   * Constructs a new ReqPowerDown.
   * @exports ReqPowerDown
   * @classdesc Represents a ReqPowerDown.
   * @implements IReqPowerDown
   * @constructor
   * @param {IReqPowerDown=} [properties] Properties to set
   */
  function ReqPowerDown(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqPowerDown instance using the specified properties.
   * @function create
   * @memberof ReqPowerDown
   * @static
   * @param {IReqPowerDown=} [properties] Properties to set
   * @returns {ReqPowerDown} ReqPowerDown instance
   */
  ReqPowerDown.create = function create(properties) {
    return new ReqPowerDown(properties);
  };

  /**
   * Encodes the specified ReqPowerDown message. Does not implicitly {@link ReqPowerDown.verify|verify} messages.
   * @function encode
   * @memberof ReqPowerDown
   * @static
   * @param {IReqPowerDown} message ReqPowerDown message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqPowerDown.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqPowerDown message, length delimited. Does not implicitly {@link ReqPowerDown.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqPowerDown
   * @static
   * @param {IReqPowerDown} message ReqPowerDown message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqPowerDown.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqPowerDown message from the specified reader or buffer.
   * @function decode
   * @memberof ReqPowerDown
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqPowerDown} ReqPowerDown
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqPowerDown.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqPowerDown();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqPowerDown message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqPowerDown
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqPowerDown} ReqPowerDown
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqPowerDown.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqPowerDown message.
   * @function verify
   * @memberof ReqPowerDown
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqPowerDown.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqPowerDown message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqPowerDown
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqPowerDown} ReqPowerDown
   */
  ReqPowerDown.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqPowerDown) return object;
    return new $root.ReqPowerDown();
  };

  /**
   * Creates a plain object from a ReqPowerDown message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqPowerDown
   * @static
   * @param {ReqPowerDown} message ReqPowerDown
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqPowerDown.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqPowerDown to JSON.
   * @function toJSON
   * @memberof ReqPowerDown
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqPowerDown.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqPowerDown
   * @function getTypeUrl
   * @memberof ReqPowerDown
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqPowerDown.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqPowerDown";
  };

  return ReqPowerDown;
})();

$root.ReqOpenPowerInd = (function () {
  /**
   * Properties of a ReqOpenPowerInd.
   * @exports IReqOpenPowerInd
   * @interface IReqOpenPowerInd
   */

  /**
   * Constructs a new ReqOpenPowerInd.
   * @exports ReqOpenPowerInd
   * @classdesc Represents a ReqOpenPowerInd.
   * @implements IReqOpenPowerInd
   * @constructor
   * @param {IReqOpenPowerInd=} [properties] Properties to set
   */
  function ReqOpenPowerInd(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqOpenPowerInd instance using the specified properties.
   * @function create
   * @memberof ReqOpenPowerInd
   * @static
   * @param {IReqOpenPowerInd=} [properties] Properties to set
   * @returns {ReqOpenPowerInd} ReqOpenPowerInd instance
   */
  ReqOpenPowerInd.create = function create(properties) {
    return new ReqOpenPowerInd(properties);
  };

  /**
   * Encodes the specified ReqOpenPowerInd message. Does not implicitly {@link ReqOpenPowerInd.verify|verify} messages.
   * @function encode
   * @memberof ReqOpenPowerInd
   * @static
   * @param {IReqOpenPowerInd} message ReqOpenPowerInd message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOpenPowerInd.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqOpenPowerInd message, length delimited. Does not implicitly {@link ReqOpenPowerInd.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqOpenPowerInd
   * @static
   * @param {IReqOpenPowerInd} message ReqOpenPowerInd message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqOpenPowerInd.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqOpenPowerInd message from the specified reader or buffer.
   * @function decode
   * @memberof ReqOpenPowerInd
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqOpenPowerInd} ReqOpenPowerInd
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOpenPowerInd.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqOpenPowerInd();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqOpenPowerInd message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqOpenPowerInd
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqOpenPowerInd} ReqOpenPowerInd
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqOpenPowerInd.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqOpenPowerInd message.
   * @function verify
   * @memberof ReqOpenPowerInd
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqOpenPowerInd.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqOpenPowerInd message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqOpenPowerInd
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqOpenPowerInd} ReqOpenPowerInd
   */
  ReqOpenPowerInd.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqOpenPowerInd) return object;
    return new $root.ReqOpenPowerInd();
  };

  /**
   * Creates a plain object from a ReqOpenPowerInd message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqOpenPowerInd
   * @static
   * @param {ReqOpenPowerInd} message ReqOpenPowerInd
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqOpenPowerInd.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqOpenPowerInd to JSON.
   * @function toJSON
   * @memberof ReqOpenPowerInd
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqOpenPowerInd.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqOpenPowerInd
   * @function getTypeUrl
   * @memberof ReqOpenPowerInd
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqOpenPowerInd.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqOpenPowerInd";
  };

  return ReqOpenPowerInd;
})();

$root.ReqClosePowerInd = (function () {
  /**
   * Properties of a ReqClosePowerInd.
   * @exports IReqClosePowerInd
   * @interface IReqClosePowerInd
   */

  /**
   * Constructs a new ReqClosePowerInd.
   * @exports ReqClosePowerInd
   * @classdesc Represents a ReqClosePowerInd.
   * @implements IReqClosePowerInd
   * @constructor
   * @param {IReqClosePowerInd=} [properties] Properties to set
   */
  function ReqClosePowerInd(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqClosePowerInd instance using the specified properties.
   * @function create
   * @memberof ReqClosePowerInd
   * @static
   * @param {IReqClosePowerInd=} [properties] Properties to set
   * @returns {ReqClosePowerInd} ReqClosePowerInd instance
   */
  ReqClosePowerInd.create = function create(properties) {
    return new ReqClosePowerInd(properties);
  };

  /**
   * Encodes the specified ReqClosePowerInd message. Does not implicitly {@link ReqClosePowerInd.verify|verify} messages.
   * @function encode
   * @memberof ReqClosePowerInd
   * @static
   * @param {IReqClosePowerInd} message ReqClosePowerInd message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqClosePowerInd.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqClosePowerInd message, length delimited. Does not implicitly {@link ReqClosePowerInd.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqClosePowerInd
   * @static
   * @param {IReqClosePowerInd} message ReqClosePowerInd message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqClosePowerInd.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqClosePowerInd message from the specified reader or buffer.
   * @function decode
   * @memberof ReqClosePowerInd
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqClosePowerInd} ReqClosePowerInd
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqClosePowerInd.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqClosePowerInd();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqClosePowerInd message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqClosePowerInd
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqClosePowerInd} ReqClosePowerInd
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqClosePowerInd.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqClosePowerInd message.
   * @function verify
   * @memberof ReqClosePowerInd
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqClosePowerInd.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqClosePowerInd message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqClosePowerInd
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqClosePowerInd} ReqClosePowerInd
   */
  ReqClosePowerInd.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqClosePowerInd) return object;
    return new $root.ReqClosePowerInd();
  };

  /**
   * Creates a plain object from a ReqClosePowerInd message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqClosePowerInd
   * @static
   * @param {ReqClosePowerInd} message ReqClosePowerInd
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqClosePowerInd.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqClosePowerInd to JSON.
   * @function toJSON
   * @memberof ReqClosePowerInd
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqClosePowerInd.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqClosePowerInd
   * @function getTypeUrl
   * @memberof ReqClosePowerInd
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqClosePowerInd.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqClosePowerInd";
  };

  return ReqClosePowerInd;
})();

$root.ReqReboot = (function () {
  /**
   * Properties of a ReqReboot.
   * @exports IReqReboot
   * @interface IReqReboot
   */

  /**
   * Constructs a new ReqReboot.
   * @exports ReqReboot
   * @classdesc Represents a ReqReboot.
   * @implements IReqReboot
   * @constructor
   * @param {IReqReboot=} [properties] Properties to set
   */
  function ReqReboot(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqReboot instance using the specified properties.
   * @function create
   * @memberof ReqReboot
   * @static
   * @param {IReqReboot=} [properties] Properties to set
   * @returns {ReqReboot} ReqReboot instance
   */
  ReqReboot.create = function create(properties) {
    return new ReqReboot(properties);
  };

  /**
   * Encodes the specified ReqReboot message. Does not implicitly {@link ReqReboot.verify|verify} messages.
   * @function encode
   * @memberof ReqReboot
   * @static
   * @param {IReqReboot} message ReqReboot message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqReboot.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqReboot message, length delimited. Does not implicitly {@link ReqReboot.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqReboot
   * @static
   * @param {IReqReboot} message ReqReboot message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqReboot.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqReboot message from the specified reader or buffer.
   * @function decode
   * @memberof ReqReboot
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqReboot} ReqReboot
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqReboot.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqReboot();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqReboot message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqReboot
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqReboot} ReqReboot
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqReboot.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqReboot message.
   * @function verify
   * @memberof ReqReboot
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqReboot.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqReboot message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqReboot
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqReboot} ReqReboot
   */
  ReqReboot.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqReboot) return object;
    return new $root.ReqReboot();
  };

  /**
   * Creates a plain object from a ReqReboot message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqReboot
   * @static
   * @param {ReqReboot} message ReqReboot
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqReboot.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqReboot to JSON.
   * @function toJSON
   * @memberof ReqReboot
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqReboot.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqReboot
   * @function getTypeUrl
   * @memberof ReqReboot
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqReboot.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqReboot";
  };

  return ReqReboot;
})();

/**
 * ShootingScheduleState enum.
 * @exports ShootingScheduleState
 * @enum {number}
 * @property {number} SHOOTING_SCHEDULE_STATE_INITIALIZED=0 SHOOTING_SCHEDULE_STATE_INITIALIZED value
 * @property {number} SHOOTING_SCHEDULE_STATE_PENDING_SHOOT=1 SHOOTING_SCHEDULE_STATE_PENDING_SHOOT value
 * @property {number} SHOOTING_SCHEDULE_STATE_SHOOTING=2 SHOOTING_SCHEDULE_STATE_SHOOTING value
 * @property {number} SHOOTING_SCHEDULE_STATE_COMPLETED=3 SHOOTING_SCHEDULE_STATE_COMPLETED value
 * @property {number} SHOOTING_SCHEDULE_STATE_EXPIRED=4 SHOOTING_SCHEDULE_STATE_EXPIRED value
 */
$root.ShootingScheduleState = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "SHOOTING_SCHEDULE_STATE_INITIALIZED")] = 0;
  values[(valuesById[1] = "SHOOTING_SCHEDULE_STATE_PENDING_SHOOT")] = 1;
  values[(valuesById[2] = "SHOOTING_SCHEDULE_STATE_SHOOTING")] = 2;
  values[(valuesById[3] = "SHOOTING_SCHEDULE_STATE_COMPLETED")] = 3;
  values[(valuesById[4] = "SHOOTING_SCHEDULE_STATE_EXPIRED")] = 4;
  return values;
})();

/**
 * ShootingScheduleSyncState enum.
 * @exports ShootingScheduleSyncState
 * @enum {number}
 * @property {number} SHOOTING_SCHEDULE_SYNC_STATE_PENDING_SYNC=0 SHOOTING_SCHEDULE_SYNC_STATE_PENDING_SYNC value
 * @property {number} SHOOTING_SCHEDULE_SYNC_STATE_SYNCED=1 SHOOTING_SCHEDULE_SYNC_STATE_SYNCED value
 */
$root.ShootingScheduleSyncState = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "SHOOTING_SCHEDULE_SYNC_STATE_PENDING_SYNC")] = 0;
  values[(valuesById[1] = "SHOOTING_SCHEDULE_SYNC_STATE_SYNCED")] = 1;
  return values;
})();

/**
 * ShootingScheduleResult enum.
 * @exports ShootingScheduleResult
 * @enum {number}
 * @property {number} SHOOTING_SCHEDULE_RESULT_PENDING_START=0 SHOOTING_SCHEDULE_RESULT_PENDING_START value
 * @property {number} SHOOTING_SCHEDULE_RESULT_ALL_COMPLETED=1 SHOOTING_SCHEDULE_RESULT_ALL_COMPLETED value
 * @property {number} SHOOTING_SCHEDULE_RESULT_PARTIALLY_COMPLETED=2 SHOOTING_SCHEDULE_RESULT_PARTIALLY_COMPLETED value
 * @property {number} SHOOTING_SCHEDULE_RESULT_ALL_FAILED=3 SHOOTING_SCHEDULE_RESULT_ALL_FAILED value
 */
$root.ShootingScheduleResult = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "SHOOTING_SCHEDULE_RESULT_PENDING_START")] = 0;
  values[(valuesById[1] = "SHOOTING_SCHEDULE_RESULT_ALL_COMPLETED")] = 1;
  values[(valuesById[2] = "SHOOTING_SCHEDULE_RESULT_PARTIALLY_COMPLETED")] = 2;
  values[(valuesById[3] = "SHOOTING_SCHEDULE_RESULT_ALL_FAILED")] = 3;
  return values;
})();

/**
 * ShootingTaskState enum.
 * @exports ShootingTaskState
 * @enum {number}
 * @property {number} SHOOTING_TASK_STATUS_IDLE=0 SHOOTING_TASK_STATUS_IDLE value
 * @property {number} SHOOTING_TASK_STATUS_SHOOTING=1 SHOOTING_TASK_STATUS_SHOOTING value
 * @property {number} SHOOTING_TASK_STATUS_SUCCESS=2 SHOOTING_TASK_STATUS_SUCCESS value
 * @property {number} SHOOTING_TASK_STATUS_FAILED=3 SHOOTING_TASK_STATUS_FAILED value
 * @property {number} SHOOTING_TASK_STATUS_INTERRUPTED=4 SHOOTING_TASK_STATUS_INTERRUPTED value
 */
$root.ShootingTaskState = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "SHOOTING_TASK_STATUS_IDLE")] = 0;
  values[(valuesById[1] = "SHOOTING_TASK_STATUS_SHOOTING")] = 1;
  values[(valuesById[2] = "SHOOTING_TASK_STATUS_SUCCESS")] = 2;
  values[(valuesById[3] = "SHOOTING_TASK_STATUS_FAILED")] = 3;
  values[(valuesById[4] = "SHOOTING_TASK_STATUS_INTERRUPTED")] = 4;
  return values;
})();

/**
 * ShootingScheduleMode enum.
 * @exports ShootingScheduleMode
 * @enum {number}
 * @property {number} SHOOTING_SCHEDULE_MODE_ASTRO_DEEP_SKY=0 SHOOTING_SCHEDULE_MODE_ASTRO_DEEP_SKY value
 */
$root.ShootingScheduleMode = (function () {
  var valuesById = {},
    values = Object.create(valuesById);
  values[(valuesById[0] = "SHOOTING_SCHEDULE_MODE_ASTRO_DEEP_SKY")] = 0;
  return values;
})();

$root.ShootingTaskMsg = (function () {
  /**
   * Properties of a ShootingTaskMsg.
   * @exports IShootingTaskMsg
   * @interface IShootingTaskMsg
   * @property {string|null} [scheduleId] ShootingTaskMsg scheduleId
   * @property {string|null} [params] ShootingTaskMsg params
   * @property {ShootingTaskState|null} [state] ShootingTaskMsg state
   * @property {number|null} [code] ShootingTaskMsg code
   * @property {number|Long|null} [createdTime] ShootingTaskMsg createdTime
   * @property {number|Long|null} [updatedTime] ShootingTaskMsg updatedTime
   * @property {string|null} [scheduleTaskId] ShootingTaskMsg scheduleTaskId
   * @property {number|null} [paramMode] ShootingTaskMsg paramMode
   * @property {number|null} [paramVersion] ShootingTaskMsg paramVersion
   * @property {number|null} [createFrom] ShootingTaskMsg createFrom
   */

  /**
   * Constructs a new ShootingTaskMsg.
   * @exports ShootingTaskMsg
   * @classdesc Represents a ShootingTaskMsg.
   * @implements IShootingTaskMsg
   * @constructor
   * @param {IShootingTaskMsg=} [properties] Properties to set
   */
  function ShootingTaskMsg(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ShootingTaskMsg scheduleId.
   * @member {string} scheduleId
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.scheduleId = "";

  /**
   * ShootingTaskMsg params.
   * @member {string} params
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.params = "";

  /**
   * ShootingTaskMsg state.
   * @member {ShootingTaskState} state
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.state = 0;

  /**
   * ShootingTaskMsg code.
   * @member {number} code
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.code = 0;

  /**
   * ShootingTaskMsg createdTime.
   * @member {number|Long} createdTime
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.createdTime = $util.Long
    ? $util.Long.fromBits(0, 0, false)
    : 0;

  /**
   * ShootingTaskMsg updatedTime.
   * @member {number|Long} updatedTime
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.updatedTime = $util.Long
    ? $util.Long.fromBits(0, 0, false)
    : 0;

  /**
   * ShootingTaskMsg scheduleTaskId.
   * @member {string} scheduleTaskId
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.scheduleTaskId = "";

  /**
   * ShootingTaskMsg paramMode.
   * @member {number} paramMode
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.paramMode = 0;

  /**
   * ShootingTaskMsg paramVersion.
   * @member {number} paramVersion
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.paramVersion = 0;

  /**
   * ShootingTaskMsg createFrom.
   * @member {number} createFrom
   * @memberof ShootingTaskMsg
   * @instance
   */
  ShootingTaskMsg.prototype.createFrom = 0;

  /**
   * Creates a new ShootingTaskMsg instance using the specified properties.
   * @function create
   * @memberof ShootingTaskMsg
   * @static
   * @param {IShootingTaskMsg=} [properties] Properties to set
   * @returns {ShootingTaskMsg} ShootingTaskMsg instance
   */
  ShootingTaskMsg.create = function create(properties) {
    return new ShootingTaskMsg(properties);
  };

  /**
   * Encodes the specified ShootingTaskMsg message. Does not implicitly {@link ShootingTaskMsg.verify|verify} messages.
   * @function encode
   * @memberof ShootingTaskMsg
   * @static
   * @param {IShootingTaskMsg} message ShootingTaskMsg message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ShootingTaskMsg.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.scheduleId != null &&
      Object.hasOwnProperty.call(message, "scheduleId")
    )
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.scheduleId);
    if (message.params != null && Object.hasOwnProperty.call(message, "params"))
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.params);
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.state);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.code);
    if (
      message.createdTime != null &&
      Object.hasOwnProperty.call(message, "createdTime")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).int64(message.createdTime);
    if (
      message.updatedTime != null &&
      Object.hasOwnProperty.call(message, "updatedTime")
    )
      writer.uint32(/* id 6, wireType 0 =*/ 48).int64(message.updatedTime);
    if (
      message.scheduleTaskId != null &&
      Object.hasOwnProperty.call(message, "scheduleTaskId")
    )
      writer.uint32(/* id 7, wireType 2 =*/ 58).string(message.scheduleTaskId);
    if (
      message.paramMode != null &&
      Object.hasOwnProperty.call(message, "paramMode")
    )
      writer.uint32(/* id 8, wireType 0 =*/ 64).int32(message.paramMode);
    if (
      message.paramVersion != null &&
      Object.hasOwnProperty.call(message, "paramVersion")
    )
      writer.uint32(/* id 9, wireType 0 =*/ 72).int32(message.paramVersion);
    if (
      message.createFrom != null &&
      Object.hasOwnProperty.call(message, "createFrom")
    )
      writer.uint32(/* id 10, wireType 0 =*/ 80).int32(message.createFrom);
    return writer;
  };

  /**
   * Encodes the specified ShootingTaskMsg message, length delimited. Does not implicitly {@link ShootingTaskMsg.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ShootingTaskMsg
   * @static
   * @param {IShootingTaskMsg} message ShootingTaskMsg message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ShootingTaskMsg.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ShootingTaskMsg message from the specified reader or buffer.
   * @function decode
   * @memberof ShootingTaskMsg
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ShootingTaskMsg} ShootingTaskMsg
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ShootingTaskMsg.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ShootingTaskMsg();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.scheduleId = reader.string();
          break;
        }
        case 2: {
          message.params = reader.string();
          break;
        }
        case 3: {
          message.state = reader.int32();
          break;
        }
        case 4: {
          message.code = reader.int32();
          break;
        }
        case 5: {
          message.createdTime = reader.int64();
          break;
        }
        case 6: {
          message.updatedTime = reader.int64();
          break;
        }
        case 7: {
          message.scheduleTaskId = reader.string();
          break;
        }
        case 8: {
          message.paramMode = reader.int32();
          break;
        }
        case 9: {
          message.paramVersion = reader.int32();
          break;
        }
        case 10: {
          message.createFrom = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ShootingTaskMsg message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ShootingTaskMsg
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ShootingTaskMsg} ShootingTaskMsg
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ShootingTaskMsg.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ShootingTaskMsg message.
   * @function verify
   * @memberof ShootingTaskMsg
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ShootingTaskMsg.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.scheduleId != null && message.hasOwnProperty("scheduleId"))
      if (!$util.isString(message.scheduleId))
        return "scheduleId: string expected";
    if (message.params != null && message.hasOwnProperty("params"))
      if (!$util.isString(message.params)) return "params: string expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
          break;
      }
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.createdTime != null && message.hasOwnProperty("createdTime"))
      if (
        !$util.isInteger(message.createdTime) &&
        !(
          message.createdTime &&
          $util.isInteger(message.createdTime.low) &&
          $util.isInteger(message.createdTime.high)
        )
      )
        return "createdTime: integer|Long expected";
    if (message.updatedTime != null && message.hasOwnProperty("updatedTime"))
      if (
        !$util.isInteger(message.updatedTime) &&
        !(
          message.updatedTime &&
          $util.isInteger(message.updatedTime.low) &&
          $util.isInteger(message.updatedTime.high)
        )
      )
        return "updatedTime: integer|Long expected";
    if (
      message.scheduleTaskId != null &&
      message.hasOwnProperty("scheduleTaskId")
    )
      if (!$util.isString(message.scheduleTaskId))
        return "scheduleTaskId: string expected";
    if (message.paramMode != null && message.hasOwnProperty("paramMode"))
      if (!$util.isInteger(message.paramMode))
        return "paramMode: integer expected";
    if (message.paramVersion != null && message.hasOwnProperty("paramVersion"))
      if (!$util.isInteger(message.paramVersion))
        return "paramVersion: integer expected";
    if (message.createFrom != null && message.hasOwnProperty("createFrom"))
      if (!$util.isInteger(message.createFrom))
        return "createFrom: integer expected";
    return null;
  };

  /**
   * Creates a ShootingTaskMsg message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ShootingTaskMsg
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ShootingTaskMsg} ShootingTaskMsg
   */
  ShootingTaskMsg.fromObject = function fromObject(object) {
    if (object instanceof $root.ShootingTaskMsg) return object;
    var message = new $root.ShootingTaskMsg();
    if (object.scheduleId != null)
      message.scheduleId = String(object.scheduleId);
    if (object.params != null) message.params = String(object.params);
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "SHOOTING_TASK_STATUS_IDLE":
      case 0:
        message.state = 0;
        break;
      case "SHOOTING_TASK_STATUS_SHOOTING":
      case 1:
        message.state = 1;
        break;
      case "SHOOTING_TASK_STATUS_SUCCESS":
      case 2:
        message.state = 2;
        break;
      case "SHOOTING_TASK_STATUS_FAILED":
      case 3:
        message.state = 3;
        break;
      case "SHOOTING_TASK_STATUS_INTERRUPTED":
      case 4:
        message.state = 4;
        break;
    }
    if (object.code != null) message.code = object.code | 0;
    if (object.createdTime != null)
      if ($util.Long)
        (message.createdTime = $util.Long.fromValue(
          object.createdTime
        )).unsigned = false;
      else if (typeof object.createdTime === "string")
        message.createdTime = parseInt(object.createdTime, 10);
      else if (typeof object.createdTime === "number")
        message.createdTime = object.createdTime;
      else if (typeof object.createdTime === "object")
        message.createdTime = new $util.LongBits(
          object.createdTime.low >>> 0,
          object.createdTime.high >>> 0
        ).toNumber();
    if (object.updatedTime != null)
      if ($util.Long)
        (message.updatedTime = $util.Long.fromValue(
          object.updatedTime
        )).unsigned = false;
      else if (typeof object.updatedTime === "string")
        message.updatedTime = parseInt(object.updatedTime, 10);
      else if (typeof object.updatedTime === "number")
        message.updatedTime = object.updatedTime;
      else if (typeof object.updatedTime === "object")
        message.updatedTime = new $util.LongBits(
          object.updatedTime.low >>> 0,
          object.updatedTime.high >>> 0
        ).toNumber();
    if (object.scheduleTaskId != null)
      message.scheduleTaskId = String(object.scheduleTaskId);
    if (object.paramMode != null) message.paramMode = object.paramMode | 0;
    if (object.paramVersion != null)
      message.paramVersion = object.paramVersion | 0;
    if (object.createFrom != null) message.createFrom = object.createFrom | 0;
    return message;
  };

  /**
   * Creates a plain object from a ShootingTaskMsg message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ShootingTaskMsg
   * @static
   * @param {ShootingTaskMsg} message ShootingTaskMsg
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ShootingTaskMsg.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.scheduleId = "";
      object.params = "";
      object.state = options.enums === String ? "SHOOTING_TASK_STATUS_IDLE" : 0;
      object.code = 0;
      if ($util.Long) {
        var long = new $util.Long(0, 0, false);
        object.createdTime =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.createdTime = options.longs === String ? "0" : 0;
      if ($util.Long) {
        var long = new $util.Long(0, 0, false);
        object.updatedTime =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.updatedTime = options.longs === String ? "0" : 0;
      object.scheduleTaskId = "";
      object.paramMode = 0;
      object.paramVersion = 0;
      object.createFrom = 0;
    }
    if (message.scheduleId != null && message.hasOwnProperty("scheduleId"))
      object.scheduleId = message.scheduleId;
    if (message.params != null && message.hasOwnProperty("params"))
      object.params = message.params;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.ShootingTaskState[message.state] === undefined
            ? message.state
            : $root.ShootingTaskState[message.state]
          : message.state;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.createdTime != null && message.hasOwnProperty("createdTime"))
      if (typeof message.createdTime === "number")
        object.createdTime =
          options.longs === String
            ? String(message.createdTime)
            : message.createdTime;
      else
        object.createdTime =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.createdTime)
            : options.longs === Number
            ? new $util.LongBits(
                message.createdTime.low >>> 0,
                message.createdTime.high >>> 0
              ).toNumber()
            : message.createdTime;
    if (message.updatedTime != null && message.hasOwnProperty("updatedTime"))
      if (typeof message.updatedTime === "number")
        object.updatedTime =
          options.longs === String
            ? String(message.updatedTime)
            : message.updatedTime;
      else
        object.updatedTime =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.updatedTime)
            : options.longs === Number
            ? new $util.LongBits(
                message.updatedTime.low >>> 0,
                message.updatedTime.high >>> 0
              ).toNumber()
            : message.updatedTime;
    if (
      message.scheduleTaskId != null &&
      message.hasOwnProperty("scheduleTaskId")
    )
      object.scheduleTaskId = message.scheduleTaskId;
    if (message.paramMode != null && message.hasOwnProperty("paramMode"))
      object.paramMode = message.paramMode;
    if (message.paramVersion != null && message.hasOwnProperty("paramVersion"))
      object.paramVersion = message.paramVersion;
    if (message.createFrom != null && message.hasOwnProperty("createFrom"))
      object.createFrom = message.createFrom;
    return object;
  };

  /**
   * Converts this ShootingTaskMsg to JSON.
   * @function toJSON
   * @memberof ShootingTaskMsg
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ShootingTaskMsg.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ShootingTaskMsg
   * @function getTypeUrl
   * @memberof ShootingTaskMsg
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ShootingTaskMsg.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ShootingTaskMsg";
  };

  return ShootingTaskMsg;
})();

$root.ShootingScheduleMsg = (function () {
  /**
   * Properties of a ShootingScheduleMsg.
   * @exports IShootingScheduleMsg
   * @interface IShootingScheduleMsg
   * @property {string|null} [scheduleId] ShootingScheduleMsg scheduleId
   * @property {string|null} [scheduleName] ShootingScheduleMsg scheduleName
   * @property {number|null} [deviceId] ShootingScheduleMsg deviceId
   * @property {string|null} [macAddress] ShootingScheduleMsg macAddress
   * @property {number|Long|null} [startTime] ShootingScheduleMsg startTime
   * @property {number|Long|null} [endTime] ShootingScheduleMsg endTime
   * @property {ShootingScheduleResult|null} [result] ShootingScheduleMsg result
   * @property {number|Long|null} [createdTime] ShootingScheduleMsg createdTime
   * @property {number|Long|null} [updatedTime] ShootingScheduleMsg updatedTime
   * @property {ShootingScheduleState|null} [state] ShootingScheduleMsg state
   * @property {number|null} [lock] ShootingScheduleMsg lock
   * @property {string|null} [password] ShootingScheduleMsg password
   * @property {Array.<IShootingTaskMsg>|null} [shootingTasks] ShootingScheduleMsg shootingTasks
   * @property {number|null} [paramMode] ShootingScheduleMsg paramMode
   * @property {number|null} [paramVersion] ShootingScheduleMsg paramVersion
   * @property {string|null} [params] ShootingScheduleMsg params
   * @property {number|Long|null} [scheduleTime] ShootingScheduleMsg scheduleTime
   * @property {ShootingScheduleSyncState|null} [syncState] ShootingScheduleMsg syncState
   */

  /**
   * Constructs a new ShootingScheduleMsg.
   * @exports ShootingScheduleMsg
   * @classdesc Represents a ShootingScheduleMsg.
   * @implements IShootingScheduleMsg
   * @constructor
   * @param {IShootingScheduleMsg=} [properties] Properties to set
   */
  function ShootingScheduleMsg(properties) {
    this.shootingTasks = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ShootingScheduleMsg scheduleId.
   * @member {string} scheduleId
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.scheduleId = "";

  /**
   * ShootingScheduleMsg scheduleName.
   * @member {string} scheduleName
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.scheduleName = "";

  /**
   * ShootingScheduleMsg deviceId.
   * @member {number} deviceId
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.deviceId = 0;

  /**
   * ShootingScheduleMsg macAddress.
   * @member {string} macAddress
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.macAddress = "";

  /**
   * ShootingScheduleMsg startTime.
   * @member {number|Long} startTime
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.startTime = $util.Long
    ? $util.Long.fromBits(0, 0, false)
    : 0;

  /**
   * ShootingScheduleMsg endTime.
   * @member {number|Long} endTime
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.endTime = $util.Long
    ? $util.Long.fromBits(0, 0, false)
    : 0;

  /**
   * ShootingScheduleMsg result.
   * @member {ShootingScheduleResult} result
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.result = 0;

  /**
   * ShootingScheduleMsg createdTime.
   * @member {number|Long} createdTime
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.createdTime = $util.Long
    ? $util.Long.fromBits(0, 0, false)
    : 0;

  /**
   * ShootingScheduleMsg updatedTime.
   * @member {number|Long} updatedTime
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.updatedTime = $util.Long
    ? $util.Long.fromBits(0, 0, false)
    : 0;

  /**
   * ShootingScheduleMsg state.
   * @member {ShootingScheduleState} state
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.state = 0;

  /**
   * ShootingScheduleMsg lock.
   * @member {number} lock
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.lock = 0;

  /**
   * ShootingScheduleMsg password.
   * @member {string} password
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.password = "";

  /**
   * ShootingScheduleMsg shootingTasks.
   * @member {Array.<IShootingTaskMsg>} shootingTasks
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.shootingTasks = $util.emptyArray;

  /**
   * ShootingScheduleMsg paramMode.
   * @member {number} paramMode
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.paramMode = 0;

  /**
   * ShootingScheduleMsg paramVersion.
   * @member {number} paramVersion
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.paramVersion = 0;

  /**
   * ShootingScheduleMsg params.
   * @member {string} params
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.params = "";

  /**
   * ShootingScheduleMsg scheduleTime.
   * @member {number|Long} scheduleTime
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.scheduleTime = $util.Long
    ? $util.Long.fromBits(0, 0, false)
    : 0;

  /**
   * ShootingScheduleMsg syncState.
   * @member {ShootingScheduleSyncState} syncState
   * @memberof ShootingScheduleMsg
   * @instance
   */
  ShootingScheduleMsg.prototype.syncState = 0;

  /**
   * Creates a new ShootingScheduleMsg instance using the specified properties.
   * @function create
   * @memberof ShootingScheduleMsg
   * @static
   * @param {IShootingScheduleMsg=} [properties] Properties to set
   * @returns {ShootingScheduleMsg} ShootingScheduleMsg instance
   */
  ShootingScheduleMsg.create = function create(properties) {
    return new ShootingScheduleMsg(properties);
  };

  /**
   * Encodes the specified ShootingScheduleMsg message. Does not implicitly {@link ShootingScheduleMsg.verify|verify} messages.
   * @function encode
   * @memberof ShootingScheduleMsg
   * @static
   * @param {IShootingScheduleMsg} message ShootingScheduleMsg message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ShootingScheduleMsg.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.scheduleId != null &&
      Object.hasOwnProperty.call(message, "scheduleId")
    )
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.scheduleId);
    if (
      message.scheduleName != null &&
      Object.hasOwnProperty.call(message, "scheduleName")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.scheduleName);
    if (
      message.deviceId != null &&
      Object.hasOwnProperty.call(message, "deviceId")
    )
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.deviceId);
    if (
      message.macAddress != null &&
      Object.hasOwnProperty.call(message, "macAddress")
    )
      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.macAddress);
    if (
      message.startTime != null &&
      Object.hasOwnProperty.call(message, "startTime")
    )
      writer.uint32(/* id 5, wireType 0 =*/ 40).int64(message.startTime);
    if (
      message.endTime != null &&
      Object.hasOwnProperty.call(message, "endTime")
    )
      writer.uint32(/* id 6, wireType 0 =*/ 48).int64(message.endTime);
    if (message.result != null && Object.hasOwnProperty.call(message, "result"))
      writer.uint32(/* id 7, wireType 0 =*/ 56).int32(message.result);
    if (
      message.createdTime != null &&
      Object.hasOwnProperty.call(message, "createdTime")
    )
      writer.uint32(/* id 8, wireType 0 =*/ 64).int64(message.createdTime);
    if (
      message.updatedTime != null &&
      Object.hasOwnProperty.call(message, "updatedTime")
    )
      writer.uint32(/* id 9, wireType 0 =*/ 72).int64(message.updatedTime);
    if (message.state != null && Object.hasOwnProperty.call(message, "state"))
      writer.uint32(/* id 10, wireType 0 =*/ 80).int32(message.state);
    if (message.lock != null && Object.hasOwnProperty.call(message, "lock"))
      writer.uint32(/* id 11, wireType 0 =*/ 88).int32(message.lock);
    if (
      message.password != null &&
      Object.hasOwnProperty.call(message, "password")
    )
      writer.uint32(/* id 12, wireType 2 =*/ 98).string(message.password);
    if (message.shootingTasks != null && message.shootingTasks.length)
      for (var i = 0; i < message.shootingTasks.length; ++i)
        $root.ShootingTaskMsg.encode(
          message.shootingTasks[i],
          writer.uint32(/* id 13, wireType 2 =*/ 106).fork()
        ).ldelim();
    if (
      message.paramMode != null &&
      Object.hasOwnProperty.call(message, "paramMode")
    )
      writer.uint32(/* id 14, wireType 0 =*/ 112).int32(message.paramMode);
    if (
      message.paramVersion != null &&
      Object.hasOwnProperty.call(message, "paramVersion")
    )
      writer.uint32(/* id 15, wireType 0 =*/ 120).int32(message.paramVersion);
    if (message.params != null && Object.hasOwnProperty.call(message, "params"))
      writer.uint32(/* id 16, wireType 2 =*/ 130).string(message.params);
    if (
      message.scheduleTime != null &&
      Object.hasOwnProperty.call(message, "scheduleTime")
    )
      writer.uint32(/* id 17, wireType 0 =*/ 136).int64(message.scheduleTime);
    if (
      message.syncState != null &&
      Object.hasOwnProperty.call(message, "syncState")
    )
      writer.uint32(/* id 18, wireType 0 =*/ 144).int32(message.syncState);
    return writer;
  };

  /**
   * Encodes the specified ShootingScheduleMsg message, length delimited. Does not implicitly {@link ShootingScheduleMsg.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ShootingScheduleMsg
   * @static
   * @param {IShootingScheduleMsg} message ShootingScheduleMsg message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ShootingScheduleMsg.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ShootingScheduleMsg message from the specified reader or buffer.
   * @function decode
   * @memberof ShootingScheduleMsg
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ShootingScheduleMsg} ShootingScheduleMsg
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ShootingScheduleMsg.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ShootingScheduleMsg();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.scheduleId = reader.string();
          break;
        }
        case 2: {
          message.scheduleName = reader.string();
          break;
        }
        case 3: {
          message.deviceId = reader.int32();
          break;
        }
        case 4: {
          message.macAddress = reader.string();
          break;
        }
        case 5: {
          message.startTime = reader.int64();
          break;
        }
        case 6: {
          message.endTime = reader.int64();
          break;
        }
        case 7: {
          message.result = reader.int32();
          break;
        }
        case 8: {
          message.createdTime = reader.int64();
          break;
        }
        case 9: {
          message.updatedTime = reader.int64();
          break;
        }
        case 10: {
          message.state = reader.int32();
          break;
        }
        case 11: {
          message.lock = reader.int32();
          break;
        }
        case 12: {
          message.password = reader.string();
          break;
        }
        case 13: {
          if (!(message.shootingTasks && message.shootingTasks.length))
            message.shootingTasks = [];
          message.shootingTasks.push(
            $root.ShootingTaskMsg.decode(reader, reader.uint32())
          );
          break;
        }
        case 14: {
          message.paramMode = reader.int32();
          break;
        }
        case 15: {
          message.paramVersion = reader.int32();
          break;
        }
        case 16: {
          message.params = reader.string();
          break;
        }
        case 17: {
          message.scheduleTime = reader.int64();
          break;
        }
        case 18: {
          message.syncState = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ShootingScheduleMsg message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ShootingScheduleMsg
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ShootingScheduleMsg} ShootingScheduleMsg
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ShootingScheduleMsg.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ShootingScheduleMsg message.
   * @function verify
   * @memberof ShootingScheduleMsg
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ShootingScheduleMsg.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.scheduleId != null && message.hasOwnProperty("scheduleId"))
      if (!$util.isString(message.scheduleId))
        return "scheduleId: string expected";
    if (message.scheduleName != null && message.hasOwnProperty("scheduleName"))
      if (!$util.isString(message.scheduleName))
        return "scheduleName: string expected";
    if (message.deviceId != null && message.hasOwnProperty("deviceId"))
      if (!$util.isInteger(message.deviceId))
        return "deviceId: integer expected";
    if (message.macAddress != null && message.hasOwnProperty("macAddress"))
      if (!$util.isString(message.macAddress))
        return "macAddress: string expected";
    if (message.startTime != null && message.hasOwnProperty("startTime"))
      if (
        !$util.isInteger(message.startTime) &&
        !(
          message.startTime &&
          $util.isInteger(message.startTime.low) &&
          $util.isInteger(message.startTime.high)
        )
      )
        return "startTime: integer|Long expected";
    if (message.endTime != null && message.hasOwnProperty("endTime"))
      if (
        !$util.isInteger(message.endTime) &&
        !(
          message.endTime &&
          $util.isInteger(message.endTime.low) &&
          $util.isInteger(message.endTime.high)
        )
      )
        return "endTime: integer|Long expected";
    if (message.result != null && message.hasOwnProperty("result"))
      switch (message.result) {
        default:
          return "result: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
          break;
      }
    if (message.createdTime != null && message.hasOwnProperty("createdTime"))
      if (
        !$util.isInteger(message.createdTime) &&
        !(
          message.createdTime &&
          $util.isInteger(message.createdTime.low) &&
          $util.isInteger(message.createdTime.high)
        )
      )
        return "createdTime: integer|Long expected";
    if (message.updatedTime != null && message.hasOwnProperty("updatedTime"))
      if (
        !$util.isInteger(message.updatedTime) &&
        !(
          message.updatedTime &&
          $util.isInteger(message.updatedTime.low) &&
          $util.isInteger(message.updatedTime.high)
        )
      )
        return "updatedTime: integer|Long expected";
    if (message.state != null && message.hasOwnProperty("state"))
      switch (message.state) {
        default:
          return "state: enum value expected";
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
          break;
      }
    if (message.lock != null && message.hasOwnProperty("lock"))
      if (!$util.isInteger(message.lock)) return "lock: integer expected";
    if (message.password != null && message.hasOwnProperty("password"))
      if (!$util.isString(message.password)) return "password: string expected";
    if (
      message.shootingTasks != null &&
      message.hasOwnProperty("shootingTasks")
    ) {
      if (!Array.isArray(message.shootingTasks))
        return "shootingTasks: array expected";
      for (var i = 0; i < message.shootingTasks.length; ++i) {
        var error = $root.ShootingTaskMsg.verify(message.shootingTasks[i]);
        if (error) return "shootingTasks." + error;
      }
    }
    if (message.paramMode != null && message.hasOwnProperty("paramMode"))
      if (!$util.isInteger(message.paramMode))
        return "paramMode: integer expected";
    if (message.paramVersion != null && message.hasOwnProperty("paramVersion"))
      if (!$util.isInteger(message.paramVersion))
        return "paramVersion: integer expected";
    if (message.params != null && message.hasOwnProperty("params"))
      if (!$util.isString(message.params)) return "params: string expected";
    if (message.scheduleTime != null && message.hasOwnProperty("scheduleTime"))
      if (
        !$util.isInteger(message.scheduleTime) &&
        !(
          message.scheduleTime &&
          $util.isInteger(message.scheduleTime.low) &&
          $util.isInteger(message.scheduleTime.high)
        )
      )
        return "scheduleTime: integer|Long expected";
    if (message.syncState != null && message.hasOwnProperty("syncState"))
      switch (message.syncState) {
        default:
          return "syncState: enum value expected";
        case 0:
        case 1:
          break;
      }
    return null;
  };

  /**
   * Creates a ShootingScheduleMsg message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ShootingScheduleMsg
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ShootingScheduleMsg} ShootingScheduleMsg
   */
  ShootingScheduleMsg.fromObject = function fromObject(object) {
    if (object instanceof $root.ShootingScheduleMsg) return object;
    var message = new $root.ShootingScheduleMsg();
    if (object.scheduleId != null)
      message.scheduleId = String(object.scheduleId);
    if (object.scheduleName != null)
      message.scheduleName = String(object.scheduleName);
    if (object.deviceId != null) message.deviceId = object.deviceId | 0;
    if (object.macAddress != null)
      message.macAddress = String(object.macAddress);
    if (object.startTime != null)
      if ($util.Long)
        (message.startTime = $util.Long.fromValue(
          object.startTime
        )).unsigned = false;
      else if (typeof object.startTime === "string")
        message.startTime = parseInt(object.startTime, 10);
      else if (typeof object.startTime === "number")
        message.startTime = object.startTime;
      else if (typeof object.startTime === "object")
        message.startTime = new $util.LongBits(
          object.startTime.low >>> 0,
          object.startTime.high >>> 0
        ).toNumber();
    if (object.endTime != null)
      if ($util.Long)
        (message.endTime = $util.Long.fromValue(
          object.endTime
        )).unsigned = false;
      else if (typeof object.endTime === "string")
        message.endTime = parseInt(object.endTime, 10);
      else if (typeof object.endTime === "number")
        message.endTime = object.endTime;
      else if (typeof object.endTime === "object")
        message.endTime = new $util.LongBits(
          object.endTime.low >>> 0,
          object.endTime.high >>> 0
        ).toNumber();
    switch (object.result) {
      default:
        if (typeof object.result === "number") {
          message.result = object.result;
          break;
        }
        break;
      case "SHOOTING_SCHEDULE_RESULT_PENDING_START":
      case 0:
        message.result = 0;
        break;
      case "SHOOTING_SCHEDULE_RESULT_ALL_COMPLETED":
      case 1:
        message.result = 1;
        break;
      case "SHOOTING_SCHEDULE_RESULT_PARTIALLY_COMPLETED":
      case 2:
        message.result = 2;
        break;
      case "SHOOTING_SCHEDULE_RESULT_ALL_FAILED":
      case 3:
        message.result = 3;
        break;
    }
    if (object.createdTime != null)
      if ($util.Long)
        (message.createdTime = $util.Long.fromValue(
          object.createdTime
        )).unsigned = false;
      else if (typeof object.createdTime === "string")
        message.createdTime = parseInt(object.createdTime, 10);
      else if (typeof object.createdTime === "number")
        message.createdTime = object.createdTime;
      else if (typeof object.createdTime === "object")
        message.createdTime = new $util.LongBits(
          object.createdTime.low >>> 0,
          object.createdTime.high >>> 0
        ).toNumber();
    if (object.updatedTime != null)
      if ($util.Long)
        (message.updatedTime = $util.Long.fromValue(
          object.updatedTime
        )).unsigned = false;
      else if (typeof object.updatedTime === "string")
        message.updatedTime = parseInt(object.updatedTime, 10);
      else if (typeof object.updatedTime === "number")
        message.updatedTime = object.updatedTime;
      else if (typeof object.updatedTime === "object")
        message.updatedTime = new $util.LongBits(
          object.updatedTime.low >>> 0,
          object.updatedTime.high >>> 0
        ).toNumber();
    switch (object.state) {
      default:
        if (typeof object.state === "number") {
          message.state = object.state;
          break;
        }
        break;
      case "SHOOTING_SCHEDULE_STATE_INITIALIZED":
      case 0:
        message.state = 0;
        break;
      case "SHOOTING_SCHEDULE_STATE_PENDING_SHOOT":
      case 1:
        message.state = 1;
        break;
      case "SHOOTING_SCHEDULE_STATE_SHOOTING":
      case 2:
        message.state = 2;
        break;
      case "SHOOTING_SCHEDULE_STATE_COMPLETED":
      case 3:
        message.state = 3;
        break;
      case "SHOOTING_SCHEDULE_STATE_EXPIRED":
      case 4:
        message.state = 4;
        break;
    }
    if (object.lock != null) message.lock = object.lock | 0;
    if (object.password != null) message.password = String(object.password);
    if (object.shootingTasks) {
      if (!Array.isArray(object.shootingTasks))
        throw TypeError(".ShootingScheduleMsg.shootingTasks: array expected");
      message.shootingTasks = [];
      for (var i = 0; i < object.shootingTasks.length; ++i) {
        if (typeof object.shootingTasks[i] !== "object")
          throw TypeError(
            ".ShootingScheduleMsg.shootingTasks: object expected"
          );
        message.shootingTasks[i] = $root.ShootingTaskMsg.fromObject(
          object.shootingTasks[i]
        );
      }
    }
    if (object.paramMode != null) message.paramMode = object.paramMode | 0;
    if (object.paramVersion != null)
      message.paramVersion = object.paramVersion | 0;
    if (object.params != null) message.params = String(object.params);
    if (object.scheduleTime != null)
      if ($util.Long)
        (message.scheduleTime = $util.Long.fromValue(
          object.scheduleTime
        )).unsigned = false;
      else if (typeof object.scheduleTime === "string")
        message.scheduleTime = parseInt(object.scheduleTime, 10);
      else if (typeof object.scheduleTime === "number")
        message.scheduleTime = object.scheduleTime;
      else if (typeof object.scheduleTime === "object")
        message.scheduleTime = new $util.LongBits(
          object.scheduleTime.low >>> 0,
          object.scheduleTime.high >>> 0
        ).toNumber();
    switch (object.syncState) {
      default:
        if (typeof object.syncState === "number") {
          message.syncState = object.syncState;
          break;
        }
        break;
      case "SHOOTING_SCHEDULE_SYNC_STATE_PENDING_SYNC":
      case 0:
        message.syncState = 0;
        break;
      case "SHOOTING_SCHEDULE_SYNC_STATE_SYNCED":
      case 1:
        message.syncState = 1;
        break;
    }
    return message;
  };

  /**
   * Creates a plain object from a ShootingScheduleMsg message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ShootingScheduleMsg
   * @static
   * @param {ShootingScheduleMsg} message ShootingScheduleMsg
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ShootingScheduleMsg.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.shootingTasks = [];
    if (options.defaults) {
      object.scheduleId = "";
      object.scheduleName = "";
      object.deviceId = 0;
      object.macAddress = "";
      if ($util.Long) {
        var long = new $util.Long(0, 0, false);
        object.startTime =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.startTime = options.longs === String ? "0" : 0;
      if ($util.Long) {
        var long = new $util.Long(0, 0, false);
        object.endTime =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.endTime = options.longs === String ? "0" : 0;
      object.result =
        options.enums === String ? "SHOOTING_SCHEDULE_RESULT_PENDING_START" : 0;
      if ($util.Long) {
        var long = new $util.Long(0, 0, false);
        object.createdTime =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.createdTime = options.longs === String ? "0" : 0;
      if ($util.Long) {
        var long = new $util.Long(0, 0, false);
        object.updatedTime =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.updatedTime = options.longs === String ? "0" : 0;
      object.state =
        options.enums === String ? "SHOOTING_SCHEDULE_STATE_INITIALIZED" : 0;
      object.lock = 0;
      object.password = "";
      object.paramMode = 0;
      object.paramVersion = 0;
      object.params = "";
      if ($util.Long) {
        var long = new $util.Long(0, 0, false);
        object.scheduleTime =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.scheduleTime = options.longs === String ? "0" : 0;
      object.syncState =
        options.enums === String
          ? "SHOOTING_SCHEDULE_SYNC_STATE_PENDING_SYNC"
          : 0;
    }
    if (message.scheduleId != null && message.hasOwnProperty("scheduleId"))
      object.scheduleId = message.scheduleId;
    if (message.scheduleName != null && message.hasOwnProperty("scheduleName"))
      object.scheduleName = message.scheduleName;
    if (message.deviceId != null && message.hasOwnProperty("deviceId"))
      object.deviceId = message.deviceId;
    if (message.macAddress != null && message.hasOwnProperty("macAddress"))
      object.macAddress = message.macAddress;
    if (message.startTime != null && message.hasOwnProperty("startTime"))
      if (typeof message.startTime === "number")
        object.startTime =
          options.longs === String
            ? String(message.startTime)
            : message.startTime;
      else
        object.startTime =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.startTime)
            : options.longs === Number
            ? new $util.LongBits(
                message.startTime.low >>> 0,
                message.startTime.high >>> 0
              ).toNumber()
            : message.startTime;
    if (message.endTime != null && message.hasOwnProperty("endTime"))
      if (typeof message.endTime === "number")
        object.endTime =
          options.longs === String ? String(message.endTime) : message.endTime;
      else
        object.endTime =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.endTime)
            : options.longs === Number
            ? new $util.LongBits(
                message.endTime.low >>> 0,
                message.endTime.high >>> 0
              ).toNumber()
            : message.endTime;
    if (message.result != null && message.hasOwnProperty("result"))
      object.result =
        options.enums === String
          ? $root.ShootingScheduleResult[message.result] === undefined
            ? message.result
            : $root.ShootingScheduleResult[message.result]
          : message.result;
    if (message.createdTime != null && message.hasOwnProperty("createdTime"))
      if (typeof message.createdTime === "number")
        object.createdTime =
          options.longs === String
            ? String(message.createdTime)
            : message.createdTime;
      else
        object.createdTime =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.createdTime)
            : options.longs === Number
            ? new $util.LongBits(
                message.createdTime.low >>> 0,
                message.createdTime.high >>> 0
              ).toNumber()
            : message.createdTime;
    if (message.updatedTime != null && message.hasOwnProperty("updatedTime"))
      if (typeof message.updatedTime === "number")
        object.updatedTime =
          options.longs === String
            ? String(message.updatedTime)
            : message.updatedTime;
      else
        object.updatedTime =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.updatedTime)
            : options.longs === Number
            ? new $util.LongBits(
                message.updatedTime.low >>> 0,
                message.updatedTime.high >>> 0
              ).toNumber()
            : message.updatedTime;
    if (message.state != null && message.hasOwnProperty("state"))
      object.state =
        options.enums === String
          ? $root.ShootingScheduleState[message.state] === undefined
            ? message.state
            : $root.ShootingScheduleState[message.state]
          : message.state;
    if (message.lock != null && message.hasOwnProperty("lock"))
      object.lock = message.lock;
    if (message.password != null && message.hasOwnProperty("password"))
      object.password = message.password;
    if (message.shootingTasks && message.shootingTasks.length) {
      object.shootingTasks = [];
      for (var j = 0; j < message.shootingTasks.length; ++j)
        object.shootingTasks[j] = $root.ShootingTaskMsg.toObject(
          message.shootingTasks[j],
          options
        );
    }
    if (message.paramMode != null && message.hasOwnProperty("paramMode"))
      object.paramMode = message.paramMode;
    if (message.paramVersion != null && message.hasOwnProperty("paramVersion"))
      object.paramVersion = message.paramVersion;
    if (message.params != null && message.hasOwnProperty("params"))
      object.params = message.params;
    if (message.scheduleTime != null && message.hasOwnProperty("scheduleTime"))
      if (typeof message.scheduleTime === "number")
        object.scheduleTime =
          options.longs === String
            ? String(message.scheduleTime)
            : message.scheduleTime;
      else
        object.scheduleTime =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.scheduleTime)
            : options.longs === Number
            ? new $util.LongBits(
                message.scheduleTime.low >>> 0,
                message.scheduleTime.high >>> 0
              ).toNumber()
            : message.scheduleTime;
    if (message.syncState != null && message.hasOwnProperty("syncState"))
      object.syncState =
        options.enums === String
          ? $root.ShootingScheduleSyncState[message.syncState] === undefined
            ? message.syncState
            : $root.ShootingScheduleSyncState[message.syncState]
          : message.syncState;
    return object;
  };

  /**
   * Converts this ShootingScheduleMsg to JSON.
   * @function toJSON
   * @memberof ShootingScheduleMsg
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ShootingScheduleMsg.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ShootingScheduleMsg
   * @function getTypeUrl
   * @memberof ShootingScheduleMsg
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ShootingScheduleMsg.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ShootingScheduleMsg";
  };

  return ShootingScheduleMsg;
})();

$root.ReqSyncShootingSchedule = (function () {
  /**
   * Properties of a ReqSyncShootingSchedule.
   * @exports IReqSyncShootingSchedule
   * @interface IReqSyncShootingSchedule
   * @property {IShootingScheduleMsg|null} [shootingSchedule] ReqSyncShootingSchedule shootingSchedule
   */

  /**
   * Constructs a new ReqSyncShootingSchedule.
   * @exports ReqSyncShootingSchedule
   * @classdesc Represents a ReqSyncShootingSchedule.
   * @implements IReqSyncShootingSchedule
   * @constructor
   * @param {IReqSyncShootingSchedule=} [properties] Properties to set
   */
  function ReqSyncShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSyncShootingSchedule shootingSchedule.
   * @member {IShootingScheduleMsg|null|undefined} shootingSchedule
   * @memberof ReqSyncShootingSchedule
   * @instance
   */
  ReqSyncShootingSchedule.prototype.shootingSchedule = null;

  /**
   * Creates a new ReqSyncShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {IReqSyncShootingSchedule=} [properties] Properties to set
   * @returns {ReqSyncShootingSchedule} ReqSyncShootingSchedule instance
   */
  ReqSyncShootingSchedule.create = function create(properties) {
    return new ReqSyncShootingSchedule(properties);
  };

  /**
   * Encodes the specified ReqSyncShootingSchedule message. Does not implicitly {@link ReqSyncShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {IReqSyncShootingSchedule} message ReqSyncShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSyncShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.shootingSchedule != null &&
      Object.hasOwnProperty.call(message, "shootingSchedule")
    )
      $root.ShootingScheduleMsg.encode(
        message.shootingSchedule,
        writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
      ).ldelim();
    return writer;
  };

  /**
   * Encodes the specified ReqSyncShootingSchedule message, length delimited. Does not implicitly {@link ReqSyncShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {IReqSyncShootingSchedule} message ReqSyncShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSyncShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSyncShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSyncShootingSchedule} ReqSyncShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSyncShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSyncShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.shootingSchedule = $root.ShootingScheduleMsg.decode(
            reader,
            reader.uint32()
          );
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSyncShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSyncShootingSchedule} ReqSyncShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSyncShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSyncShootingSchedule message.
   * @function verify
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSyncShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    ) {
      var error = $root.ShootingScheduleMsg.verify(message.shootingSchedule);
      if (error) return "shootingSchedule." + error;
    }
    return null;
  };

  /**
   * Creates a ReqSyncShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSyncShootingSchedule} ReqSyncShootingSchedule
   */
  ReqSyncShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSyncShootingSchedule) return object;
    var message = new $root.ReqSyncShootingSchedule();
    if (object.shootingSchedule != null) {
      if (typeof object.shootingSchedule !== "object")
        throw TypeError(
          ".ReqSyncShootingSchedule.shootingSchedule: object expected"
        );
      message.shootingSchedule = $root.ShootingScheduleMsg.fromObject(
        object.shootingSchedule
      );
    }
    return message;
  };

  /**
   * Creates a plain object from a ReqSyncShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {ReqSyncShootingSchedule} message ReqSyncShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSyncShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.shootingSchedule = null;
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    )
      object.shootingSchedule = $root.ShootingScheduleMsg.toObject(
        message.shootingSchedule,
        options
      );
    return object;
  };

  /**
   * Converts this ReqSyncShootingSchedule to JSON.
   * @function toJSON
   * @memberof ReqSyncShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSyncShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSyncShootingSchedule
   * @function getTypeUrl
   * @memberof ReqSyncShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSyncShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSyncShootingSchedule";
  };

  return ReqSyncShootingSchedule;
})();

$root.ResSyncShootingSchedule = (function () {
  /**
   * Properties of a ResSyncShootingSchedule.
   * @exports IResSyncShootingSchedule
   * @interface IResSyncShootingSchedule
   * @property {IShootingScheduleMsg|null} [shootingSchedule] ResSyncShootingSchedule shootingSchedule
   * @property {Array.<string>|null} [timeConflictScheduleIds] ResSyncShootingSchedule timeConflictScheduleIds
   * @property {number|null} [code] ResSyncShootingSchedule code
   * @property {boolean|null} [canReplace] ResSyncShootingSchedule canReplace
   */

  /**
   * Constructs a new ResSyncShootingSchedule.
   * @exports ResSyncShootingSchedule
   * @classdesc Represents a ResSyncShootingSchedule.
   * @implements IResSyncShootingSchedule
   * @constructor
   * @param {IResSyncShootingSchedule=} [properties] Properties to set
   */
  function ResSyncShootingSchedule(properties) {
    this.timeConflictScheduleIds = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResSyncShootingSchedule shootingSchedule.
   * @member {IShootingScheduleMsg|null|undefined} shootingSchedule
   * @memberof ResSyncShootingSchedule
   * @instance
   */
  ResSyncShootingSchedule.prototype.shootingSchedule = null;

  /**
   * ResSyncShootingSchedule timeConflictScheduleIds.
   * @member {Array.<string>} timeConflictScheduleIds
   * @memberof ResSyncShootingSchedule
   * @instance
   */
  ResSyncShootingSchedule.prototype.timeConflictScheduleIds = $util.emptyArray;

  /**
   * ResSyncShootingSchedule code.
   * @member {number} code
   * @memberof ResSyncShootingSchedule
   * @instance
   */
  ResSyncShootingSchedule.prototype.code = 0;

  /**
   * ResSyncShootingSchedule canReplace.
   * @member {boolean} canReplace
   * @memberof ResSyncShootingSchedule
   * @instance
   */
  ResSyncShootingSchedule.prototype.canReplace = false;

  /**
   * Creates a new ResSyncShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {IResSyncShootingSchedule=} [properties] Properties to set
   * @returns {ResSyncShootingSchedule} ResSyncShootingSchedule instance
   */
  ResSyncShootingSchedule.create = function create(properties) {
    return new ResSyncShootingSchedule(properties);
  };

  /**
   * Encodes the specified ResSyncShootingSchedule message. Does not implicitly {@link ResSyncShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {IResSyncShootingSchedule} message ResSyncShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResSyncShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.shootingSchedule != null &&
      Object.hasOwnProperty.call(message, "shootingSchedule")
    )
      $root.ShootingScheduleMsg.encode(
        message.shootingSchedule,
        writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
      ).ldelim();
    if (
      message.timeConflictScheduleIds != null &&
      message.timeConflictScheduleIds.length
    )
      for (var i = 0; i < message.timeConflictScheduleIds.length; ++i)
        writer
          .uint32(/* id 2, wireType 2 =*/ 18)
          .string(message.timeConflictScheduleIds[i]);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.code);
    if (
      message.canReplace != null &&
      Object.hasOwnProperty.call(message, "canReplace")
    )
      writer.uint32(/* id 4, wireType 0 =*/ 32).bool(message.canReplace);
    return writer;
  };

  /**
   * Encodes the specified ResSyncShootingSchedule message, length delimited. Does not implicitly {@link ResSyncShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {IResSyncShootingSchedule} message ResSyncShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResSyncShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResSyncShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResSyncShootingSchedule} ResSyncShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResSyncShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResSyncShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.shootingSchedule = $root.ShootingScheduleMsg.decode(
            reader,
            reader.uint32()
          );
          break;
        }
        case 2: {
          if (
            !(
              message.timeConflictScheduleIds &&
              message.timeConflictScheduleIds.length
            )
          )
            message.timeConflictScheduleIds = [];
          message.timeConflictScheduleIds.push(reader.string());
          break;
        }
        case 3: {
          message.code = reader.int32();
          break;
        }
        case 4: {
          message.canReplace = reader.bool();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResSyncShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResSyncShootingSchedule} ResSyncShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResSyncShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResSyncShootingSchedule message.
   * @function verify
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResSyncShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    ) {
      var error = $root.ShootingScheduleMsg.verify(message.shootingSchedule);
      if (error) return "shootingSchedule." + error;
    }
    if (
      message.timeConflictScheduleIds != null &&
      message.hasOwnProperty("timeConflictScheduleIds")
    ) {
      if (!Array.isArray(message.timeConflictScheduleIds))
        return "timeConflictScheduleIds: array expected";
      for (var i = 0; i < message.timeConflictScheduleIds.length; ++i)
        if (!$util.isString(message.timeConflictScheduleIds[i]))
          return "timeConflictScheduleIds: string[] expected";
    }
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.canReplace != null && message.hasOwnProperty("canReplace"))
      if (typeof message.canReplace !== "boolean")
        return "canReplace: boolean expected";
    return null;
  };

  /**
   * Creates a ResSyncShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResSyncShootingSchedule} ResSyncShootingSchedule
   */
  ResSyncShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ResSyncShootingSchedule) return object;
    var message = new $root.ResSyncShootingSchedule();
    if (object.shootingSchedule != null) {
      if (typeof object.shootingSchedule !== "object")
        throw TypeError(
          ".ResSyncShootingSchedule.shootingSchedule: object expected"
        );
      message.shootingSchedule = $root.ShootingScheduleMsg.fromObject(
        object.shootingSchedule
      );
    }
    if (object.timeConflictScheduleIds) {
      if (!Array.isArray(object.timeConflictScheduleIds))
        throw TypeError(
          ".ResSyncShootingSchedule.timeConflictScheduleIds: array expected"
        );
      message.timeConflictScheduleIds = [];
      for (var i = 0; i < object.timeConflictScheduleIds.length; ++i)
        message.timeConflictScheduleIds[i] = String(
          object.timeConflictScheduleIds[i]
        );
    }
    if (object.code != null) message.code = object.code | 0;
    if (object.canReplace != null)
      message.canReplace = Boolean(object.canReplace);
    return message;
  };

  /**
   * Creates a plain object from a ResSyncShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {ResSyncShootingSchedule} message ResSyncShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResSyncShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.timeConflictScheduleIds = [];
    if (options.defaults) {
      object.shootingSchedule = null;
      object.code = 0;
      object.canReplace = false;
    }
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    )
      object.shootingSchedule = $root.ShootingScheduleMsg.toObject(
        message.shootingSchedule,
        options
      );
    if (
      message.timeConflictScheduleIds &&
      message.timeConflictScheduleIds.length
    ) {
      object.timeConflictScheduleIds = [];
      for (var j = 0; j < message.timeConflictScheduleIds.length; ++j)
        object.timeConflictScheduleIds[j] = message.timeConflictScheduleIds[j];
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.canReplace != null && message.hasOwnProperty("canReplace"))
      object.canReplace = message.canReplace;
    return object;
  };

  /**
   * Converts this ResSyncShootingSchedule to JSON.
   * @function toJSON
   * @memberof ResSyncShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResSyncShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResSyncShootingSchedule
   * @function getTypeUrl
   * @memberof ResSyncShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResSyncShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResSyncShootingSchedule";
  };

  return ResSyncShootingSchedule;
})();

$root.ReqCancelShootingSchedule = (function () {
  /**
   * Properties of a ReqCancelShootingSchedule.
   * @exports IReqCancelShootingSchedule
   * @interface IReqCancelShootingSchedule
   * @property {string|null} [id] ReqCancelShootingSchedule id
   * @property {string|null} [password] ReqCancelShootingSchedule password
   */

  /**
   * Constructs a new ReqCancelShootingSchedule.
   * @exports ReqCancelShootingSchedule
   * @classdesc Represents a ReqCancelShootingSchedule.
   * @implements IReqCancelShootingSchedule
   * @constructor
   * @param {IReqCancelShootingSchedule=} [properties] Properties to set
   */
  function ReqCancelShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqCancelShootingSchedule id.
   * @member {string} id
   * @memberof ReqCancelShootingSchedule
   * @instance
   */
  ReqCancelShootingSchedule.prototype.id = "";

  /**
   * ReqCancelShootingSchedule password.
   * @member {string} password
   * @memberof ReqCancelShootingSchedule
   * @instance
   */
  ReqCancelShootingSchedule.prototype.password = "";

  /**
   * Creates a new ReqCancelShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {IReqCancelShootingSchedule=} [properties] Properties to set
   * @returns {ReqCancelShootingSchedule} ReqCancelShootingSchedule instance
   */
  ReqCancelShootingSchedule.create = function create(properties) {
    return new ReqCancelShootingSchedule(properties);
  };

  /**
   * Encodes the specified ReqCancelShootingSchedule message. Does not implicitly {@link ReqCancelShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {IReqCancelShootingSchedule} message ReqCancelShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCancelShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    if (
      message.password != null &&
      Object.hasOwnProperty.call(message, "password")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.password);
    return writer;
  };

  /**
   * Encodes the specified ReqCancelShootingSchedule message, length delimited. Does not implicitly {@link ReqCancelShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {IReqCancelShootingSchedule} message ReqCancelShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqCancelShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqCancelShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqCancelShootingSchedule} ReqCancelShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCancelShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqCancelShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        case 2: {
          message.password = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqCancelShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqCancelShootingSchedule} ReqCancelShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqCancelShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqCancelShootingSchedule message.
   * @function verify
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqCancelShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    if (message.password != null && message.hasOwnProperty("password"))
      if (!$util.isString(message.password)) return "password: string expected";
    return null;
  };

  /**
   * Creates a ReqCancelShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqCancelShootingSchedule} ReqCancelShootingSchedule
   */
  ReqCancelShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqCancelShootingSchedule) return object;
    var message = new $root.ReqCancelShootingSchedule();
    if (object.id != null) message.id = String(object.id);
    if (object.password != null) message.password = String(object.password);
    return message;
  };

  /**
   * Creates a plain object from a ReqCancelShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {ReqCancelShootingSchedule} message ReqCancelShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqCancelShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = "";
      object.password = "";
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.password != null && message.hasOwnProperty("password"))
      object.password = message.password;
    return object;
  };

  /**
   * Converts this ReqCancelShootingSchedule to JSON.
   * @function toJSON
   * @memberof ReqCancelShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqCancelShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqCancelShootingSchedule
   * @function getTypeUrl
   * @memberof ReqCancelShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqCancelShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqCancelShootingSchedule";
  };

  return ReqCancelShootingSchedule;
})();

$root.ResCancelShootingSchedule = (function () {
  /**
   * Properties of a ResCancelShootingSchedule.
   * @exports IResCancelShootingSchedule
   * @interface IResCancelShootingSchedule
   * @property {string|null} [id] ResCancelShootingSchedule id
   * @property {number|null} [code] ResCancelShootingSchedule code
   */

  /**
   * Constructs a new ResCancelShootingSchedule.
   * @exports ResCancelShootingSchedule
   * @classdesc Represents a ResCancelShootingSchedule.
   * @implements IResCancelShootingSchedule
   * @constructor
   * @param {IResCancelShootingSchedule=} [properties] Properties to set
   */
  function ResCancelShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResCancelShootingSchedule id.
   * @member {string} id
   * @memberof ResCancelShootingSchedule
   * @instance
   */
  ResCancelShootingSchedule.prototype.id = "";

  /**
   * ResCancelShootingSchedule code.
   * @member {number} code
   * @memberof ResCancelShootingSchedule
   * @instance
   */
  ResCancelShootingSchedule.prototype.code = 0;

  /**
   * Creates a new ResCancelShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {IResCancelShootingSchedule=} [properties] Properties to set
   * @returns {ResCancelShootingSchedule} ResCancelShootingSchedule instance
   */
  ResCancelShootingSchedule.create = function create(properties) {
    return new ResCancelShootingSchedule(properties);
  };

  /**
   * Encodes the specified ResCancelShootingSchedule message. Does not implicitly {@link ResCancelShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {IResCancelShootingSchedule} message ResCancelShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResCancelShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResCancelShootingSchedule message, length delimited. Does not implicitly {@link ResCancelShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {IResCancelShootingSchedule} message ResCancelShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResCancelShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResCancelShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResCancelShootingSchedule} ResCancelShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResCancelShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResCancelShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResCancelShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResCancelShootingSchedule} ResCancelShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResCancelShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResCancelShootingSchedule message.
   * @function verify
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResCancelShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResCancelShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResCancelShootingSchedule} ResCancelShootingSchedule
   */
  ResCancelShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ResCancelShootingSchedule) return object;
    var message = new $root.ResCancelShootingSchedule();
    if (object.id != null) message.id = String(object.id);
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResCancelShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {ResCancelShootingSchedule} message ResCancelShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResCancelShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = "";
      object.code = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResCancelShootingSchedule to JSON.
   * @function toJSON
   * @memberof ResCancelShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResCancelShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResCancelShootingSchedule
   * @function getTypeUrl
   * @memberof ResCancelShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResCancelShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResCancelShootingSchedule";
  };

  return ResCancelShootingSchedule;
})();

$root.ReqGetAllShootingSchedule = (function () {
  /**
   * Properties of a ReqGetAllShootingSchedule.
   * @exports IReqGetAllShootingSchedule
   * @interface IReqGetAllShootingSchedule
   */

  /**
   * Constructs a new ReqGetAllShootingSchedule.
   * @exports ReqGetAllShootingSchedule
   * @classdesc Represents a ReqGetAllShootingSchedule.
   * @implements IReqGetAllShootingSchedule
   * @constructor
   * @param {IReqGetAllShootingSchedule=} [properties] Properties to set
   */
  function ReqGetAllShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqGetAllShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {IReqGetAllShootingSchedule=} [properties] Properties to set
   * @returns {ReqGetAllShootingSchedule} ReqGetAllShootingSchedule instance
   */
  ReqGetAllShootingSchedule.create = function create(properties) {
    return new ReqGetAllShootingSchedule(properties);
  };

  /**
   * Encodes the specified ReqGetAllShootingSchedule message. Does not implicitly {@link ReqGetAllShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {IReqGetAllShootingSchedule} message ReqGetAllShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetAllShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqGetAllShootingSchedule message, length delimited. Does not implicitly {@link ReqGetAllShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {IReqGetAllShootingSchedule} message ReqGetAllShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetAllShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetAllShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetAllShootingSchedule} ReqGetAllShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetAllShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetAllShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetAllShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetAllShootingSchedule} ReqGetAllShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetAllShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetAllShootingSchedule message.
   * @function verify
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetAllShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqGetAllShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetAllShootingSchedule} ReqGetAllShootingSchedule
   */
  ReqGetAllShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetAllShootingSchedule) return object;
    return new $root.ReqGetAllShootingSchedule();
  };

  /**
   * Creates a plain object from a ReqGetAllShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {ReqGetAllShootingSchedule} message ReqGetAllShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetAllShootingSchedule.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqGetAllShootingSchedule to JSON.
   * @function toJSON
   * @memberof ReqGetAllShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetAllShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetAllShootingSchedule
   * @function getTypeUrl
   * @memberof ReqGetAllShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetAllShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetAllShootingSchedule";
  };

  return ReqGetAllShootingSchedule;
})();

$root.ResGetAllShootingSchedule = (function () {
  /**
   * Properties of a ResGetAllShootingSchedule.
   * @exports IResGetAllShootingSchedule
   * @interface IResGetAllShootingSchedule
   * @property {Array.<IShootingScheduleMsg>|null} [shootingSchedule] ResGetAllShootingSchedule shootingSchedule
   * @property {number|null} [code] ResGetAllShootingSchedule code
   */

  /**
   * Constructs a new ResGetAllShootingSchedule.
   * @exports ResGetAllShootingSchedule
   * @classdesc Represents a ResGetAllShootingSchedule.
   * @implements IResGetAllShootingSchedule
   * @constructor
   * @param {IResGetAllShootingSchedule=} [properties] Properties to set
   */
  function ResGetAllShootingSchedule(properties) {
    this.shootingSchedule = [];
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetAllShootingSchedule shootingSchedule.
   * @member {Array.<IShootingScheduleMsg>} shootingSchedule
   * @memberof ResGetAllShootingSchedule
   * @instance
   */
  ResGetAllShootingSchedule.prototype.shootingSchedule = $util.emptyArray;

  /**
   * ResGetAllShootingSchedule code.
   * @member {number} code
   * @memberof ResGetAllShootingSchedule
   * @instance
   */
  ResGetAllShootingSchedule.prototype.code = 0;

  /**
   * Creates a new ResGetAllShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {IResGetAllShootingSchedule=} [properties] Properties to set
   * @returns {ResGetAllShootingSchedule} ResGetAllShootingSchedule instance
   */
  ResGetAllShootingSchedule.create = function create(properties) {
    return new ResGetAllShootingSchedule(properties);
  };

  /**
   * Encodes the specified ResGetAllShootingSchedule message. Does not implicitly {@link ResGetAllShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {IResGetAllShootingSchedule} message ResGetAllShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetAllShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.shootingSchedule != null && message.shootingSchedule.length)
      for (var i = 0; i < message.shootingSchedule.length; ++i)
        $root.ShootingScheduleMsg.encode(
          message.shootingSchedule[i],
          writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
        ).ldelim();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResGetAllShootingSchedule message, length delimited. Does not implicitly {@link ResGetAllShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {IResGetAllShootingSchedule} message ResGetAllShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetAllShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetAllShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetAllShootingSchedule} ResGetAllShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetAllShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetAllShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          if (!(message.shootingSchedule && message.shootingSchedule.length))
            message.shootingSchedule = [];
          message.shootingSchedule.push(
            $root.ShootingScheduleMsg.decode(reader, reader.uint32())
          );
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetAllShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetAllShootingSchedule} ResGetAllShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetAllShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetAllShootingSchedule message.
   * @function verify
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetAllShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    ) {
      if (!Array.isArray(message.shootingSchedule))
        return "shootingSchedule: array expected";
      for (var i = 0; i < message.shootingSchedule.length; ++i) {
        var error = $root.ShootingScheduleMsg.verify(
          message.shootingSchedule[i]
        );
        if (error) return "shootingSchedule." + error;
      }
    }
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResGetAllShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetAllShootingSchedule} ResGetAllShootingSchedule
   */
  ResGetAllShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetAllShootingSchedule) return object;
    var message = new $root.ResGetAllShootingSchedule();
    if (object.shootingSchedule) {
      if (!Array.isArray(object.shootingSchedule))
        throw TypeError(
          ".ResGetAllShootingSchedule.shootingSchedule: array expected"
        );
      message.shootingSchedule = [];
      for (var i = 0; i < object.shootingSchedule.length; ++i) {
        if (typeof object.shootingSchedule[i] !== "object")
          throw TypeError(
            ".ResGetAllShootingSchedule.shootingSchedule: object expected"
          );
        message.shootingSchedule[i] = $root.ShootingScheduleMsg.fromObject(
          object.shootingSchedule[i]
        );
      }
    }
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResGetAllShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {ResGetAllShootingSchedule} message ResGetAllShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetAllShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.arrays || options.defaults) object.shootingSchedule = [];
    if (options.defaults) object.code = 0;
    if (message.shootingSchedule && message.shootingSchedule.length) {
      object.shootingSchedule = [];
      for (var j = 0; j < message.shootingSchedule.length; ++j)
        object.shootingSchedule[j] = $root.ShootingScheduleMsg.toObject(
          message.shootingSchedule[j],
          options
        );
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResGetAllShootingSchedule to JSON.
   * @function toJSON
   * @memberof ResGetAllShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetAllShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetAllShootingSchedule
   * @function getTypeUrl
   * @memberof ResGetAllShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetAllShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetAllShootingSchedule";
  };

  return ResGetAllShootingSchedule;
})();

$root.ReqGetShootingScheduleById = (function () {
  /**
   * Properties of a ReqGetShootingScheduleById.
   * @exports IReqGetShootingScheduleById
   * @interface IReqGetShootingScheduleById
   * @property {string|null} [id] ReqGetShootingScheduleById id
   */

  /**
   * Constructs a new ReqGetShootingScheduleById.
   * @exports ReqGetShootingScheduleById
   * @classdesc Represents a ReqGetShootingScheduleById.
   * @implements IReqGetShootingScheduleById
   * @constructor
   * @param {IReqGetShootingScheduleById=} [properties] Properties to set
   */
  function ReqGetShootingScheduleById(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqGetShootingScheduleById id.
   * @member {string} id
   * @memberof ReqGetShootingScheduleById
   * @instance
   */
  ReqGetShootingScheduleById.prototype.id = "";

  /**
   * Creates a new ReqGetShootingScheduleById instance using the specified properties.
   * @function create
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {IReqGetShootingScheduleById=} [properties] Properties to set
   * @returns {ReqGetShootingScheduleById} ReqGetShootingScheduleById instance
   */
  ReqGetShootingScheduleById.create = function create(properties) {
    return new ReqGetShootingScheduleById(properties);
  };

  /**
   * Encodes the specified ReqGetShootingScheduleById message. Does not implicitly {@link ReqGetShootingScheduleById.verify|verify} messages.
   * @function encode
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {IReqGetShootingScheduleById} message ReqGetShootingScheduleById message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetShootingScheduleById.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    return writer;
  };

  /**
   * Encodes the specified ReqGetShootingScheduleById message, length delimited. Does not implicitly {@link ReqGetShootingScheduleById.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {IReqGetShootingScheduleById} message ReqGetShootingScheduleById message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetShootingScheduleById.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetShootingScheduleById message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetShootingScheduleById} ReqGetShootingScheduleById
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetShootingScheduleById.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetShootingScheduleById();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetShootingScheduleById message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetShootingScheduleById} ReqGetShootingScheduleById
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetShootingScheduleById.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetShootingScheduleById message.
   * @function verify
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetShootingScheduleById.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    return null;
  };

  /**
   * Creates a ReqGetShootingScheduleById message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetShootingScheduleById} ReqGetShootingScheduleById
   */
  ReqGetShootingScheduleById.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetShootingScheduleById) return object;
    var message = new $root.ReqGetShootingScheduleById();
    if (object.id != null) message.id = String(object.id);
    return message;
  };

  /**
   * Creates a plain object from a ReqGetShootingScheduleById message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {ReqGetShootingScheduleById} message ReqGetShootingScheduleById
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetShootingScheduleById.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.id = "";
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    return object;
  };

  /**
   * Converts this ReqGetShootingScheduleById to JSON.
   * @function toJSON
   * @memberof ReqGetShootingScheduleById
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetShootingScheduleById.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetShootingScheduleById
   * @function getTypeUrl
   * @memberof ReqGetShootingScheduleById
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetShootingScheduleById.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetShootingScheduleById";
  };

  return ReqGetShootingScheduleById;
})();

$root.ResGetShootingScheduleById = (function () {
  /**
   * Properties of a ResGetShootingScheduleById.
   * @exports IResGetShootingScheduleById
   * @interface IResGetShootingScheduleById
   * @property {IShootingScheduleMsg|null} [shootingSchedule] ResGetShootingScheduleById shootingSchedule
   * @property {number|null} [code] ResGetShootingScheduleById code
   */

  /**
   * Constructs a new ResGetShootingScheduleById.
   * @exports ResGetShootingScheduleById
   * @classdesc Represents a ResGetShootingScheduleById.
   * @implements IResGetShootingScheduleById
   * @constructor
   * @param {IResGetShootingScheduleById=} [properties] Properties to set
   */
  function ResGetShootingScheduleById(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetShootingScheduleById shootingSchedule.
   * @member {IShootingScheduleMsg|null|undefined} shootingSchedule
   * @memberof ResGetShootingScheduleById
   * @instance
   */
  ResGetShootingScheduleById.prototype.shootingSchedule = null;

  /**
   * ResGetShootingScheduleById code.
   * @member {number} code
   * @memberof ResGetShootingScheduleById
   * @instance
   */
  ResGetShootingScheduleById.prototype.code = 0;

  /**
   * Creates a new ResGetShootingScheduleById instance using the specified properties.
   * @function create
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {IResGetShootingScheduleById=} [properties] Properties to set
   * @returns {ResGetShootingScheduleById} ResGetShootingScheduleById instance
   */
  ResGetShootingScheduleById.create = function create(properties) {
    return new ResGetShootingScheduleById(properties);
  };

  /**
   * Encodes the specified ResGetShootingScheduleById message. Does not implicitly {@link ResGetShootingScheduleById.verify|verify} messages.
   * @function encode
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {IResGetShootingScheduleById} message ResGetShootingScheduleById message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetShootingScheduleById.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.shootingSchedule != null &&
      Object.hasOwnProperty.call(message, "shootingSchedule")
    )
      $root.ShootingScheduleMsg.encode(
        message.shootingSchedule,
        writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
      ).ldelim();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResGetShootingScheduleById message, length delimited. Does not implicitly {@link ResGetShootingScheduleById.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {IResGetShootingScheduleById} message ResGetShootingScheduleById message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetShootingScheduleById.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetShootingScheduleById message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetShootingScheduleById} ResGetShootingScheduleById
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetShootingScheduleById.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetShootingScheduleById();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.shootingSchedule = $root.ShootingScheduleMsg.decode(
            reader,
            reader.uint32()
          );
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetShootingScheduleById message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetShootingScheduleById} ResGetShootingScheduleById
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetShootingScheduleById.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetShootingScheduleById message.
   * @function verify
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetShootingScheduleById.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    ) {
      var error = $root.ShootingScheduleMsg.verify(message.shootingSchedule);
      if (error) return "shootingSchedule." + error;
    }
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResGetShootingScheduleById message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetShootingScheduleById} ResGetShootingScheduleById
   */
  ResGetShootingScheduleById.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetShootingScheduleById) return object;
    var message = new $root.ResGetShootingScheduleById();
    if (object.shootingSchedule != null) {
      if (typeof object.shootingSchedule !== "object")
        throw TypeError(
          ".ResGetShootingScheduleById.shootingSchedule: object expected"
        );
      message.shootingSchedule = $root.ShootingScheduleMsg.fromObject(
        object.shootingSchedule
      );
    }
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResGetShootingScheduleById message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {ResGetShootingScheduleById} message ResGetShootingScheduleById
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetShootingScheduleById.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.shootingSchedule = null;
      object.code = 0;
    }
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    )
      object.shootingSchedule = $root.ShootingScheduleMsg.toObject(
        message.shootingSchedule,
        options
      );
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResGetShootingScheduleById to JSON.
   * @function toJSON
   * @memberof ResGetShootingScheduleById
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetShootingScheduleById.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetShootingScheduleById
   * @function getTypeUrl
   * @memberof ResGetShootingScheduleById
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetShootingScheduleById.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetShootingScheduleById";
  };

  return ResGetShootingScheduleById;
})();

$root.ReqGetShootingTaskById = (function () {
  /**
   * Properties of a ReqGetShootingTaskById.
   * @exports IReqGetShootingTaskById
   * @interface IReqGetShootingTaskById
   * @property {string|null} [id] ReqGetShootingTaskById id
   */

  /**
   * Constructs a new ReqGetShootingTaskById.
   * @exports ReqGetShootingTaskById
   * @classdesc Represents a ReqGetShootingTaskById.
   * @implements IReqGetShootingTaskById
   * @constructor
   * @param {IReqGetShootingTaskById=} [properties] Properties to set
   */
  function ReqGetShootingTaskById(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqGetShootingTaskById id.
   * @member {string} id
   * @memberof ReqGetShootingTaskById
   * @instance
   */
  ReqGetShootingTaskById.prototype.id = "";

  /**
   * Creates a new ReqGetShootingTaskById instance using the specified properties.
   * @function create
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {IReqGetShootingTaskById=} [properties] Properties to set
   * @returns {ReqGetShootingTaskById} ReqGetShootingTaskById instance
   */
  ReqGetShootingTaskById.create = function create(properties) {
    return new ReqGetShootingTaskById(properties);
  };

  /**
   * Encodes the specified ReqGetShootingTaskById message. Does not implicitly {@link ReqGetShootingTaskById.verify|verify} messages.
   * @function encode
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {IReqGetShootingTaskById} message ReqGetShootingTaskById message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetShootingTaskById.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    return writer;
  };

  /**
   * Encodes the specified ReqGetShootingTaskById message, length delimited. Does not implicitly {@link ReqGetShootingTaskById.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {IReqGetShootingTaskById} message ReqGetShootingTaskById message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetShootingTaskById.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetShootingTaskById message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetShootingTaskById} ReqGetShootingTaskById
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetShootingTaskById.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetShootingTaskById();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetShootingTaskById message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetShootingTaskById} ReqGetShootingTaskById
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetShootingTaskById.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetShootingTaskById message.
   * @function verify
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetShootingTaskById.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    return null;
  };

  /**
   * Creates a ReqGetShootingTaskById message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetShootingTaskById} ReqGetShootingTaskById
   */
  ReqGetShootingTaskById.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetShootingTaskById) return object;
    var message = new $root.ReqGetShootingTaskById();
    if (object.id != null) message.id = String(object.id);
    return message;
  };

  /**
   * Creates a plain object from a ReqGetShootingTaskById message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {ReqGetShootingTaskById} message ReqGetShootingTaskById
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetShootingTaskById.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.id = "";
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    return object;
  };

  /**
   * Converts this ReqGetShootingTaskById to JSON.
   * @function toJSON
   * @memberof ReqGetShootingTaskById
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetShootingTaskById.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetShootingTaskById
   * @function getTypeUrl
   * @memberof ReqGetShootingTaskById
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetShootingTaskById.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetShootingTaskById";
  };

  return ReqGetShootingTaskById;
})();

$root.ResGetShootingTaskById = (function () {
  /**
   * Properties of a ResGetShootingTaskById.
   * @exports IResGetShootingTaskById
   * @interface IResGetShootingTaskById
   * @property {IShootingTaskMsg|null} [shootingTask] ResGetShootingTaskById shootingTask
   * @property {number|null} [code] ResGetShootingTaskById code
   */

  /**
   * Constructs a new ResGetShootingTaskById.
   * @exports ResGetShootingTaskById
   * @classdesc Represents a ResGetShootingTaskById.
   * @implements IResGetShootingTaskById
   * @constructor
   * @param {IResGetShootingTaskById=} [properties] Properties to set
   */
  function ResGetShootingTaskById(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResGetShootingTaskById shootingTask.
   * @member {IShootingTaskMsg|null|undefined} shootingTask
   * @memberof ResGetShootingTaskById
   * @instance
   */
  ResGetShootingTaskById.prototype.shootingTask = null;

  /**
   * ResGetShootingTaskById code.
   * @member {number} code
   * @memberof ResGetShootingTaskById
   * @instance
   */
  ResGetShootingTaskById.prototype.code = 0;

  /**
   * Creates a new ResGetShootingTaskById instance using the specified properties.
   * @function create
   * @memberof ResGetShootingTaskById
   * @static
   * @param {IResGetShootingTaskById=} [properties] Properties to set
   * @returns {ResGetShootingTaskById} ResGetShootingTaskById instance
   */
  ResGetShootingTaskById.create = function create(properties) {
    return new ResGetShootingTaskById(properties);
  };

  /**
   * Encodes the specified ResGetShootingTaskById message. Does not implicitly {@link ResGetShootingTaskById.verify|verify} messages.
   * @function encode
   * @memberof ResGetShootingTaskById
   * @static
   * @param {IResGetShootingTaskById} message ResGetShootingTaskById message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetShootingTaskById.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.shootingTask != null &&
      Object.hasOwnProperty.call(message, "shootingTask")
    )
      $root.ShootingTaskMsg.encode(
        message.shootingTask,
        writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
      ).ldelim();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResGetShootingTaskById message, length delimited. Does not implicitly {@link ResGetShootingTaskById.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResGetShootingTaskById
   * @static
   * @param {IResGetShootingTaskById} message ResGetShootingTaskById message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResGetShootingTaskById.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResGetShootingTaskById message from the specified reader or buffer.
   * @function decode
   * @memberof ResGetShootingTaskById
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResGetShootingTaskById} ResGetShootingTaskById
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetShootingTaskById.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResGetShootingTaskById();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.shootingTask = $root.ShootingTaskMsg.decode(
            reader,
            reader.uint32()
          );
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResGetShootingTaskById message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResGetShootingTaskById
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResGetShootingTaskById} ResGetShootingTaskById
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResGetShootingTaskById.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResGetShootingTaskById message.
   * @function verify
   * @memberof ResGetShootingTaskById
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResGetShootingTaskById.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.shootingTask != null &&
      message.hasOwnProperty("shootingTask")
    ) {
      var error = $root.ShootingTaskMsg.verify(message.shootingTask);
      if (error) return "shootingTask." + error;
    }
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResGetShootingTaskById message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResGetShootingTaskById
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResGetShootingTaskById} ResGetShootingTaskById
   */
  ResGetShootingTaskById.fromObject = function fromObject(object) {
    if (object instanceof $root.ResGetShootingTaskById) return object;
    var message = new $root.ResGetShootingTaskById();
    if (object.shootingTask != null) {
      if (typeof object.shootingTask !== "object")
        throw TypeError(
          ".ResGetShootingTaskById.shootingTask: object expected"
        );
      message.shootingTask = $root.ShootingTaskMsg.fromObject(
        object.shootingTask
      );
    }
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResGetShootingTaskById message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResGetShootingTaskById
   * @static
   * @param {ResGetShootingTaskById} message ResGetShootingTaskById
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResGetShootingTaskById.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.shootingTask = null;
      object.code = 0;
    }
    if (message.shootingTask != null && message.hasOwnProperty("shootingTask"))
      object.shootingTask = $root.ShootingTaskMsg.toObject(
        message.shootingTask,
        options
      );
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResGetShootingTaskById to JSON.
   * @function toJSON
   * @memberof ResGetShootingTaskById
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResGetShootingTaskById.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResGetShootingTaskById
   * @function getTypeUrl
   * @memberof ResGetShootingTaskById
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResGetShootingTaskById.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResGetShootingTaskById";
  };

  return ResGetShootingTaskById;
})();

$root.ReqReplaceShootingSchedule = (function () {
  /**
   * Properties of a ReqReplaceShootingSchedule.
   * @exports IReqReplaceShootingSchedule
   * @interface IReqReplaceShootingSchedule
   * @property {IShootingScheduleMsg|null} [shootingSchedule] ReqReplaceShootingSchedule shootingSchedule
   */

  /**
   * Constructs a new ReqReplaceShootingSchedule.
   * @exports ReqReplaceShootingSchedule
   * @classdesc Represents a ReqReplaceShootingSchedule.
   * @implements IReqReplaceShootingSchedule
   * @constructor
   * @param {IReqReplaceShootingSchedule=} [properties] Properties to set
   */
  function ReqReplaceShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqReplaceShootingSchedule shootingSchedule.
   * @member {IShootingScheduleMsg|null|undefined} shootingSchedule
   * @memberof ReqReplaceShootingSchedule
   * @instance
   */
  ReqReplaceShootingSchedule.prototype.shootingSchedule = null;

  /**
   * Creates a new ReqReplaceShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {IReqReplaceShootingSchedule=} [properties] Properties to set
   * @returns {ReqReplaceShootingSchedule} ReqReplaceShootingSchedule instance
   */
  ReqReplaceShootingSchedule.create = function create(properties) {
    return new ReqReplaceShootingSchedule(properties);
  };

  /**
   * Encodes the specified ReqReplaceShootingSchedule message. Does not implicitly {@link ReqReplaceShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {IReqReplaceShootingSchedule} message ReqReplaceShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqReplaceShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.shootingSchedule != null &&
      Object.hasOwnProperty.call(message, "shootingSchedule")
    )
      $root.ShootingScheduleMsg.encode(
        message.shootingSchedule,
        writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
      ).ldelim();
    return writer;
  };

  /**
   * Encodes the specified ReqReplaceShootingSchedule message, length delimited. Does not implicitly {@link ReqReplaceShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {IReqReplaceShootingSchedule} message ReqReplaceShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqReplaceShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqReplaceShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqReplaceShootingSchedule} ReqReplaceShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqReplaceShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqReplaceShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.shootingSchedule = $root.ShootingScheduleMsg.decode(
            reader,
            reader.uint32()
          );
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqReplaceShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqReplaceShootingSchedule} ReqReplaceShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqReplaceShootingSchedule.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqReplaceShootingSchedule message.
   * @function verify
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqReplaceShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    ) {
      var error = $root.ShootingScheduleMsg.verify(message.shootingSchedule);
      if (error) return "shootingSchedule." + error;
    }
    return null;
  };

  /**
   * Creates a ReqReplaceShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqReplaceShootingSchedule} ReqReplaceShootingSchedule
   */
  ReqReplaceShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqReplaceShootingSchedule) return object;
    var message = new $root.ReqReplaceShootingSchedule();
    if (object.shootingSchedule != null) {
      if (typeof object.shootingSchedule !== "object")
        throw TypeError(
          ".ReqReplaceShootingSchedule.shootingSchedule: object expected"
        );
      message.shootingSchedule = $root.ShootingScheduleMsg.fromObject(
        object.shootingSchedule
      );
    }
    return message;
  };

  /**
   * Creates a plain object from a ReqReplaceShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {ReqReplaceShootingSchedule} message ReqReplaceShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqReplaceShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.shootingSchedule = null;
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    )
      object.shootingSchedule = $root.ShootingScheduleMsg.toObject(
        message.shootingSchedule,
        options
      );
    return object;
  };

  /**
   * Converts this ReqReplaceShootingSchedule to JSON.
   * @function toJSON
   * @memberof ReqReplaceShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqReplaceShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqReplaceShootingSchedule
   * @function getTypeUrl
   * @memberof ReqReplaceShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqReplaceShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqReplaceShootingSchedule";
  };

  return ReqReplaceShootingSchedule;
})();

$root.ResReplaceShootingSchedule = (function () {
  /**
   * Properties of a ResReplaceShootingSchedule.
   * @exports IResReplaceShootingSchedule
   * @interface IResReplaceShootingSchedule
   * @property {IShootingScheduleMsg|null} [shootingSchedule] ResReplaceShootingSchedule shootingSchedule
   * @property {number|null} [code] ResReplaceShootingSchedule code
   */

  /**
   * Constructs a new ResReplaceShootingSchedule.
   * @exports ResReplaceShootingSchedule
   * @classdesc Represents a ResReplaceShootingSchedule.
   * @implements IResReplaceShootingSchedule
   * @constructor
   * @param {IResReplaceShootingSchedule=} [properties] Properties to set
   */
  function ResReplaceShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResReplaceShootingSchedule shootingSchedule.
   * @member {IShootingScheduleMsg|null|undefined} shootingSchedule
   * @memberof ResReplaceShootingSchedule
   * @instance
   */
  ResReplaceShootingSchedule.prototype.shootingSchedule = null;

  /**
   * ResReplaceShootingSchedule code.
   * @member {number} code
   * @memberof ResReplaceShootingSchedule
   * @instance
   */
  ResReplaceShootingSchedule.prototype.code = 0;

  /**
   * Creates a new ResReplaceShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {IResReplaceShootingSchedule=} [properties] Properties to set
   * @returns {ResReplaceShootingSchedule} ResReplaceShootingSchedule instance
   */
  ResReplaceShootingSchedule.create = function create(properties) {
    return new ResReplaceShootingSchedule(properties);
  };

  /**
   * Encodes the specified ResReplaceShootingSchedule message. Does not implicitly {@link ResReplaceShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {IResReplaceShootingSchedule} message ResReplaceShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResReplaceShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.shootingSchedule != null &&
      Object.hasOwnProperty.call(message, "shootingSchedule")
    )
      $root.ShootingScheduleMsg.encode(
        message.shootingSchedule,
        writer.uint32(/* id 1, wireType 2 =*/ 10).fork()
      ).ldelim();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResReplaceShootingSchedule message, length delimited. Does not implicitly {@link ResReplaceShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {IResReplaceShootingSchedule} message ResReplaceShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResReplaceShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResReplaceShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResReplaceShootingSchedule} ResReplaceShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResReplaceShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResReplaceShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.shootingSchedule = $root.ShootingScheduleMsg.decode(
            reader,
            reader.uint32()
          );
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResReplaceShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResReplaceShootingSchedule} ResReplaceShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResReplaceShootingSchedule.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResReplaceShootingSchedule message.
   * @function verify
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResReplaceShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    ) {
      var error = $root.ShootingScheduleMsg.verify(message.shootingSchedule);
      if (error) return "shootingSchedule." + error;
    }
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResReplaceShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResReplaceShootingSchedule} ResReplaceShootingSchedule
   */
  ResReplaceShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ResReplaceShootingSchedule) return object;
    var message = new $root.ResReplaceShootingSchedule();
    if (object.shootingSchedule != null) {
      if (typeof object.shootingSchedule !== "object")
        throw TypeError(
          ".ResReplaceShootingSchedule.shootingSchedule: object expected"
        );
      message.shootingSchedule = $root.ShootingScheduleMsg.fromObject(
        object.shootingSchedule
      );
    }
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResReplaceShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {ResReplaceShootingSchedule} message ResReplaceShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResReplaceShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.shootingSchedule = null;
      object.code = 0;
    }
    if (
      message.shootingSchedule != null &&
      message.hasOwnProperty("shootingSchedule")
    )
      object.shootingSchedule = $root.ShootingScheduleMsg.toObject(
        message.shootingSchedule,
        options
      );
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResReplaceShootingSchedule to JSON.
   * @function toJSON
   * @memberof ResReplaceShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResReplaceShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResReplaceShootingSchedule
   * @function getTypeUrl
   * @memberof ResReplaceShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResReplaceShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResReplaceShootingSchedule";
  };

  return ResReplaceShootingSchedule;
})();

$root.ReqUnlockShootingSchedule = (function () {
  /**
   * Properties of a ReqUnlockShootingSchedule.
   * @exports IReqUnlockShootingSchedule
   * @interface IReqUnlockShootingSchedule
   * @property {string|null} [id] ReqUnlockShootingSchedule id
   * @property {string|null} [password] ReqUnlockShootingSchedule password
   */

  /**
   * Constructs a new ReqUnlockShootingSchedule.
   * @exports ReqUnlockShootingSchedule
   * @classdesc Represents a ReqUnlockShootingSchedule.
   * @implements IReqUnlockShootingSchedule
   * @constructor
   * @param {IReqUnlockShootingSchedule=} [properties] Properties to set
   */
  function ReqUnlockShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqUnlockShootingSchedule id.
   * @member {string} id
   * @memberof ReqUnlockShootingSchedule
   * @instance
   */
  ReqUnlockShootingSchedule.prototype.id = "";

  /**
   * ReqUnlockShootingSchedule password.
   * @member {string} password
   * @memberof ReqUnlockShootingSchedule
   * @instance
   */
  ReqUnlockShootingSchedule.prototype.password = "";

  /**
   * Creates a new ReqUnlockShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {IReqUnlockShootingSchedule=} [properties] Properties to set
   * @returns {ReqUnlockShootingSchedule} ReqUnlockShootingSchedule instance
   */
  ReqUnlockShootingSchedule.create = function create(properties) {
    return new ReqUnlockShootingSchedule(properties);
  };

  /**
   * Encodes the specified ReqUnlockShootingSchedule message. Does not implicitly {@link ReqUnlockShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {IReqUnlockShootingSchedule} message ReqUnlockShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqUnlockShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    if (
      message.password != null &&
      Object.hasOwnProperty.call(message, "password")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.password);
    return writer;
  };

  /**
   * Encodes the specified ReqUnlockShootingSchedule message, length delimited. Does not implicitly {@link ReqUnlockShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {IReqUnlockShootingSchedule} message ReqUnlockShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqUnlockShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqUnlockShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqUnlockShootingSchedule} ReqUnlockShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqUnlockShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqUnlockShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        case 2: {
          message.password = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqUnlockShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqUnlockShootingSchedule} ReqUnlockShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqUnlockShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqUnlockShootingSchedule message.
   * @function verify
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqUnlockShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    if (message.password != null && message.hasOwnProperty("password"))
      if (!$util.isString(message.password)) return "password: string expected";
    return null;
  };

  /**
   * Creates a ReqUnlockShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqUnlockShootingSchedule} ReqUnlockShootingSchedule
   */
  ReqUnlockShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqUnlockShootingSchedule) return object;
    var message = new $root.ReqUnlockShootingSchedule();
    if (object.id != null) message.id = String(object.id);
    if (object.password != null) message.password = String(object.password);
    return message;
  };

  /**
   * Creates a plain object from a ReqUnlockShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {ReqUnlockShootingSchedule} message ReqUnlockShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqUnlockShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = "";
      object.password = "";
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.password != null && message.hasOwnProperty("password"))
      object.password = message.password;
    return object;
  };

  /**
   * Converts this ReqUnlockShootingSchedule to JSON.
   * @function toJSON
   * @memberof ReqUnlockShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqUnlockShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqUnlockShootingSchedule
   * @function getTypeUrl
   * @memberof ReqUnlockShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqUnlockShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqUnlockShootingSchedule";
  };

  return ReqUnlockShootingSchedule;
})();

$root.ResUnlockShootingSchedule = (function () {
  /**
   * Properties of a ResUnlockShootingSchedule.
   * @exports IResUnlockShootingSchedule
   * @interface IResUnlockShootingSchedule
   * @property {string|null} [id] ResUnlockShootingSchedule id
   * @property {number|null} [code] ResUnlockShootingSchedule code
   */

  /**
   * Constructs a new ResUnlockShootingSchedule.
   * @exports ResUnlockShootingSchedule
   * @classdesc Represents a ResUnlockShootingSchedule.
   * @implements IResUnlockShootingSchedule
   * @constructor
   * @param {IResUnlockShootingSchedule=} [properties] Properties to set
   */
  function ResUnlockShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResUnlockShootingSchedule id.
   * @member {string} id
   * @memberof ResUnlockShootingSchedule
   * @instance
   */
  ResUnlockShootingSchedule.prototype.id = "";

  /**
   * ResUnlockShootingSchedule code.
   * @member {number} code
   * @memberof ResUnlockShootingSchedule
   * @instance
   */
  ResUnlockShootingSchedule.prototype.code = 0;

  /**
   * Creates a new ResUnlockShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {IResUnlockShootingSchedule=} [properties] Properties to set
   * @returns {ResUnlockShootingSchedule} ResUnlockShootingSchedule instance
   */
  ResUnlockShootingSchedule.create = function create(properties) {
    return new ResUnlockShootingSchedule(properties);
  };

  /**
   * Encodes the specified ResUnlockShootingSchedule message. Does not implicitly {@link ResUnlockShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {IResUnlockShootingSchedule} message ResUnlockShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResUnlockShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResUnlockShootingSchedule message, length delimited. Does not implicitly {@link ResUnlockShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {IResUnlockShootingSchedule} message ResUnlockShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResUnlockShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResUnlockShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResUnlockShootingSchedule} ResUnlockShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResUnlockShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResUnlockShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResUnlockShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResUnlockShootingSchedule} ResUnlockShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResUnlockShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResUnlockShootingSchedule message.
   * @function verify
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResUnlockShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResUnlockShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResUnlockShootingSchedule} ResUnlockShootingSchedule
   */
  ResUnlockShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ResUnlockShootingSchedule) return object;
    var message = new $root.ResUnlockShootingSchedule();
    if (object.id != null) message.id = String(object.id);
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResUnlockShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {ResUnlockShootingSchedule} message ResUnlockShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResUnlockShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = "";
      object.code = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResUnlockShootingSchedule to JSON.
   * @function toJSON
   * @memberof ResUnlockShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResUnlockShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResUnlockShootingSchedule
   * @function getTypeUrl
   * @memberof ResUnlockShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResUnlockShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResUnlockShootingSchedule";
  };

  return ResUnlockShootingSchedule;
})();

$root.ReqLockShootingSchedule = (function () {
  /**
   * Properties of a ReqLockShootingSchedule.
   * @exports IReqLockShootingSchedule
   * @interface IReqLockShootingSchedule
   * @property {string|null} [id] ReqLockShootingSchedule id
   * @property {string|null} [password] ReqLockShootingSchedule password
   */

  /**
   * Constructs a new ReqLockShootingSchedule.
   * @exports ReqLockShootingSchedule
   * @classdesc Represents a ReqLockShootingSchedule.
   * @implements IReqLockShootingSchedule
   * @constructor
   * @param {IReqLockShootingSchedule=} [properties] Properties to set
   */
  function ReqLockShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqLockShootingSchedule id.
   * @member {string} id
   * @memberof ReqLockShootingSchedule
   * @instance
   */
  ReqLockShootingSchedule.prototype.id = "";

  /**
   * ReqLockShootingSchedule password.
   * @member {string} password
   * @memberof ReqLockShootingSchedule
   * @instance
   */
  ReqLockShootingSchedule.prototype.password = "";

  /**
   * Creates a new ReqLockShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {IReqLockShootingSchedule=} [properties] Properties to set
   * @returns {ReqLockShootingSchedule} ReqLockShootingSchedule instance
   */
  ReqLockShootingSchedule.create = function create(properties) {
    return new ReqLockShootingSchedule(properties);
  };

  /**
   * Encodes the specified ReqLockShootingSchedule message. Does not implicitly {@link ReqLockShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {IReqLockShootingSchedule} message ReqLockShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqLockShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    if (
      message.password != null &&
      Object.hasOwnProperty.call(message, "password")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.password);
    return writer;
  };

  /**
   * Encodes the specified ReqLockShootingSchedule message, length delimited. Does not implicitly {@link ReqLockShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {IReqLockShootingSchedule} message ReqLockShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqLockShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqLockShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqLockShootingSchedule} ReqLockShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqLockShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqLockShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        case 2: {
          message.password = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqLockShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqLockShootingSchedule} ReqLockShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqLockShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqLockShootingSchedule message.
   * @function verify
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqLockShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    if (message.password != null && message.hasOwnProperty("password"))
      if (!$util.isString(message.password)) return "password: string expected";
    return null;
  };

  /**
   * Creates a ReqLockShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqLockShootingSchedule} ReqLockShootingSchedule
   */
  ReqLockShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqLockShootingSchedule) return object;
    var message = new $root.ReqLockShootingSchedule();
    if (object.id != null) message.id = String(object.id);
    if (object.password != null) message.password = String(object.password);
    return message;
  };

  /**
   * Creates a plain object from a ReqLockShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {ReqLockShootingSchedule} message ReqLockShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqLockShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = "";
      object.password = "";
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.password != null && message.hasOwnProperty("password"))
      object.password = message.password;
    return object;
  };

  /**
   * Converts this ReqLockShootingSchedule to JSON.
   * @function toJSON
   * @memberof ReqLockShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqLockShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqLockShootingSchedule
   * @function getTypeUrl
   * @memberof ReqLockShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqLockShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqLockShootingSchedule";
  };

  return ReqLockShootingSchedule;
})();

$root.ResLockShootingSchedule = (function () {
  /**
   * Properties of a ResLockShootingSchedule.
   * @exports IResLockShootingSchedule
   * @interface IResLockShootingSchedule
   * @property {string|null} [id] ResLockShootingSchedule id
   * @property {number|null} [code] ResLockShootingSchedule code
   */

  /**
   * Constructs a new ResLockShootingSchedule.
   * @exports ResLockShootingSchedule
   * @classdesc Represents a ResLockShootingSchedule.
   * @implements IResLockShootingSchedule
   * @constructor
   * @param {IResLockShootingSchedule=} [properties] Properties to set
   */
  function ResLockShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResLockShootingSchedule id.
   * @member {string} id
   * @memberof ResLockShootingSchedule
   * @instance
   */
  ResLockShootingSchedule.prototype.id = "";

  /**
   * ResLockShootingSchedule code.
   * @member {number} code
   * @memberof ResLockShootingSchedule
   * @instance
   */
  ResLockShootingSchedule.prototype.code = 0;

  /**
   * Creates a new ResLockShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ResLockShootingSchedule
   * @static
   * @param {IResLockShootingSchedule=} [properties] Properties to set
   * @returns {ResLockShootingSchedule} ResLockShootingSchedule instance
   */
  ResLockShootingSchedule.create = function create(properties) {
    return new ResLockShootingSchedule(properties);
  };

  /**
   * Encodes the specified ResLockShootingSchedule message. Does not implicitly {@link ResLockShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ResLockShootingSchedule
   * @static
   * @param {IResLockShootingSchedule} message ResLockShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResLockShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResLockShootingSchedule message, length delimited. Does not implicitly {@link ResLockShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResLockShootingSchedule
   * @static
   * @param {IResLockShootingSchedule} message ResLockShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResLockShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResLockShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ResLockShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResLockShootingSchedule} ResLockShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResLockShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResLockShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResLockShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResLockShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResLockShootingSchedule} ResLockShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResLockShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResLockShootingSchedule message.
   * @function verify
   * @memberof ResLockShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResLockShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResLockShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResLockShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResLockShootingSchedule} ResLockShootingSchedule
   */
  ResLockShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ResLockShootingSchedule) return object;
    var message = new $root.ResLockShootingSchedule();
    if (object.id != null) message.id = String(object.id);
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResLockShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResLockShootingSchedule
   * @static
   * @param {ResLockShootingSchedule} message ResLockShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResLockShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = "";
      object.code = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResLockShootingSchedule to JSON.
   * @function toJSON
   * @memberof ResLockShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResLockShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResLockShootingSchedule
   * @function getTypeUrl
   * @memberof ResLockShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResLockShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResLockShootingSchedule";
  };

  return ResLockShootingSchedule;
})();

$root.ReqDeleteShootingSchedule = (function () {
  /**
   * Properties of a ReqDeleteShootingSchedule.
   * @exports IReqDeleteShootingSchedule
   * @interface IReqDeleteShootingSchedule
   * @property {string|null} [id] ReqDeleteShootingSchedule id
   * @property {string|null} [password] ReqDeleteShootingSchedule password
   */

  /**
   * Constructs a new ReqDeleteShootingSchedule.
   * @exports ReqDeleteShootingSchedule
   * @classdesc Represents a ReqDeleteShootingSchedule.
   * @implements IReqDeleteShootingSchedule
   * @constructor
   * @param {IReqDeleteShootingSchedule=} [properties] Properties to set
   */
  function ReqDeleteShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDeleteShootingSchedule id.
   * @member {string} id
   * @memberof ReqDeleteShootingSchedule
   * @instance
   */
  ReqDeleteShootingSchedule.prototype.id = "";

  /**
   * ReqDeleteShootingSchedule password.
   * @member {string} password
   * @memberof ReqDeleteShootingSchedule
   * @instance
   */
  ReqDeleteShootingSchedule.prototype.password = "";

  /**
   * Creates a new ReqDeleteShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {IReqDeleteShootingSchedule=} [properties] Properties to set
   * @returns {ReqDeleteShootingSchedule} ReqDeleteShootingSchedule instance
   */
  ReqDeleteShootingSchedule.create = function create(properties) {
    return new ReqDeleteShootingSchedule(properties);
  };

  /**
   * Encodes the specified ReqDeleteShootingSchedule message. Does not implicitly {@link ReqDeleteShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {IReqDeleteShootingSchedule} message ReqDeleteShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDeleteShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    if (
      message.password != null &&
      Object.hasOwnProperty.call(message, "password")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.password);
    return writer;
  };

  /**
   * Encodes the specified ReqDeleteShootingSchedule message, length delimited. Does not implicitly {@link ReqDeleteShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {IReqDeleteShootingSchedule} message ReqDeleteShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDeleteShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDeleteShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDeleteShootingSchedule} ReqDeleteShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDeleteShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDeleteShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        case 2: {
          message.password = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDeleteShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDeleteShootingSchedule} ReqDeleteShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDeleteShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDeleteShootingSchedule message.
   * @function verify
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDeleteShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    if (message.password != null && message.hasOwnProperty("password"))
      if (!$util.isString(message.password)) return "password: string expected";
    return null;
  };

  /**
   * Creates a ReqDeleteShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDeleteShootingSchedule} ReqDeleteShootingSchedule
   */
  ReqDeleteShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDeleteShootingSchedule) return object;
    var message = new $root.ReqDeleteShootingSchedule();
    if (object.id != null) message.id = String(object.id);
    if (object.password != null) message.password = String(object.password);
    return message;
  };

  /**
   * Creates a plain object from a ReqDeleteShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {ReqDeleteShootingSchedule} message ReqDeleteShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDeleteShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = "";
      object.password = "";
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.password != null && message.hasOwnProperty("password"))
      object.password = message.password;
    return object;
  };

  /**
   * Converts this ReqDeleteShootingSchedule to JSON.
   * @function toJSON
   * @memberof ReqDeleteShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDeleteShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDeleteShootingSchedule
   * @function getTypeUrl
   * @memberof ReqDeleteShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDeleteShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDeleteShootingSchedule";
  };

  return ReqDeleteShootingSchedule;
})();

$root.ResDeleteShootingSchedule = (function () {
  /**
   * Properties of a ResDeleteShootingSchedule.
   * @exports IResDeleteShootingSchedule
   * @interface IResDeleteShootingSchedule
   * @property {string|null} [id] ResDeleteShootingSchedule id
   * @property {number|null} [code] ResDeleteShootingSchedule code
   */

  /**
   * Constructs a new ResDeleteShootingSchedule.
   * @exports ResDeleteShootingSchedule
   * @classdesc Represents a ResDeleteShootingSchedule.
   * @implements IResDeleteShootingSchedule
   * @constructor
   * @param {IResDeleteShootingSchedule=} [properties] Properties to set
   */
  function ResDeleteShootingSchedule(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResDeleteShootingSchedule id.
   * @member {string} id
   * @memberof ResDeleteShootingSchedule
   * @instance
   */
  ResDeleteShootingSchedule.prototype.id = "";

  /**
   * ResDeleteShootingSchedule code.
   * @member {number} code
   * @memberof ResDeleteShootingSchedule
   * @instance
   */
  ResDeleteShootingSchedule.prototype.code = 0;

  /**
   * Creates a new ResDeleteShootingSchedule instance using the specified properties.
   * @function create
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {IResDeleteShootingSchedule=} [properties] Properties to set
   * @returns {ResDeleteShootingSchedule} ResDeleteShootingSchedule instance
   */
  ResDeleteShootingSchedule.create = function create(properties) {
    return new ResDeleteShootingSchedule(properties);
  };

  /**
   * Encodes the specified ResDeleteShootingSchedule message. Does not implicitly {@link ResDeleteShootingSchedule.verify|verify} messages.
   * @function encode
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {IResDeleteShootingSchedule} message ResDeleteShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDeleteShootingSchedule.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code);
    return writer;
  };

  /**
   * Encodes the specified ResDeleteShootingSchedule message, length delimited. Does not implicitly {@link ResDeleteShootingSchedule.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {IResDeleteShootingSchedule} message ResDeleteShootingSchedule message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDeleteShootingSchedule.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResDeleteShootingSchedule message from the specified reader or buffer.
   * @function decode
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResDeleteShootingSchedule} ResDeleteShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDeleteShootingSchedule.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResDeleteShootingSchedule();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.string();
          break;
        }
        case 2: {
          message.code = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResDeleteShootingSchedule message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResDeleteShootingSchedule} ResDeleteShootingSchedule
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDeleteShootingSchedule.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResDeleteShootingSchedule message.
   * @function verify
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResDeleteShootingSchedule.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isString(message.id)) return "id: string expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    return null;
  };

  /**
   * Creates a ResDeleteShootingSchedule message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResDeleteShootingSchedule} ResDeleteShootingSchedule
   */
  ResDeleteShootingSchedule.fromObject = function fromObject(object) {
    if (object instanceof $root.ResDeleteShootingSchedule) return object;
    var message = new $root.ResDeleteShootingSchedule();
    if (object.id != null) message.id = String(object.id);
    if (object.code != null) message.code = object.code | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResDeleteShootingSchedule message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {ResDeleteShootingSchedule} message ResDeleteShootingSchedule
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResDeleteShootingSchedule.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.id = "";
      object.code = 0;
    }
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    return object;
  };

  /**
   * Converts this ResDeleteShootingSchedule to JSON.
   * @function toJSON
   * @memberof ResDeleteShootingSchedule
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResDeleteShootingSchedule.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResDeleteShootingSchedule
   * @function getTypeUrl
   * @memberof ResDeleteShootingSchedule
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResDeleteShootingSchedule.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResDeleteShootingSchedule";
  };

  return ResDeleteShootingSchedule;
})();

$root.ReqSetTime = (function () {
  /**
   * Properties of a ReqSetTime.
   * @exports IReqSetTime
   * @interface IReqSetTime
   * @property {number|Long|null} [timestamp] ReqSetTime timestamp
   * @property {number|null} [timezoneOffset] ReqSetTime timezoneOffset
   */

  /**
   * Constructs a new ReqSetTime.
   * @exports ReqSetTime
   * @classdesc Represents a ReqSetTime.
   * @implements IReqSetTime
   * @constructor
   * @param {IReqSetTime=} [properties] Properties to set
   */
  function ReqSetTime(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetTime timestamp.
   * @member {number|Long} timestamp
   * @memberof ReqSetTime
   * @instance
   */
  ReqSetTime.prototype.timestamp = $util.Long
    ? $util.Long.fromBits(0, 0, true)
    : 0;

  /**
   * ReqSetTime timezoneOffset.
   * @member {number} timezoneOffset
   * @memberof ReqSetTime
   * @instance
   */
  ReqSetTime.prototype.timezoneOffset = 0;

  /**
   * Creates a new ReqSetTime instance using the specified properties.
   * @function create
   * @memberof ReqSetTime
   * @static
   * @param {IReqSetTime=} [properties] Properties to set
   * @returns {ReqSetTime} ReqSetTime instance
   */
  ReqSetTime.create = function create(properties) {
    return new ReqSetTime(properties);
  };

  /**
   * Encodes the specified ReqSetTime message. Does not implicitly {@link ReqSetTime.verify|verify} messages.
   * @function encode
   * @memberof ReqSetTime
   * @static
   * @param {IReqSetTime} message ReqSetTime message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetTime.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.timestamp != null &&
      Object.hasOwnProperty.call(message, "timestamp")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(message.timestamp);
    if (
      message.timezoneOffset != null &&
      Object.hasOwnProperty.call(message, "timezoneOffset")
    )
      writer.uint32(/* id 2, wireType 1 =*/ 17).double(message.timezoneOffset);
    return writer;
  };

  /**
   * Encodes the specified ReqSetTime message, length delimited. Does not implicitly {@link ReqSetTime.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetTime
   * @static
   * @param {IReqSetTime} message ReqSetTime message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetTime.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetTime message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetTime
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetTime} ReqSetTime
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetTime.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetTime();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.timestamp = reader.uint64();
          break;
        }
        case 2: {
          message.timezoneOffset = reader.double();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetTime message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetTime
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetTime} ReqSetTime
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetTime.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetTime message.
   * @function verify
   * @memberof ReqSetTime
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetTime.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.timestamp != null && message.hasOwnProperty("timestamp"))
      if (
        !$util.isInteger(message.timestamp) &&
        !(
          message.timestamp &&
          $util.isInteger(message.timestamp.low) &&
          $util.isInteger(message.timestamp.high)
        )
      )
        return "timestamp: integer|Long expected";
    if (
      message.timezoneOffset != null &&
      message.hasOwnProperty("timezoneOffset")
    )
      if (typeof message.timezoneOffset !== "number")
        return "timezoneOffset: number expected";
    return null;
  };

  /**
   * Creates a ReqSetTime message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetTime
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetTime} ReqSetTime
   */
  ReqSetTime.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetTime) return object;
    var message = new $root.ReqSetTime();
    if (object.timestamp != null)
      if ($util.Long)
        (message.timestamp = $util.Long.fromValue(
          object.timestamp
        )).unsigned = true;
      else if (typeof object.timestamp === "string")
        message.timestamp = parseInt(object.timestamp, 10);
      else if (typeof object.timestamp === "number")
        message.timestamp = object.timestamp;
      else if (typeof object.timestamp === "object")
        message.timestamp = new $util.LongBits(
          object.timestamp.low >>> 0,
          object.timestamp.high >>> 0
        ).toNumber(true);
    if (object.timezoneOffset != null)
      message.timezoneOffset = Number(object.timezoneOffset);
    return message;
  };

  /**
   * Creates a plain object from a ReqSetTime message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetTime
   * @static
   * @param {ReqSetTime} message ReqSetTime
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetTime.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      if ($util.Long) {
        var long = new $util.Long(0, 0, true);
        object.timestamp =
          options.longs === String
            ? long.toString()
            : options.longs === Number
            ? long.toNumber()
            : long;
      } else object.timestamp = options.longs === String ? "0" : 0;
      object.timezoneOffset = 0;
    }
    if (message.timestamp != null && message.hasOwnProperty("timestamp"))
      if (typeof message.timestamp === "number")
        object.timestamp =
          options.longs === String
            ? String(message.timestamp)
            : message.timestamp;
      else
        object.timestamp =
          options.longs === String
            ? $util.Long.prototype.toString.call(message.timestamp)
            : options.longs === Number
            ? new $util.LongBits(
                message.timestamp.low >>> 0,
                message.timestamp.high >>> 0
              ).toNumber(true)
            : message.timestamp;
    if (
      message.timezoneOffset != null &&
      message.hasOwnProperty("timezoneOffset")
    )
      object.timezoneOffset =
        options.json && !isFinite(message.timezoneOffset)
          ? String(message.timezoneOffset)
          : message.timezoneOffset;
    return object;
  };

  /**
   * Converts this ReqSetTime to JSON.
   * @function toJSON
   * @memberof ReqSetTime
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetTime.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetTime
   * @function getTypeUrl
   * @memberof ReqSetTime
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetTime.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetTime";
  };

  return ReqSetTime;
})();

$root.ReqSetTimezone = (function () {
  /**
   * Properties of a ReqSetTimezone.
   * @exports IReqSetTimezone
   * @interface IReqSetTimezone
   * @property {string|null} [timezone] ReqSetTimezone timezone
   */

  /**
   * Constructs a new ReqSetTimezone.
   * @exports ReqSetTimezone
   * @classdesc Represents a ReqSetTimezone.
   * @implements IReqSetTimezone
   * @constructor
   * @param {IReqSetTimezone=} [properties] Properties to set
   */
  function ReqSetTimezone(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetTimezone timezone.
   * @member {string} timezone
   * @memberof ReqSetTimezone
   * @instance
   */
  ReqSetTimezone.prototype.timezone = "";

  /**
   * Creates a new ReqSetTimezone instance using the specified properties.
   * @function create
   * @memberof ReqSetTimezone
   * @static
   * @param {IReqSetTimezone=} [properties] Properties to set
   * @returns {ReqSetTimezone} ReqSetTimezone instance
   */
  ReqSetTimezone.create = function create(properties) {
    return new ReqSetTimezone(properties);
  };

  /**
   * Encodes the specified ReqSetTimezone message. Does not implicitly {@link ReqSetTimezone.verify|verify} messages.
   * @function encode
   * @memberof ReqSetTimezone
   * @static
   * @param {IReqSetTimezone} message ReqSetTimezone message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetTimezone.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.timezone != null &&
      Object.hasOwnProperty.call(message, "timezone")
    )
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.timezone);
    return writer;
  };

  /**
   * Encodes the specified ReqSetTimezone message, length delimited. Does not implicitly {@link ReqSetTimezone.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetTimezone
   * @static
   * @param {IReqSetTimezone} message ReqSetTimezone message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetTimezone.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetTimezone message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetTimezone
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetTimezone} ReqSetTimezone
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetTimezone.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetTimezone();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.timezone = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetTimezone message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetTimezone
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetTimezone} ReqSetTimezone
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetTimezone.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetTimezone message.
   * @function verify
   * @memberof ReqSetTimezone
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetTimezone.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.timezone != null && message.hasOwnProperty("timezone"))
      if (!$util.isString(message.timezone)) return "timezone: string expected";
    return null;
  };

  /**
   * Creates a ReqSetTimezone message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetTimezone
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetTimezone} ReqSetTimezone
   */
  ReqSetTimezone.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetTimezone) return object;
    var message = new $root.ReqSetTimezone();
    if (object.timezone != null) message.timezone = String(object.timezone);
    return message;
  };

  /**
   * Creates a plain object from a ReqSetTimezone message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetTimezone
   * @static
   * @param {ReqSetTimezone} message ReqSetTimezone
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetTimezone.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.timezone = "";
    if (message.timezone != null && message.hasOwnProperty("timezone"))
      object.timezone = message.timezone;
    return object;
  };

  /**
   * Converts this ReqSetTimezone to JSON.
   * @function toJSON
   * @memberof ReqSetTimezone
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetTimezone.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetTimezone
   * @function getTypeUrl
   * @memberof ReqSetTimezone
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetTimezone.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetTimezone";
  };

  return ReqSetTimezone;
})();

$root.ReqSetMtpMode = (function () {
  /**
   * Properties of a ReqSetMtpMode.
   * @exports IReqSetMtpMode
   * @interface IReqSetMtpMode
   * @property {number|null} [mode] ReqSetMtpMode mode
   */

  /**
   * Constructs a new ReqSetMtpMode.
   * @exports ReqSetMtpMode
   * @classdesc Represents a ReqSetMtpMode.
   * @implements IReqSetMtpMode
   * @constructor
   * @param {IReqSetMtpMode=} [properties] Properties to set
   */
  function ReqSetMtpMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetMtpMode mode.
   * @member {number} mode
   * @memberof ReqSetMtpMode
   * @instance
   */
  ReqSetMtpMode.prototype.mode = 0;

  /**
   * Creates a new ReqSetMtpMode instance using the specified properties.
   * @function create
   * @memberof ReqSetMtpMode
   * @static
   * @param {IReqSetMtpMode=} [properties] Properties to set
   * @returns {ReqSetMtpMode} ReqSetMtpMode instance
   */
  ReqSetMtpMode.create = function create(properties) {
    return new ReqSetMtpMode(properties);
  };

  /**
   * Encodes the specified ReqSetMtpMode message. Does not implicitly {@link ReqSetMtpMode.verify|verify} messages.
   * @function encode
   * @memberof ReqSetMtpMode
   * @static
   * @param {IReqSetMtpMode} message ReqSetMtpMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetMtpMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ReqSetMtpMode message, length delimited. Does not implicitly {@link ReqSetMtpMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetMtpMode
   * @static
   * @param {IReqSetMtpMode} message ReqSetMtpMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetMtpMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetMtpMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetMtpMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetMtpMode} ReqSetMtpMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetMtpMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetMtpMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetMtpMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetMtpMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetMtpMode} ReqSetMtpMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetMtpMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetMtpMode message.
   * @function verify
   * @memberof ReqSetMtpMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetMtpMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetMtpMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetMtpMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetMtpMode} ReqSetMtpMode
   */
  ReqSetMtpMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetMtpMode) return object;
    var message = new $root.ReqSetMtpMode();
    if (object.mode != null) message.mode = object.mode | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetMtpMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetMtpMode
   * @static
   * @param {ReqSetMtpMode} message ReqSetMtpMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetMtpMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ReqSetMtpMode to JSON.
   * @function toJSON
   * @memberof ReqSetMtpMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetMtpMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetMtpMode
   * @function getTypeUrl
   * @memberof ReqSetMtpMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetMtpMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetMtpMode";
  };

  return ReqSetMtpMode;
})();

$root.ReqSetCpuMode = (function () {
  /**
   * Properties of a ReqSetCpuMode.
   * @exports IReqSetCpuMode
   * @interface IReqSetCpuMode
   * @property {number|null} [mode] ReqSetCpuMode mode
   */

  /**
   * Constructs a new ReqSetCpuMode.
   * @exports ReqSetCpuMode
   * @classdesc Represents a ReqSetCpuMode.
   * @implements IReqSetCpuMode
   * @constructor
   * @param {IReqSetCpuMode=} [properties] Properties to set
   */
  function ReqSetCpuMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqSetCpuMode mode.
   * @member {number} mode
   * @memberof ReqSetCpuMode
   * @instance
   */
  ReqSetCpuMode.prototype.mode = 0;

  /**
   * Creates a new ReqSetCpuMode instance using the specified properties.
   * @function create
   * @memberof ReqSetCpuMode
   * @static
   * @param {IReqSetCpuMode=} [properties] Properties to set
   * @returns {ReqSetCpuMode} ReqSetCpuMode instance
   */
  ReqSetCpuMode.create = function create(properties) {
    return new ReqSetCpuMode(properties);
  };

  /**
   * Encodes the specified ReqSetCpuMode message. Does not implicitly {@link ReqSetCpuMode.verify|verify} messages.
   * @function encode
   * @memberof ReqSetCpuMode
   * @static
   * @param {IReqSetCpuMode} message ReqSetCpuMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetCpuMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ReqSetCpuMode message, length delimited. Does not implicitly {@link ReqSetCpuMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqSetCpuMode
   * @static
   * @param {IReqSetCpuMode} message ReqSetCpuMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqSetCpuMode.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqSetCpuMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqSetCpuMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqSetCpuMode} ReqSetCpuMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetCpuMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqSetCpuMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqSetCpuMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqSetCpuMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqSetCpuMode} ReqSetCpuMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqSetCpuMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqSetCpuMode message.
   * @function verify
   * @memberof ReqSetCpuMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqSetCpuMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ReqSetCpuMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqSetCpuMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqSetCpuMode} ReqSetCpuMode
   */
  ReqSetCpuMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqSetCpuMode) return object;
    var message = new $root.ReqSetCpuMode();
    if (object.mode != null) message.mode = object.mode | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqSetCpuMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqSetCpuMode
   * @static
   * @param {ReqSetCpuMode} message ReqSetCpuMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqSetCpuMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ReqSetCpuMode to JSON.
   * @function toJSON
   * @memberof ReqSetCpuMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqSetCpuMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqSetCpuMode
   * @function getTypeUrl
   * @memberof ReqSetCpuMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqSetCpuMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqSetCpuMode";
  };

  return ReqSetCpuMode;
})();

$root.ReqsetMasterLock = (function () {
  /**
   * Properties of a ReqsetMasterLock.
   * @exports IReqsetMasterLock
   * @interface IReqsetMasterLock
   * @property {boolean|null} [lock] ReqsetMasterLock lock
   */

  /**
   * Constructs a new ReqsetMasterLock.
   * @exports ReqsetMasterLock
   * @classdesc Represents a ReqsetMasterLock.
   * @implements IReqsetMasterLock
   * @constructor
   * @param {IReqsetMasterLock=} [properties] Properties to set
   */
  function ReqsetMasterLock(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqsetMasterLock lock.
   * @member {boolean} lock
   * @memberof ReqsetMasterLock
   * @instance
   */
  ReqsetMasterLock.prototype.lock = false;

  /**
   * Creates a new ReqsetMasterLock instance using the specified properties.
   * @function create
   * @memberof ReqsetMasterLock
   * @static
   * @param {IReqsetMasterLock=} [properties] Properties to set
   * @returns {ReqsetMasterLock} ReqsetMasterLock instance
   */
  ReqsetMasterLock.create = function create(properties) {
    return new ReqsetMasterLock(properties);
  };

  /**
   * Encodes the specified ReqsetMasterLock message. Does not implicitly {@link ReqsetMasterLock.verify|verify} messages.
   * @function encode
   * @memberof ReqsetMasterLock
   * @static
   * @param {IReqsetMasterLock} message ReqsetMasterLock message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqsetMasterLock.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.lock != null && Object.hasOwnProperty.call(message, "lock"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).bool(message.lock);
    return writer;
  };

  /**
   * Encodes the specified ReqsetMasterLock message, length delimited. Does not implicitly {@link ReqsetMasterLock.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqsetMasterLock
   * @static
   * @param {IReqsetMasterLock} message ReqsetMasterLock message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqsetMasterLock.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqsetMasterLock message from the specified reader or buffer.
   * @function decode
   * @memberof ReqsetMasterLock
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqsetMasterLock} ReqsetMasterLock
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqsetMasterLock.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqsetMasterLock();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.lock = reader.bool();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqsetMasterLock message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqsetMasterLock
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqsetMasterLock} ReqsetMasterLock
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqsetMasterLock.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqsetMasterLock message.
   * @function verify
   * @memberof ReqsetMasterLock
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqsetMasterLock.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.lock != null && message.hasOwnProperty("lock"))
      if (typeof message.lock !== "boolean") return "lock: boolean expected";
    return null;
  };

  /**
   * Creates a ReqsetMasterLock message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqsetMasterLock
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqsetMasterLock} ReqsetMasterLock
   */
  ReqsetMasterLock.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqsetMasterLock) return object;
    var message = new $root.ReqsetMasterLock();
    if (object.lock != null) message.lock = Boolean(object.lock);
    return message;
  };

  /**
   * Creates a plain object from a ReqsetMasterLock message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqsetMasterLock
   * @static
   * @param {ReqsetMasterLock} message ReqsetMasterLock
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqsetMasterLock.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.lock = false;
    if (message.lock != null && message.hasOwnProperty("lock"))
      object.lock = message.lock;
    return object;
  };

  /**
   * Converts this ReqsetMasterLock to JSON.
   * @function toJSON
   * @memberof ReqsetMasterLock
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqsetMasterLock.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqsetMasterLock
   * @function getTypeUrl
   * @memberof ReqsetMasterLock
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqsetMasterLock.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqsetMasterLock";
  };

  return ReqsetMasterLock;
})();

$root.ReqGetDeviceActivateInfo = (function () {
  /**
   * Properties of a ReqGetDeviceActivateInfo.
   * @exports IReqGetDeviceActivateInfo
   * @interface IReqGetDeviceActivateInfo
   * @property {number|null} [issuer] ReqGetDeviceActivateInfo issuer
   */

  /**
   * Constructs a new ReqGetDeviceActivateInfo.
   * @exports ReqGetDeviceActivateInfo
   * @classdesc Represents a ReqGetDeviceActivateInfo.
   * @implements IReqGetDeviceActivateInfo
   * @constructor
   * @param {IReqGetDeviceActivateInfo=} [properties] Properties to set
   */
  function ReqGetDeviceActivateInfo(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqGetDeviceActivateInfo issuer.
   * @member {number} issuer
   * @memberof ReqGetDeviceActivateInfo
   * @instance
   */
  ReqGetDeviceActivateInfo.prototype.issuer = 0;

  /**
   * Creates a new ReqGetDeviceActivateInfo instance using the specified properties.
   * @function create
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {IReqGetDeviceActivateInfo=} [properties] Properties to set
   * @returns {ReqGetDeviceActivateInfo} ReqGetDeviceActivateInfo instance
   */
  ReqGetDeviceActivateInfo.create = function create(properties) {
    return new ReqGetDeviceActivateInfo(properties);
  };

  /**
   * Encodes the specified ReqGetDeviceActivateInfo message. Does not implicitly {@link ReqGetDeviceActivateInfo.verify|verify} messages.
   * @function encode
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {IReqGetDeviceActivateInfo} message ReqGetDeviceActivateInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetDeviceActivateInfo.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.issuer != null && Object.hasOwnProperty.call(message, "issuer"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.issuer);
    return writer;
  };

  /**
   * Encodes the specified ReqGetDeviceActivateInfo message, length delimited. Does not implicitly {@link ReqGetDeviceActivateInfo.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {IReqGetDeviceActivateInfo} message ReqGetDeviceActivateInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqGetDeviceActivateInfo.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqGetDeviceActivateInfo message from the specified reader or buffer.
   * @function decode
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqGetDeviceActivateInfo} ReqGetDeviceActivateInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetDeviceActivateInfo.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqGetDeviceActivateInfo();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.issuer = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqGetDeviceActivateInfo message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqGetDeviceActivateInfo} ReqGetDeviceActivateInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqGetDeviceActivateInfo.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqGetDeviceActivateInfo message.
   * @function verify
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqGetDeviceActivateInfo.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.issuer != null && message.hasOwnProperty("issuer"))
      if (!$util.isInteger(message.issuer)) return "issuer: integer expected";
    return null;
  };

  /**
   * Creates a ReqGetDeviceActivateInfo message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqGetDeviceActivateInfo} ReqGetDeviceActivateInfo
   */
  ReqGetDeviceActivateInfo.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqGetDeviceActivateInfo) return object;
    var message = new $root.ReqGetDeviceActivateInfo();
    if (object.issuer != null) message.issuer = object.issuer | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqGetDeviceActivateInfo message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {ReqGetDeviceActivateInfo} message ReqGetDeviceActivateInfo
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqGetDeviceActivateInfo.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.issuer = 0;
    if (message.issuer != null && message.hasOwnProperty("issuer"))
      object.issuer = message.issuer;
    return object;
  };

  /**
   * Converts this ReqGetDeviceActivateInfo to JSON.
   * @function toJSON
   * @memberof ReqGetDeviceActivateInfo
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqGetDeviceActivateInfo.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqGetDeviceActivateInfo
   * @function getTypeUrl
   * @memberof ReqGetDeviceActivateInfo
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqGetDeviceActivateInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqGetDeviceActivateInfo";
  };

  return ReqGetDeviceActivateInfo;
})();

$root.ResDeviceActivateInfo = (function () {
  /**
   * Properties of a ResDeviceActivateInfo.
   * @exports IResDeviceActivateInfo
   * @interface IResDeviceActivateInfo
   * @property {number|null} [activateState] ResDeviceActivateInfo activateState
   * @property {number|null} [activateProcessState] ResDeviceActivateInfo activateProcessState
   * @property {string|null} [requestParam] ResDeviceActivateInfo requestParam
   */

  /**
   * Constructs a new ResDeviceActivateInfo.
   * @exports ResDeviceActivateInfo
   * @classdesc Represents a ResDeviceActivateInfo.
   * @implements IResDeviceActivateInfo
   * @constructor
   * @param {IResDeviceActivateInfo=} [properties] Properties to set
   */
  function ResDeviceActivateInfo(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResDeviceActivateInfo activateState.
   * @member {number} activateState
   * @memberof ResDeviceActivateInfo
   * @instance
   */
  ResDeviceActivateInfo.prototype.activateState = 0;

  /**
   * ResDeviceActivateInfo activateProcessState.
   * @member {number} activateProcessState
   * @memberof ResDeviceActivateInfo
   * @instance
   */
  ResDeviceActivateInfo.prototype.activateProcessState = 0;

  /**
   * ResDeviceActivateInfo requestParam.
   * @member {string} requestParam
   * @memberof ResDeviceActivateInfo
   * @instance
   */
  ResDeviceActivateInfo.prototype.requestParam = "";

  /**
   * Creates a new ResDeviceActivateInfo instance using the specified properties.
   * @function create
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {IResDeviceActivateInfo=} [properties] Properties to set
   * @returns {ResDeviceActivateInfo} ResDeviceActivateInfo instance
   */
  ResDeviceActivateInfo.create = function create(properties) {
    return new ResDeviceActivateInfo(properties);
  };

  /**
   * Encodes the specified ResDeviceActivateInfo message. Does not implicitly {@link ResDeviceActivateInfo.verify|verify} messages.
   * @function encode
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {IResDeviceActivateInfo} message ResDeviceActivateInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDeviceActivateInfo.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.activateState != null &&
      Object.hasOwnProperty.call(message, "activateState")
    )
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.activateState);
    if (
      message.activateProcessState != null &&
      Object.hasOwnProperty.call(message, "activateProcessState")
    )
      writer
        .uint32(/* id 2, wireType 0 =*/ 16)
        .int32(message.activateProcessState);
    if (
      message.requestParam != null &&
      Object.hasOwnProperty.call(message, "requestParam")
    )
      writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.requestParam);
    return writer;
  };

  /**
   * Encodes the specified ResDeviceActivateInfo message, length delimited. Does not implicitly {@link ResDeviceActivateInfo.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {IResDeviceActivateInfo} message ResDeviceActivateInfo message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDeviceActivateInfo.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResDeviceActivateInfo message from the specified reader or buffer.
   * @function decode
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResDeviceActivateInfo} ResDeviceActivateInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDeviceActivateInfo.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResDeviceActivateInfo();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.activateState = reader.int32();
          break;
        }
        case 2: {
          message.activateProcessState = reader.int32();
          break;
        }
        case 3: {
          message.requestParam = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResDeviceActivateInfo message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResDeviceActivateInfo} ResDeviceActivateInfo
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDeviceActivateInfo.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResDeviceActivateInfo message.
   * @function verify
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResDeviceActivateInfo.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (
      message.activateState != null &&
      message.hasOwnProperty("activateState")
    )
      if (!$util.isInteger(message.activateState))
        return "activateState: integer expected";
    if (
      message.activateProcessState != null &&
      message.hasOwnProperty("activateProcessState")
    )
      if (!$util.isInteger(message.activateProcessState))
        return "activateProcessState: integer expected";
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      if (!$util.isString(message.requestParam))
        return "requestParam: string expected";
    return null;
  };

  /**
   * Creates a ResDeviceActivateInfo message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResDeviceActivateInfo} ResDeviceActivateInfo
   */
  ResDeviceActivateInfo.fromObject = function fromObject(object) {
    if (object instanceof $root.ResDeviceActivateInfo) return object;
    var message = new $root.ResDeviceActivateInfo();
    if (object.activateState != null)
      message.activateState = object.activateState | 0;
    if (object.activateProcessState != null)
      message.activateProcessState = object.activateProcessState | 0;
    if (object.requestParam != null)
      message.requestParam = String(object.requestParam);
    return message;
  };

  /**
   * Creates a plain object from a ResDeviceActivateInfo message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {ResDeviceActivateInfo} message ResDeviceActivateInfo
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResDeviceActivateInfo.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.activateState = 0;
      object.activateProcessState = 0;
      object.requestParam = "";
    }
    if (
      message.activateState != null &&
      message.hasOwnProperty("activateState")
    )
      object.activateState = message.activateState;
    if (
      message.activateProcessState != null &&
      message.hasOwnProperty("activateProcessState")
    )
      object.activateProcessState = message.activateProcessState;
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      object.requestParam = message.requestParam;
    return object;
  };

  /**
   * Converts this ResDeviceActivateInfo to JSON.
   * @function toJSON
   * @memberof ResDeviceActivateInfo
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResDeviceActivateInfo.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResDeviceActivateInfo
   * @function getTypeUrl
   * @memberof ResDeviceActivateInfo
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResDeviceActivateInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResDeviceActivateInfo";
  };

  return ResDeviceActivateInfo;
})();

$root.ReqDeviceActivateWriteFile = (function () {
  /**
   * Properties of a ReqDeviceActivateWriteFile.
   * @exports IReqDeviceActivateWriteFile
   * @interface IReqDeviceActivateWriteFile
   * @property {string|null} [requestParam] ReqDeviceActivateWriteFile requestParam
   */

  /**
   * Constructs a new ReqDeviceActivateWriteFile.
   * @exports ReqDeviceActivateWriteFile
   * @classdesc Represents a ReqDeviceActivateWriteFile.
   * @implements IReqDeviceActivateWriteFile
   * @constructor
   * @param {IReqDeviceActivateWriteFile=} [properties] Properties to set
   */
  function ReqDeviceActivateWriteFile(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDeviceActivateWriteFile requestParam.
   * @member {string} requestParam
   * @memberof ReqDeviceActivateWriteFile
   * @instance
   */
  ReqDeviceActivateWriteFile.prototype.requestParam = "";

  /**
   * Creates a new ReqDeviceActivateWriteFile instance using the specified properties.
   * @function create
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {IReqDeviceActivateWriteFile=} [properties] Properties to set
   * @returns {ReqDeviceActivateWriteFile} ReqDeviceActivateWriteFile instance
   */
  ReqDeviceActivateWriteFile.create = function create(properties) {
    return new ReqDeviceActivateWriteFile(properties);
  };

  /**
   * Encodes the specified ReqDeviceActivateWriteFile message. Does not implicitly {@link ReqDeviceActivateWriteFile.verify|verify} messages.
   * @function encode
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {IReqDeviceActivateWriteFile} message ReqDeviceActivateWriteFile message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDeviceActivateWriteFile.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.requestParam != null &&
      Object.hasOwnProperty.call(message, "requestParam")
    )
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.requestParam);
    return writer;
  };

  /**
   * Encodes the specified ReqDeviceActivateWriteFile message, length delimited. Does not implicitly {@link ReqDeviceActivateWriteFile.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {IReqDeviceActivateWriteFile} message ReqDeviceActivateWriteFile message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDeviceActivateWriteFile.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDeviceActivateWriteFile message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDeviceActivateWriteFile} ReqDeviceActivateWriteFile
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDeviceActivateWriteFile.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDeviceActivateWriteFile();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.requestParam = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDeviceActivateWriteFile message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDeviceActivateWriteFile} ReqDeviceActivateWriteFile
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDeviceActivateWriteFile.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDeviceActivateWriteFile message.
   * @function verify
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDeviceActivateWriteFile.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      if (!$util.isString(message.requestParam))
        return "requestParam: string expected";
    return null;
  };

  /**
   * Creates a ReqDeviceActivateWriteFile message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDeviceActivateWriteFile} ReqDeviceActivateWriteFile
   */
  ReqDeviceActivateWriteFile.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDeviceActivateWriteFile) return object;
    var message = new $root.ReqDeviceActivateWriteFile();
    if (object.requestParam != null)
      message.requestParam = String(object.requestParam);
    return message;
  };

  /**
   * Creates a plain object from a ReqDeviceActivateWriteFile message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {ReqDeviceActivateWriteFile} message ReqDeviceActivateWriteFile
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDeviceActivateWriteFile.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.requestParam = "";
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      object.requestParam = message.requestParam;
    return object;
  };

  /**
   * Converts this ReqDeviceActivateWriteFile to JSON.
   * @function toJSON
   * @memberof ReqDeviceActivateWriteFile
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDeviceActivateWriteFile.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDeviceActivateWriteFile
   * @function getTypeUrl
   * @memberof ReqDeviceActivateWriteFile
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDeviceActivateWriteFile.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDeviceActivateWriteFile";
  };

  return ReqDeviceActivateWriteFile;
})();

$root.ResDeviceActivateWriteFile = (function () {
  /**
   * Properties of a ResDeviceActivateWriteFile.
   * @exports IResDeviceActivateWriteFile
   * @interface IResDeviceActivateWriteFile
   * @property {number|null} [code] ResDeviceActivateWriteFile code
   * @property {string|null} [requestParam] ResDeviceActivateWriteFile requestParam
   */

  /**
   * Constructs a new ResDeviceActivateWriteFile.
   * @exports ResDeviceActivateWriteFile
   * @classdesc Represents a ResDeviceActivateWriteFile.
   * @implements IResDeviceActivateWriteFile
   * @constructor
   * @param {IResDeviceActivateWriteFile=} [properties] Properties to set
   */
  function ResDeviceActivateWriteFile(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResDeviceActivateWriteFile code.
   * @member {number} code
   * @memberof ResDeviceActivateWriteFile
   * @instance
   */
  ResDeviceActivateWriteFile.prototype.code = 0;

  /**
   * ResDeviceActivateWriteFile requestParam.
   * @member {string} requestParam
   * @memberof ResDeviceActivateWriteFile
   * @instance
   */
  ResDeviceActivateWriteFile.prototype.requestParam = "";

  /**
   * Creates a new ResDeviceActivateWriteFile instance using the specified properties.
   * @function create
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {IResDeviceActivateWriteFile=} [properties] Properties to set
   * @returns {ResDeviceActivateWriteFile} ResDeviceActivateWriteFile instance
   */
  ResDeviceActivateWriteFile.create = function create(properties) {
    return new ResDeviceActivateWriteFile(properties);
  };

  /**
   * Encodes the specified ResDeviceActivateWriteFile message. Does not implicitly {@link ResDeviceActivateWriteFile.verify|verify} messages.
   * @function encode
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {IResDeviceActivateWriteFile} message ResDeviceActivateWriteFile message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDeviceActivateWriteFile.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    if (
      message.requestParam != null &&
      Object.hasOwnProperty.call(message, "requestParam")
    )
      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.requestParam);
    return writer;
  };

  /**
   * Encodes the specified ResDeviceActivateWriteFile message, length delimited. Does not implicitly {@link ResDeviceActivateWriteFile.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {IResDeviceActivateWriteFile} message ResDeviceActivateWriteFile message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDeviceActivateWriteFile.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResDeviceActivateWriteFile message from the specified reader or buffer.
   * @function decode
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResDeviceActivateWriteFile} ResDeviceActivateWriteFile
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDeviceActivateWriteFile.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResDeviceActivateWriteFile();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        case 2: {
          message.requestParam = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResDeviceActivateWriteFile message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResDeviceActivateWriteFile} ResDeviceActivateWriteFile
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDeviceActivateWriteFile.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResDeviceActivateWriteFile message.
   * @function verify
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResDeviceActivateWriteFile.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      if (!$util.isString(message.requestParam))
        return "requestParam: string expected";
    return null;
  };

  /**
   * Creates a ResDeviceActivateWriteFile message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResDeviceActivateWriteFile} ResDeviceActivateWriteFile
   */
  ResDeviceActivateWriteFile.fromObject = function fromObject(object) {
    if (object instanceof $root.ResDeviceActivateWriteFile) return object;
    var message = new $root.ResDeviceActivateWriteFile();
    if (object.code != null) message.code = object.code | 0;
    if (object.requestParam != null)
      message.requestParam = String(object.requestParam);
    return message;
  };

  /**
   * Creates a plain object from a ResDeviceActivateWriteFile message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {ResDeviceActivateWriteFile} message ResDeviceActivateWriteFile
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResDeviceActivateWriteFile.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.code = 0;
      object.requestParam = "";
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      object.requestParam = message.requestParam;
    return object;
  };

  /**
   * Converts this ResDeviceActivateWriteFile to JSON.
   * @function toJSON
   * @memberof ResDeviceActivateWriteFile
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResDeviceActivateWriteFile.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResDeviceActivateWriteFile
   * @function getTypeUrl
   * @memberof ResDeviceActivateWriteFile
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResDeviceActivateWriteFile.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResDeviceActivateWriteFile";
  };

  return ResDeviceActivateWriteFile;
})();

$root.ReqDeviceActivateSuccessfull = (function () {
  /**
   * Properties of a ReqDeviceActivateSuccessfull.
   * @exports IReqDeviceActivateSuccessfull
   * @interface IReqDeviceActivateSuccessfull
   * @property {string|null} [requestParam] ReqDeviceActivateSuccessfull requestParam
   */

  /**
   * Constructs a new ReqDeviceActivateSuccessfull.
   * @exports ReqDeviceActivateSuccessfull
   * @classdesc Represents a ReqDeviceActivateSuccessfull.
   * @implements IReqDeviceActivateSuccessfull
   * @constructor
   * @param {IReqDeviceActivateSuccessfull=} [properties] Properties to set
   */
  function ReqDeviceActivateSuccessfull(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDeviceActivateSuccessfull requestParam.
   * @member {string} requestParam
   * @memberof ReqDeviceActivateSuccessfull
   * @instance
   */
  ReqDeviceActivateSuccessfull.prototype.requestParam = "";

  /**
   * Creates a new ReqDeviceActivateSuccessfull instance using the specified properties.
   * @function create
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {IReqDeviceActivateSuccessfull=} [properties] Properties to set
   * @returns {ReqDeviceActivateSuccessfull} ReqDeviceActivateSuccessfull instance
   */
  ReqDeviceActivateSuccessfull.create = function create(properties) {
    return new ReqDeviceActivateSuccessfull(properties);
  };

  /**
   * Encodes the specified ReqDeviceActivateSuccessfull message. Does not implicitly {@link ReqDeviceActivateSuccessfull.verify|verify} messages.
   * @function encode
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {IReqDeviceActivateSuccessfull} message ReqDeviceActivateSuccessfull message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDeviceActivateSuccessfull.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.requestParam != null &&
      Object.hasOwnProperty.call(message, "requestParam")
    )
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.requestParam);
    return writer;
  };

  /**
   * Encodes the specified ReqDeviceActivateSuccessfull message, length delimited. Does not implicitly {@link ReqDeviceActivateSuccessfull.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {IReqDeviceActivateSuccessfull} message ReqDeviceActivateSuccessfull message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDeviceActivateSuccessfull.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDeviceActivateSuccessfull message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDeviceActivateSuccessfull} ReqDeviceActivateSuccessfull
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDeviceActivateSuccessfull.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDeviceActivateSuccessfull();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.requestParam = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDeviceActivateSuccessfull message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDeviceActivateSuccessfull} ReqDeviceActivateSuccessfull
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDeviceActivateSuccessfull.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDeviceActivateSuccessfull message.
   * @function verify
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDeviceActivateSuccessfull.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      if (!$util.isString(message.requestParam))
        return "requestParam: string expected";
    return null;
  };

  /**
   * Creates a ReqDeviceActivateSuccessfull message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDeviceActivateSuccessfull} ReqDeviceActivateSuccessfull
   */
  ReqDeviceActivateSuccessfull.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDeviceActivateSuccessfull) return object;
    var message = new $root.ReqDeviceActivateSuccessfull();
    if (object.requestParam != null)
      message.requestParam = String(object.requestParam);
    return message;
  };

  /**
   * Creates a plain object from a ReqDeviceActivateSuccessfull message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {ReqDeviceActivateSuccessfull} message ReqDeviceActivateSuccessfull
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDeviceActivateSuccessfull.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.requestParam = "";
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      object.requestParam = message.requestParam;
    return object;
  };

  /**
   * Converts this ReqDeviceActivateSuccessfull to JSON.
   * @function toJSON
   * @memberof ReqDeviceActivateSuccessfull
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDeviceActivateSuccessfull.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDeviceActivateSuccessfull
   * @function getTypeUrl
   * @memberof ReqDeviceActivateSuccessfull
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDeviceActivateSuccessfull.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDeviceActivateSuccessfull";
  };

  return ReqDeviceActivateSuccessfull;
})();

$root.ResDeviceActivateSuccessfull = (function () {
  /**
   * Properties of a ResDeviceActivateSuccessfull.
   * @exports IResDeviceActivateSuccessfull
   * @interface IResDeviceActivateSuccessfull
   * @property {number|null} [code] ResDeviceActivateSuccessfull code
   * @property {number|null} [activateState] ResDeviceActivateSuccessfull activateState
   */

  /**
   * Constructs a new ResDeviceActivateSuccessfull.
   * @exports ResDeviceActivateSuccessfull
   * @classdesc Represents a ResDeviceActivateSuccessfull.
   * @implements IResDeviceActivateSuccessfull
   * @constructor
   * @param {IResDeviceActivateSuccessfull=} [properties] Properties to set
   */
  function ResDeviceActivateSuccessfull(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResDeviceActivateSuccessfull code.
   * @member {number} code
   * @memberof ResDeviceActivateSuccessfull
   * @instance
   */
  ResDeviceActivateSuccessfull.prototype.code = 0;

  /**
   * ResDeviceActivateSuccessfull activateState.
   * @member {number} activateState
   * @memberof ResDeviceActivateSuccessfull
   * @instance
   */
  ResDeviceActivateSuccessfull.prototype.activateState = 0;

  /**
   * Creates a new ResDeviceActivateSuccessfull instance using the specified properties.
   * @function create
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {IResDeviceActivateSuccessfull=} [properties] Properties to set
   * @returns {ResDeviceActivateSuccessfull} ResDeviceActivateSuccessfull instance
   */
  ResDeviceActivateSuccessfull.create = function create(properties) {
    return new ResDeviceActivateSuccessfull(properties);
  };

  /**
   * Encodes the specified ResDeviceActivateSuccessfull message. Does not implicitly {@link ResDeviceActivateSuccessfull.verify|verify} messages.
   * @function encode
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {IResDeviceActivateSuccessfull} message ResDeviceActivateSuccessfull message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDeviceActivateSuccessfull.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    if (
      message.activateState != null &&
      Object.hasOwnProperty.call(message, "activateState")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.activateState);
    return writer;
  };

  /**
   * Encodes the specified ResDeviceActivateSuccessfull message, length delimited. Does not implicitly {@link ResDeviceActivateSuccessfull.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {IResDeviceActivateSuccessfull} message ResDeviceActivateSuccessfull message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDeviceActivateSuccessfull.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResDeviceActivateSuccessfull message from the specified reader or buffer.
   * @function decode
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResDeviceActivateSuccessfull} ResDeviceActivateSuccessfull
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDeviceActivateSuccessfull.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResDeviceActivateSuccessfull();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        case 2: {
          message.activateState = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResDeviceActivateSuccessfull message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResDeviceActivateSuccessfull} ResDeviceActivateSuccessfull
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDeviceActivateSuccessfull.decodeDelimited = function decodeDelimited(
    reader
  ) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResDeviceActivateSuccessfull message.
   * @function verify
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResDeviceActivateSuccessfull.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (
      message.activateState != null &&
      message.hasOwnProperty("activateState")
    )
      if (!$util.isInteger(message.activateState))
        return "activateState: integer expected";
    return null;
  };

  /**
   * Creates a ResDeviceActivateSuccessfull message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResDeviceActivateSuccessfull} ResDeviceActivateSuccessfull
   */
  ResDeviceActivateSuccessfull.fromObject = function fromObject(object) {
    if (object instanceof $root.ResDeviceActivateSuccessfull) return object;
    var message = new $root.ResDeviceActivateSuccessfull();
    if (object.code != null) message.code = object.code | 0;
    if (object.activateState != null)
      message.activateState = object.activateState | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResDeviceActivateSuccessfull message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {ResDeviceActivateSuccessfull} message ResDeviceActivateSuccessfull
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResDeviceActivateSuccessfull.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.code = 0;
      object.activateState = 0;
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (
      message.activateState != null &&
      message.hasOwnProperty("activateState")
    )
      object.activateState = message.activateState;
    return object;
  };

  /**
   * Converts this ResDeviceActivateSuccessfull to JSON.
   * @function toJSON
   * @memberof ResDeviceActivateSuccessfull
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResDeviceActivateSuccessfull.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResDeviceActivateSuccessfull
   * @function getTypeUrl
   * @memberof ResDeviceActivateSuccessfull
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResDeviceActivateSuccessfull.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResDeviceActivateSuccessfull";
  };

  return ResDeviceActivateSuccessfull;
})();

$root.ReqDisableDeviceActivate = (function () {
  /**
   * Properties of a ReqDisableDeviceActivate.
   * @exports IReqDisableDeviceActivate
   * @interface IReqDisableDeviceActivate
   * @property {string|null} [requestParam] ReqDisableDeviceActivate requestParam
   */

  /**
   * Constructs a new ReqDisableDeviceActivate.
   * @exports ReqDisableDeviceActivate
   * @classdesc Represents a ReqDisableDeviceActivate.
   * @implements IReqDisableDeviceActivate
   * @constructor
   * @param {IReqDisableDeviceActivate=} [properties] Properties to set
   */
  function ReqDisableDeviceActivate(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqDisableDeviceActivate requestParam.
   * @member {string} requestParam
   * @memberof ReqDisableDeviceActivate
   * @instance
   */
  ReqDisableDeviceActivate.prototype.requestParam = "";

  /**
   * Creates a new ReqDisableDeviceActivate instance using the specified properties.
   * @function create
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {IReqDisableDeviceActivate=} [properties] Properties to set
   * @returns {ReqDisableDeviceActivate} ReqDisableDeviceActivate instance
   */
  ReqDisableDeviceActivate.create = function create(properties) {
    return new ReqDisableDeviceActivate(properties);
  };

  /**
   * Encodes the specified ReqDisableDeviceActivate message. Does not implicitly {@link ReqDisableDeviceActivate.verify|verify} messages.
   * @function encode
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {IReqDisableDeviceActivate} message ReqDisableDeviceActivate message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDisableDeviceActivate.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (
      message.requestParam != null &&
      Object.hasOwnProperty.call(message, "requestParam")
    )
      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.requestParam);
    return writer;
  };

  /**
   * Encodes the specified ReqDisableDeviceActivate message, length delimited. Does not implicitly {@link ReqDisableDeviceActivate.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {IReqDisableDeviceActivate} message ReqDisableDeviceActivate message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqDisableDeviceActivate.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqDisableDeviceActivate message from the specified reader or buffer.
   * @function decode
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqDisableDeviceActivate} ReqDisableDeviceActivate
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDisableDeviceActivate.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqDisableDeviceActivate();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.requestParam = reader.string();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqDisableDeviceActivate message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqDisableDeviceActivate} ReqDisableDeviceActivate
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqDisableDeviceActivate.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqDisableDeviceActivate message.
   * @function verify
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqDisableDeviceActivate.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      if (!$util.isString(message.requestParam))
        return "requestParam: string expected";
    return null;
  };

  /**
   * Creates a ReqDisableDeviceActivate message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqDisableDeviceActivate} ReqDisableDeviceActivate
   */
  ReqDisableDeviceActivate.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqDisableDeviceActivate) return object;
    var message = new $root.ReqDisableDeviceActivate();
    if (object.requestParam != null)
      message.requestParam = String(object.requestParam);
    return message;
  };

  /**
   * Creates a plain object from a ReqDisableDeviceActivate message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {ReqDisableDeviceActivate} message ReqDisableDeviceActivate
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqDisableDeviceActivate.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.requestParam = "";
    if (message.requestParam != null && message.hasOwnProperty("requestParam"))
      object.requestParam = message.requestParam;
    return object;
  };

  /**
   * Converts this ReqDisableDeviceActivate to JSON.
   * @function toJSON
   * @memberof ReqDisableDeviceActivate
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqDisableDeviceActivate.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqDisableDeviceActivate
   * @function getTypeUrl
   * @memberof ReqDisableDeviceActivate
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqDisableDeviceActivate.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqDisableDeviceActivate";
  };

  return ReqDisableDeviceActivate;
})();

$root.ResDisableDeviceActivate = (function () {
  /**
   * Properties of a ResDisableDeviceActivate.
   * @exports IResDisableDeviceActivate
   * @interface IResDisableDeviceActivate
   * @property {number|null} [code] ResDisableDeviceActivate code
   * @property {number|null} [activateState] ResDisableDeviceActivate activateState
   */

  /**
   * Constructs a new ResDisableDeviceActivate.
   * @exports ResDisableDeviceActivate
   * @classdesc Represents a ResDisableDeviceActivate.
   * @implements IResDisableDeviceActivate
   * @constructor
   * @param {IResDisableDeviceActivate=} [properties] Properties to set
   */
  function ResDisableDeviceActivate(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ResDisableDeviceActivate code.
   * @member {number} code
   * @memberof ResDisableDeviceActivate
   * @instance
   */
  ResDisableDeviceActivate.prototype.code = 0;

  /**
   * ResDisableDeviceActivate activateState.
   * @member {number} activateState
   * @memberof ResDisableDeviceActivate
   * @instance
   */
  ResDisableDeviceActivate.prototype.activateState = 0;

  /**
   * Creates a new ResDisableDeviceActivate instance using the specified properties.
   * @function create
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {IResDisableDeviceActivate=} [properties] Properties to set
   * @returns {ResDisableDeviceActivate} ResDisableDeviceActivate instance
   */
  ResDisableDeviceActivate.create = function create(properties) {
    return new ResDisableDeviceActivate(properties);
  };

  /**
   * Encodes the specified ResDisableDeviceActivate message. Does not implicitly {@link ResDisableDeviceActivate.verify|verify} messages.
   * @function encode
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {IResDisableDeviceActivate} message ResDisableDeviceActivate message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDisableDeviceActivate.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.code != null && Object.hasOwnProperty.call(message, "code"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.code);
    if (
      message.activateState != null &&
      Object.hasOwnProperty.call(message, "activateState")
    )
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.activateState);
    return writer;
  };

  /**
   * Encodes the specified ResDisableDeviceActivate message, length delimited. Does not implicitly {@link ResDisableDeviceActivate.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {IResDisableDeviceActivate} message ResDisableDeviceActivate message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ResDisableDeviceActivate.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ResDisableDeviceActivate message from the specified reader or buffer.
   * @function decode
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ResDisableDeviceActivate} ResDisableDeviceActivate
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDisableDeviceActivate.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ResDisableDeviceActivate();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.code = reader.int32();
          break;
        }
        case 2: {
          message.activateState = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ResDisableDeviceActivate message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ResDisableDeviceActivate} ResDisableDeviceActivate
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ResDisableDeviceActivate.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ResDisableDeviceActivate message.
   * @function verify
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ResDisableDeviceActivate.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.code != null && message.hasOwnProperty("code"))
      if (!$util.isInteger(message.code)) return "code: integer expected";
    if (
      message.activateState != null &&
      message.hasOwnProperty("activateState")
    )
      if (!$util.isInteger(message.activateState))
        return "activateState: integer expected";
    return null;
  };

  /**
   * Creates a ResDisableDeviceActivate message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ResDisableDeviceActivate} ResDisableDeviceActivate
   */
  ResDisableDeviceActivate.fromObject = function fromObject(object) {
    if (object instanceof $root.ResDisableDeviceActivate) return object;
    var message = new $root.ResDisableDeviceActivate();
    if (object.code != null) message.code = object.code | 0;
    if (object.activateState != null)
      message.activateState = object.activateState | 0;
    return message;
  };

  /**
   * Creates a plain object from a ResDisableDeviceActivate message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {ResDisableDeviceActivate} message ResDisableDeviceActivate
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ResDisableDeviceActivate.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.code = 0;
      object.activateState = 0;
    }
    if (message.code != null && message.hasOwnProperty("code"))
      object.code = message.code;
    if (
      message.activateState != null &&
      message.hasOwnProperty("activateState")
    )
      object.activateState = message.activateState;
    return object;
  };

  /**
   * Converts this ResDisableDeviceActivate to JSON.
   * @function toJSON
   * @memberof ResDisableDeviceActivate
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ResDisableDeviceActivate.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ResDisableDeviceActivate
   * @function getTypeUrl
   * @memberof ResDisableDeviceActivate
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ResDisableDeviceActivate.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ResDisableDeviceActivate";
  };

  return ResDisableDeviceActivate;
})();

$root.ReqStartTrack = (function () {
  /**
   * Properties of a ReqStartTrack.
   * @exports IReqStartTrack
   * @interface IReqStartTrack
   * @property {number|null} [x] ReqStartTrack x
   * @property {number|null} [y] ReqStartTrack y
   * @property {number|null} [w] ReqStartTrack w
   * @property {number|null} [h] ReqStartTrack h
   */

  /**
   * Constructs a new ReqStartTrack.
   * @exports ReqStartTrack
   * @classdesc Represents a ReqStartTrack.
   * @implements IReqStartTrack
   * @constructor
   * @param {IReqStartTrack=} [properties] Properties to set
   */
  function ReqStartTrack(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqStartTrack x.
   * @member {number} x
   * @memberof ReqStartTrack
   * @instance
   */
  ReqStartTrack.prototype.x = 0;

  /**
   * ReqStartTrack y.
   * @member {number} y
   * @memberof ReqStartTrack
   * @instance
   */
  ReqStartTrack.prototype.y = 0;

  /**
   * ReqStartTrack w.
   * @member {number} w
   * @memberof ReqStartTrack
   * @instance
   */
  ReqStartTrack.prototype.w = 0;

  /**
   * ReqStartTrack h.
   * @member {number} h
   * @memberof ReqStartTrack
   * @instance
   */
  ReqStartTrack.prototype.h = 0;

  /**
   * Creates a new ReqStartTrack instance using the specified properties.
   * @function create
   * @memberof ReqStartTrack
   * @static
   * @param {IReqStartTrack=} [properties] Properties to set
   * @returns {ReqStartTrack} ReqStartTrack instance
   */
  ReqStartTrack.create = function create(properties) {
    return new ReqStartTrack(properties);
  };

  /**
   * Encodes the specified ReqStartTrack message. Does not implicitly {@link ReqStartTrack.verify|verify} messages.
   * @function encode
   * @memberof ReqStartTrack
   * @static
   * @param {IReqStartTrack} message ReqStartTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartTrack.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.x != null && Object.hasOwnProperty.call(message, "x"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.x);
    if (message.y != null && Object.hasOwnProperty.call(message, "y"))
      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.y);
    if (message.w != null && Object.hasOwnProperty.call(message, "w"))
      writer.uint32(/* id 3, wireType 0 =*/ 24).int32(message.w);
    if (message.h != null && Object.hasOwnProperty.call(message, "h"))
      writer.uint32(/* id 4, wireType 0 =*/ 32).int32(message.h);
    return writer;
  };

  /**
   * Encodes the specified ReqStartTrack message, length delimited. Does not implicitly {@link ReqStartTrack.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartTrack
   * @static
   * @param {IReqStartTrack} message ReqStartTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartTrack.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartTrack message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartTrack} ReqStartTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartTrack.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartTrack();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.x = reader.int32();
          break;
        }
        case 2: {
          message.y = reader.int32();
          break;
        }
        case 3: {
          message.w = reader.int32();
          break;
        }
        case 4: {
          message.h = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartTrack message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartTrack} ReqStartTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartTrack.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartTrack message.
   * @function verify
   * @memberof ReqStartTrack
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartTrack.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.x != null && message.hasOwnProperty("x"))
      if (!$util.isInteger(message.x)) return "x: integer expected";
    if (message.y != null && message.hasOwnProperty("y"))
      if (!$util.isInteger(message.y)) return "y: integer expected";
    if (message.w != null && message.hasOwnProperty("w"))
      if (!$util.isInteger(message.w)) return "w: integer expected";
    if (message.h != null && message.hasOwnProperty("h"))
      if (!$util.isInteger(message.h)) return "h: integer expected";
    return null;
  };

  /**
   * Creates a ReqStartTrack message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartTrack
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartTrack} ReqStartTrack
   */
  ReqStartTrack.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartTrack) return object;
    var message = new $root.ReqStartTrack();
    if (object.x != null) message.x = object.x | 0;
    if (object.y != null) message.y = object.y | 0;
    if (object.w != null) message.w = object.w | 0;
    if (object.h != null) message.h = object.h | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqStartTrack message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartTrack
   * @static
   * @param {ReqStartTrack} message ReqStartTrack
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartTrack.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) {
      object.x = 0;
      object.y = 0;
      object.w = 0;
      object.h = 0;
    }
    if (message.x != null && message.hasOwnProperty("x")) object.x = message.x;
    if (message.y != null && message.hasOwnProperty("y")) object.y = message.y;
    if (message.w != null && message.hasOwnProperty("w")) object.w = message.w;
    if (message.h != null && message.hasOwnProperty("h")) object.h = message.h;
    return object;
  };

  /**
   * Converts this ReqStartTrack to JSON.
   * @function toJSON
   * @memberof ReqStartTrack
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartTrack.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartTrack
   * @function getTypeUrl
   * @memberof ReqStartTrack
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartTrack.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartTrack";
  };

  return ReqStartTrack;
})();

$root.ReqStopTrack = (function () {
  /**
   * Properties of a ReqStopTrack.
   * @exports IReqStopTrack
   * @interface IReqStopTrack
   */

  /**
   * Constructs a new ReqStopTrack.
   * @exports ReqStopTrack
   * @classdesc Represents a ReqStopTrack.
   * @implements IReqStopTrack
   * @constructor
   * @param {IReqStopTrack=} [properties] Properties to set
   */
  function ReqStopTrack(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopTrack instance using the specified properties.
   * @function create
   * @memberof ReqStopTrack
   * @static
   * @param {IReqStopTrack=} [properties] Properties to set
   * @returns {ReqStopTrack} ReqStopTrack instance
   */
  ReqStopTrack.create = function create(properties) {
    return new ReqStopTrack(properties);
  };

  /**
   * Encodes the specified ReqStopTrack message. Does not implicitly {@link ReqStopTrack.verify|verify} messages.
   * @function encode
   * @memberof ReqStopTrack
   * @static
   * @param {IReqStopTrack} message ReqStopTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopTrack.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopTrack message, length delimited. Does not implicitly {@link ReqStopTrack.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopTrack
   * @static
   * @param {IReqStopTrack} message ReqStopTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopTrack.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopTrack message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopTrack} ReqStopTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopTrack.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopTrack();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopTrack message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopTrack} ReqStopTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopTrack.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopTrack message.
   * @function verify
   * @memberof ReqStopTrack
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopTrack.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopTrack message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopTrack
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopTrack} ReqStopTrack
   */
  ReqStopTrack.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopTrack) return object;
    return new $root.ReqStopTrack();
  };

  /**
   * Creates a plain object from a ReqStopTrack message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopTrack
   * @static
   * @param {ReqStopTrack} message ReqStopTrack
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopTrack.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopTrack to JSON.
   * @function toJSON
   * @memberof ReqStopTrack
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopTrack.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopTrack
   * @function getTypeUrl
   * @memberof ReqStopTrack
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopTrack.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopTrack";
  };

  return ReqStopTrack;
})();

$root.ReqPauseTrack = (function () {
  /**
   * Properties of a ReqPauseTrack.
   * @exports IReqPauseTrack
   * @interface IReqPauseTrack
   */

  /**
   * Constructs a new ReqPauseTrack.
   * @exports ReqPauseTrack
   * @classdesc Represents a ReqPauseTrack.
   * @implements IReqPauseTrack
   * @constructor
   * @param {IReqPauseTrack=} [properties] Properties to set
   */
  function ReqPauseTrack(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqPauseTrack instance using the specified properties.
   * @function create
   * @memberof ReqPauseTrack
   * @static
   * @param {IReqPauseTrack=} [properties] Properties to set
   * @returns {ReqPauseTrack} ReqPauseTrack instance
   */
  ReqPauseTrack.create = function create(properties) {
    return new ReqPauseTrack(properties);
  };

  /**
   * Encodes the specified ReqPauseTrack message. Does not implicitly {@link ReqPauseTrack.verify|verify} messages.
   * @function encode
   * @memberof ReqPauseTrack
   * @static
   * @param {IReqPauseTrack} message ReqPauseTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqPauseTrack.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqPauseTrack message, length delimited. Does not implicitly {@link ReqPauseTrack.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqPauseTrack
   * @static
   * @param {IReqPauseTrack} message ReqPauseTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqPauseTrack.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqPauseTrack message from the specified reader or buffer.
   * @function decode
   * @memberof ReqPauseTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqPauseTrack} ReqPauseTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqPauseTrack.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqPauseTrack();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqPauseTrack message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqPauseTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqPauseTrack} ReqPauseTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqPauseTrack.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqPauseTrack message.
   * @function verify
   * @memberof ReqPauseTrack
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqPauseTrack.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqPauseTrack message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqPauseTrack
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqPauseTrack} ReqPauseTrack
   */
  ReqPauseTrack.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqPauseTrack) return object;
    return new $root.ReqPauseTrack();
  };

  /**
   * Creates a plain object from a ReqPauseTrack message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqPauseTrack
   * @static
   * @param {ReqPauseTrack} message ReqPauseTrack
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqPauseTrack.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqPauseTrack to JSON.
   * @function toJSON
   * @memberof ReqPauseTrack
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqPauseTrack.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqPauseTrack
   * @function getTypeUrl
   * @memberof ReqPauseTrack
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqPauseTrack.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqPauseTrack";
  };

  return ReqPauseTrack;
})();

$root.ReqContinueTrack = (function () {
  /**
   * Properties of a ReqContinueTrack.
   * @exports IReqContinueTrack
   * @interface IReqContinueTrack
   */

  /**
   * Constructs a new ReqContinueTrack.
   * @exports ReqContinueTrack
   * @classdesc Represents a ReqContinueTrack.
   * @implements IReqContinueTrack
   * @constructor
   * @param {IReqContinueTrack=} [properties] Properties to set
   */
  function ReqContinueTrack(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqContinueTrack instance using the specified properties.
   * @function create
   * @memberof ReqContinueTrack
   * @static
   * @param {IReqContinueTrack=} [properties] Properties to set
   * @returns {ReqContinueTrack} ReqContinueTrack instance
   */
  ReqContinueTrack.create = function create(properties) {
    return new ReqContinueTrack(properties);
  };

  /**
   * Encodes the specified ReqContinueTrack message. Does not implicitly {@link ReqContinueTrack.verify|verify} messages.
   * @function encode
   * @memberof ReqContinueTrack
   * @static
   * @param {IReqContinueTrack} message ReqContinueTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqContinueTrack.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqContinueTrack message, length delimited. Does not implicitly {@link ReqContinueTrack.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqContinueTrack
   * @static
   * @param {IReqContinueTrack} message ReqContinueTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqContinueTrack.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqContinueTrack message from the specified reader or buffer.
   * @function decode
   * @memberof ReqContinueTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqContinueTrack} ReqContinueTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqContinueTrack.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqContinueTrack();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqContinueTrack message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqContinueTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqContinueTrack} ReqContinueTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqContinueTrack.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqContinueTrack message.
   * @function verify
   * @memberof ReqContinueTrack
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqContinueTrack.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqContinueTrack message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqContinueTrack
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqContinueTrack} ReqContinueTrack
   */
  ReqContinueTrack.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqContinueTrack) return object;
    return new $root.ReqContinueTrack();
  };

  /**
   * Creates a plain object from a ReqContinueTrack message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqContinueTrack
   * @static
   * @param {ReqContinueTrack} message ReqContinueTrack
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqContinueTrack.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqContinueTrack to JSON.
   * @function toJSON
   * @memberof ReqContinueTrack
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqContinueTrack.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqContinueTrack
   * @function getTypeUrl
   * @memberof ReqContinueTrack
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqContinueTrack.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqContinueTrack";
  };

  return ReqContinueTrack;
})();

$root.ReqStartSentryMode = (function () {
  /**
   * Properties of a ReqStartSentryMode.
   * @exports IReqStartSentryMode
   * @interface IReqStartSentryMode
   * @property {number|null} [mode] ReqStartSentryMode mode
   */

  /**
   * Constructs a new ReqStartSentryMode.
   * @exports ReqStartSentryMode
   * @classdesc Represents a ReqStartSentryMode.
   * @implements IReqStartSentryMode
   * @constructor
   * @param {IReqStartSentryMode=} [properties] Properties to set
   */
  function ReqStartSentryMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqStartSentryMode mode.
   * @member {number} mode
   * @memberof ReqStartSentryMode
   * @instance
   */
  ReqStartSentryMode.prototype.mode = 0;

  /**
   * Creates a new ReqStartSentryMode instance using the specified properties.
   * @function create
   * @memberof ReqStartSentryMode
   * @static
   * @param {IReqStartSentryMode=} [properties] Properties to set
   * @returns {ReqStartSentryMode} ReqStartSentryMode instance
   */
  ReqStartSentryMode.create = function create(properties) {
    return new ReqStartSentryMode(properties);
  };

  /**
   * Encodes the specified ReqStartSentryMode message. Does not implicitly {@link ReqStartSentryMode.verify|verify} messages.
   * @function encode
   * @memberof ReqStartSentryMode
   * @static
   * @param {IReqStartSentryMode} message ReqStartSentryMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartSentryMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.mode != null && Object.hasOwnProperty.call(message, "mode"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.mode);
    return writer;
  };

  /**
   * Encodes the specified ReqStartSentryMode message, length delimited. Does not implicitly {@link ReqStartSentryMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStartSentryMode
   * @static
   * @param {IReqStartSentryMode} message ReqStartSentryMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStartSentryMode.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStartSentryMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStartSentryMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStartSentryMode} ReqStartSentryMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartSentryMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStartSentryMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.mode = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStartSentryMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStartSentryMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStartSentryMode} ReqStartSentryMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStartSentryMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStartSentryMode message.
   * @function verify
   * @memberof ReqStartSentryMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStartSentryMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.mode != null && message.hasOwnProperty("mode"))
      if (!$util.isInteger(message.mode)) return "mode: integer expected";
    return null;
  };

  /**
   * Creates a ReqStartSentryMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStartSentryMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStartSentryMode} ReqStartSentryMode
   */
  ReqStartSentryMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStartSentryMode) return object;
    var message = new $root.ReqStartSentryMode();
    if (object.mode != null) message.mode = object.mode | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqStartSentryMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStartSentryMode
   * @static
   * @param {ReqStartSentryMode} message ReqStartSentryMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStartSentryMode.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.mode = 0;
    if (message.mode != null && message.hasOwnProperty("mode"))
      object.mode = message.mode;
    return object;
  };

  /**
   * Converts this ReqStartSentryMode to JSON.
   * @function toJSON
   * @memberof ReqStartSentryMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStartSentryMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStartSentryMode
   * @function getTypeUrl
   * @memberof ReqStartSentryMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStartSentryMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStartSentryMode";
  };

  return ReqStartSentryMode;
})();

$root.ReqStopSentryMode = (function () {
  /**
   * Properties of a ReqStopSentryMode.
   * @exports IReqStopSentryMode
   * @interface IReqStopSentryMode
   */

  /**
   * Constructs a new ReqStopSentryMode.
   * @exports ReqStopSentryMode
   * @classdesc Represents a ReqStopSentryMode.
   * @implements IReqStopSentryMode
   * @constructor
   * @param {IReqStopSentryMode=} [properties] Properties to set
   */
  function ReqStopSentryMode(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqStopSentryMode instance using the specified properties.
   * @function create
   * @memberof ReqStopSentryMode
   * @static
   * @param {IReqStopSentryMode=} [properties] Properties to set
   * @returns {ReqStopSentryMode} ReqStopSentryMode instance
   */
  ReqStopSentryMode.create = function create(properties) {
    return new ReqStopSentryMode(properties);
  };

  /**
   * Encodes the specified ReqStopSentryMode message. Does not implicitly {@link ReqStopSentryMode.verify|verify} messages.
   * @function encode
   * @memberof ReqStopSentryMode
   * @static
   * @param {IReqStopSentryMode} message ReqStopSentryMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopSentryMode.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqStopSentryMode message, length delimited. Does not implicitly {@link ReqStopSentryMode.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqStopSentryMode
   * @static
   * @param {IReqStopSentryMode} message ReqStopSentryMode message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqStopSentryMode.encodeDelimited = function encodeDelimited(
    message,
    writer
  ) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqStopSentryMode message from the specified reader or buffer.
   * @function decode
   * @memberof ReqStopSentryMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqStopSentryMode} ReqStopSentryMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopSentryMode.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqStopSentryMode();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqStopSentryMode message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqStopSentryMode
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqStopSentryMode} ReqStopSentryMode
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqStopSentryMode.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqStopSentryMode message.
   * @function verify
   * @memberof ReqStopSentryMode
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqStopSentryMode.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqStopSentryMode message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqStopSentryMode
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqStopSentryMode} ReqStopSentryMode
   */
  ReqStopSentryMode.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqStopSentryMode) return object;
    return new $root.ReqStopSentryMode();
  };

  /**
   * Creates a plain object from a ReqStopSentryMode message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqStopSentryMode
   * @static
   * @param {ReqStopSentryMode} message ReqStopSentryMode
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqStopSentryMode.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqStopSentryMode to JSON.
   * @function toJSON
   * @memberof ReqStopSentryMode
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqStopSentryMode.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqStopSentryMode
   * @function getTypeUrl
   * @memberof ReqStopSentryMode
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqStopSentryMode.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqStopSentryMode";
  };

  return ReqStopSentryMode;
})();

$root.ReqMOTTrack = (function () {
  /**
   * Properties of a ReqMOTTrack.
   * @exports IReqMOTTrack
   * @interface IReqMOTTrack
   */

  /**
   * Constructs a new ReqMOTTrack.
   * @exports ReqMOTTrack
   * @classdesc Represents a ReqMOTTrack.
   * @implements IReqMOTTrack
   * @constructor
   * @param {IReqMOTTrack=} [properties] Properties to set
   */
  function ReqMOTTrack(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * Creates a new ReqMOTTrack instance using the specified properties.
   * @function create
   * @memberof ReqMOTTrack
   * @static
   * @param {IReqMOTTrack=} [properties] Properties to set
   * @returns {ReqMOTTrack} ReqMOTTrack instance
   */
  ReqMOTTrack.create = function create(properties) {
    return new ReqMOTTrack(properties);
  };

  /**
   * Encodes the specified ReqMOTTrack message. Does not implicitly {@link ReqMOTTrack.verify|verify} messages.
   * @function encode
   * @memberof ReqMOTTrack
   * @static
   * @param {IReqMOTTrack} message ReqMOTTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMOTTrack.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    return writer;
  };

  /**
   * Encodes the specified ReqMOTTrack message, length delimited. Does not implicitly {@link ReqMOTTrack.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMOTTrack
   * @static
   * @param {IReqMOTTrack} message ReqMOTTrack message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMOTTrack.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMOTTrack message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMOTTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMOTTrack} ReqMOTTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMOTTrack.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMOTTrack();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMOTTrack message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMOTTrack
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMOTTrack} ReqMOTTrack
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMOTTrack.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMOTTrack message.
   * @function verify
   * @memberof ReqMOTTrack
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMOTTrack.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    return null;
  };

  /**
   * Creates a ReqMOTTrack message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMOTTrack
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMOTTrack} ReqMOTTrack
   */
  ReqMOTTrack.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMOTTrack) return object;
    return new $root.ReqMOTTrack();
  };

  /**
   * Creates a plain object from a ReqMOTTrack message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMOTTrack
   * @static
   * @param {ReqMOTTrack} message ReqMOTTrack
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMOTTrack.toObject = function toObject() {
    return {};
  };

  /**
   * Converts this ReqMOTTrack to JSON.
   * @function toJSON
   * @memberof ReqMOTTrack
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMOTTrack.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMOTTrack
   * @function getTypeUrl
   * @memberof ReqMOTTrack
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMOTTrack.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMOTTrack";
  };

  return ReqMOTTrack;
})();

$root.ReqMOTTrackOne = (function () {
  /**
   * Properties of a ReqMOTTrackOne.
   * @exports IReqMOTTrackOne
   * @interface IReqMOTTrackOne
   * @property {number|null} [id] ReqMOTTrackOne id
   */

  /**
   * Constructs a new ReqMOTTrackOne.
   * @exports ReqMOTTrackOne
   * @classdesc Represents a ReqMOTTrackOne.
   * @implements IReqMOTTrackOne
   * @constructor
   * @param {IReqMOTTrackOne=} [properties] Properties to set
   */
  function ReqMOTTrackOne(properties) {
    if (properties)
      for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
  }

  /**
   * ReqMOTTrackOne id.
   * @member {number} id
   * @memberof ReqMOTTrackOne
   * @instance
   */
  ReqMOTTrackOne.prototype.id = 0;

  /**
   * Creates a new ReqMOTTrackOne instance using the specified properties.
   * @function create
   * @memberof ReqMOTTrackOne
   * @static
   * @param {IReqMOTTrackOne=} [properties] Properties to set
   * @returns {ReqMOTTrackOne} ReqMOTTrackOne instance
   */
  ReqMOTTrackOne.create = function create(properties) {
    return new ReqMOTTrackOne(properties);
  };

  /**
   * Encodes the specified ReqMOTTrackOne message. Does not implicitly {@link ReqMOTTrackOne.verify|verify} messages.
   * @function encode
   * @memberof ReqMOTTrackOne
   * @static
   * @param {IReqMOTTrackOne} message ReqMOTTrackOne message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMOTTrackOne.encode = function encode(message, writer) {
    if (!writer) writer = $Writer.create();
    if (message.id != null && Object.hasOwnProperty.call(message, "id"))
      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.id);
    return writer;
  };

  /**
   * Encodes the specified ReqMOTTrackOne message, length delimited. Does not implicitly {@link ReqMOTTrackOne.verify|verify} messages.
   * @function encodeDelimited
   * @memberof ReqMOTTrackOne
   * @static
   * @param {IReqMOTTrackOne} message ReqMOTTrackOne message or plain object to encode
   * @param {$protobuf.Writer} [writer] Writer to encode to
   * @returns {$protobuf.Writer} Writer
   */
  ReqMOTTrackOne.encodeDelimited = function encodeDelimited(message, writer) {
    return this.encode(message, writer).ldelim();
  };

  /**
   * Decodes a ReqMOTTrackOne message from the specified reader or buffer.
   * @function decode
   * @memberof ReqMOTTrackOne
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @param {number} [length] Message length if known beforehand
   * @returns {ReqMOTTrackOne} ReqMOTTrackOne
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMOTTrackOne.decode = function decode(reader, length) {
    if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
    var end = length === undefined ? reader.len : reader.pos + length,
      message = new $root.ReqMOTTrackOne();
    while (reader.pos < end) {
      var tag = reader.uint32();
      switch (tag >>> 3) {
        case 1: {
          message.id = reader.int32();
          break;
        }
        default:
          reader.skipType(tag & 7);
          break;
      }
    }
    return message;
  };

  /**
   * Decodes a ReqMOTTrackOne message from the specified reader or buffer, length delimited.
   * @function decodeDelimited
   * @memberof ReqMOTTrackOne
   * @static
   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
   * @returns {ReqMOTTrackOne} ReqMOTTrackOne
   * @throws {Error} If the payload is not a reader or valid buffer
   * @throws {$protobuf.util.ProtocolError} If required fields are missing
   */
  ReqMOTTrackOne.decodeDelimited = function decodeDelimited(reader) {
    if (!(reader instanceof $Reader)) reader = new $Reader(reader);
    return this.decode(reader, reader.uint32());
  };

  /**
   * Verifies a ReqMOTTrackOne message.
   * @function verify
   * @memberof ReqMOTTrackOne
   * @static
   * @param {Object.<string,*>} message Plain object to verify
   * @returns {string|null} `null` if valid, otherwise the reason why it is not
   */
  ReqMOTTrackOne.verify = function verify(message) {
    if (typeof message !== "object" || message === null)
      return "object expected";
    if (message.id != null && message.hasOwnProperty("id"))
      if (!$util.isInteger(message.id)) return "id: integer expected";
    return null;
  };

  /**
   * Creates a ReqMOTTrackOne message from a plain object. Also converts values to their respective internal types.
   * @function fromObject
   * @memberof ReqMOTTrackOne
   * @static
   * @param {Object.<string,*>} object Plain object
   * @returns {ReqMOTTrackOne} ReqMOTTrackOne
   */
  ReqMOTTrackOne.fromObject = function fromObject(object) {
    if (object instanceof $root.ReqMOTTrackOne) return object;
    var message = new $root.ReqMOTTrackOne();
    if (object.id != null) message.id = object.id | 0;
    return message;
  };

  /**
   * Creates a plain object from a ReqMOTTrackOne message. Also converts values to other types if specified.
   * @function toObject
   * @memberof ReqMOTTrackOne
   * @static
   * @param {ReqMOTTrackOne} message ReqMOTTrackOne
   * @param {$protobuf.IConversionOptions} [options] Conversion options
   * @returns {Object.<string,*>} Plain object
   */
  ReqMOTTrackOne.toObject = function toObject(message, options) {
    if (!options) options = {};
    var object = {};
    if (options.defaults) object.id = 0;
    if (message.id != null && message.hasOwnProperty("id"))
      object.id = message.id;
    return object;
  };

  /**
   * Converts this ReqMOTTrackOne to JSON.
   * @function toJSON
   * @memberof ReqMOTTrackOne
   * @instance
   * @returns {Object.<string,*>} JSON object
   */
  ReqMOTTrackOne.prototype.toJSON = function toJSON() {
    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
  };

  /**
   * Gets the default type url for ReqMOTTrackOne
   * @function getTypeUrl
   * @memberof ReqMOTTrackOne
   * @static
   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
   * @returns {string} The default type url
   */
  ReqMOTTrackOne.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
    if (typeUrlPrefix === undefined) {
      typeUrlPrefix = "type.googleapis.com";
    }
    return typeUrlPrefix + "/ReqMOTTrackOne";
  };

  return ReqMOTTrackOne;
})();

export default $root;