Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/pull/connector/dist/ |
Upload File : |
{"version":3,"file":"connector.bundle.js","sources":["../../client/src/consts.js","../../util/src/util.js","../../jsonrpc/src/errors/notconnected.js","../../jsonrpc/src/errors/timeout.js","../../jsonrpc/src/jsonrpc.js","../src/codec/channelmanager.js","../src/transport/base.js","../src/transport/websocket.js","../src/transport/longpolling.js","../../protobuf/protobuf.js","../../protobuf/model.js","../src/codec/models.js","../src/codec/protobuf.js","../src/codec/legacy.js","../src/connector.js"],"sourcesContent":["export const REVISION = 19; // api revision - check module/pull/include.php\n\nexport const ConnectionType = {\n\tWebSocket: 'webSocket',\n\tLongPolling: 'longPolling',\n};\n\nexport const PullStatus = {\n\tOnline: 'online',\n\tOffline: 'offline',\n\tConnecting: 'connect',\n};\n\nexport const SenderType = {\n\tUnknown: 0,\n\tClient: 1,\n\tBackend: 2,\n};\n\nexport const SubscriptionType = {\n\tServer: 'server',\n\tClient: 'client',\n\tOnline: 'online',\n\tStatus: 'status',\n\tRevision: 'revision',\n};\n\nexport const CloseReasons = {\n\tNORMAL_CLOSURE: 1000,\n\tSERVER_DIE: 1001,\n\tCONFIG_REPLACED: 3000,\n\tCHANNEL_EXPIRED: 3001,\n\tSERVER_RESTARTED: 3002,\n\tCONFIG_EXPIRED: 3003,\n\tMANUAL: 3004,\n\tSTUCK: 3005,\n\tBACKEND_ERROR: 3006,\n\tWRONG_CHANNEL_ID: 4010,\n};\n\nexport const SystemCommands = {\n\tCHANNEL_EXPIRE: 'CHANNEL_EXPIRE',\n\tCONFIG_EXPIRE: 'CONFIG_EXPIRE',\n\tSERVER_RESTART: 'SERVER_RESTART',\n};\n\nexport const ServerMode = {\n\tShared: 'shared',\n\tPersonal: 'personal',\n};\n\nexport const RpcMethod = {\n\tPublish: 'publish',\n\tGetUsersLastSeen: 'getUsersLastSeen',\n\tPing: 'ping',\n\tListChannels: 'listChannels',\n\tSubscribeStatusChange: 'subscribeStatusChange',\n\tUnsubscribeStatusChange: 'unsubscribeStatusChange',\n};\n","/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n\nexport const browser = {\n\tIsChrome(): boolean\n\t{\n\t\treturn navigator.userAgent.toLowerCase().includes('chrome');\n\t},\n\n\tIsFirefox(): boolean\n\t{\n\t\treturn navigator.userAgent.toLowerCase().includes('firefox');\n\t},\n\n\tIsIe(): boolean\n\t{\n\t\treturn navigator.userAgent.match(/(Trident\\/|MSIE\\/)/) !== null;\n\t},\n};\n\nexport function getTimestamp(): number\n{\n\treturn Date.now();\n}\n\n/**\n * Reduces errors array to single string.\n * @param {array} errors\n * @return {string}\n */\nexport function errorsToString(errors): string\n{\n\tif (!isArray(errors))\n\t{\n\t\treturn '';\n\t}\n\n\treturn errors.reduce((accum, currentValue) => {\n\t\tconst result = accum === '' ? accum : `${accum}; `;\n\n\t\treturn `${result + currentValue.code}: ${currentValue.message}`;\n\t}, '');\n}\n\nexport function isString(item): boolean\n{\n\treturn item === '' ? true : (item ? (typeof (item) === 'string' || item instanceof String) : false);\n}\n\nexport function isArray(item): boolean\n{\n\treturn item && Object.prototype.toString.call(item) === '[object Array]';\n}\n\nexport function isFunction(item): boolean\n{\n\treturn item === null ? false : (typeof (item) === 'function' || item instanceof Function);\n}\n\nexport function getFunction(f: Function): Function\n{\n\treturn isFunction(f) ? f : function() {};\n}\n\nexport function isDomNode(item): boolean\n{\n\treturn item && typeof (item) === 'object' && 'nodeType' in item;\n}\n\nexport function isDate(item): boolean\n{\n\treturn item && Object.prototype.toString.call(item) === '[object Date]';\n}\n\nexport function isNumber(item): boolean\n{\n\treturn typeof item === 'number' && Number.isFinite(item);\n}\n\nexport function isObject(item): boolean\n{\n\treturn Boolean(item) && typeof item === 'object';\n}\n\nexport function isPlainObject(item): boolean\n{\n\treturn Boolean(item) && typeof item === 'object' && item.constructor === Object;\n}\n\nexport function isNotEmptyString(item): boolean\n{\n\treturn isString(item) ? item.length > 0 : false;\n}\n\nexport function isJsonRpcRequest(item): boolean\n{\n\treturn (\n\t\ttypeof (item) === 'object'\n\t\t&& item\n\t\t&& 'jsonrpc' in item\n\t\t&& isNotEmptyString(item.jsonrpc)\n\t\t&& 'method' in item\n\t\t&& isNotEmptyString(item.method)\n\t);\n}\n\nexport function isJsonRpcResponse(item): boolean\n{\n\treturn (\n\t\ttypeof (item) === 'object'\n\t\t&& item\n\t\t&& 'jsonrpc' in item\n\t\t&& isNotEmptyString(item.jsonrpc)\n\t\t&& 'id' in item\n\t\t&& (\n\t\t\t'result' in item\n\t\t\t|| 'error' in item\n\t\t)\n\t);\n}\n\nexport function buildQueryString(params: Object): string\n{\n\tlet result = '';\n\tfor (const key of Object.keys(params))\n\t{\n\t\tconst value = params[key];\n\t\tif (isArray(value))\n\t\t{\n\t\t\tfor (const [index, valueElement] of value.entries())\n\t\t\t{\n\t\t\t\tconst left = encodeURIComponent(`${key}[${index}]`);\n\t\t\t\tconst right = `${encodeURIComponent(valueElement)}&`;\n\t\t\t\tresult += `${left}=${right}`;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tresult += `${encodeURIComponent(key)}=${encodeURIComponent(value)}&`;\n\t\t}\n\t}\n\n\tif (result.length > 0)\n\t{\n\t\tresult = result.slice(0, Math.max(0, result.length - 1));\n\t}\n\n\treturn result;\n}\n\nexport function clone(obj: any, bCopyObj = true): any\n{\n\tlet _obj, i, l;\n\n\tif (obj === null)\n\t{\n\t\treturn null;\n\t}\n\n\tif (isDomNode(obj))\n\t{\n\t\t_obj = obj.cloneNode(bCopyObj);\n\t}\n\telse if (typeof obj === 'object')\n\t{\n\t\tif (isArray(obj))\n\t\t{\n\t\t\t_obj = [];\n\t\t\tfor (i = 0, l = obj.length; i < l; i++)\n\t\t\t{\n\t\t\t\tif (typeof obj[i] === 'object' && bCopyObj)\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = clone(obj[i], bCopyObj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_obj = {};\n\t\t\tif (obj.constructor)\n\t\t\t{\n\t\t\t\tif (isDate(obj))\n\t\t\t\t{\n\t\t\t\t\t_obj = new Date(obj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj = new obj.constructor();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i in obj)\n\t\t\t{\n\t\t\t\tif (!obj.hasOwnProperty(i))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (typeof obj[i] === 'object' && bCopyObj)\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = clone(obj[i], bCopyObj);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t_obj[i] = obj[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t_obj = obj;\n\t}\n\n\treturn _obj;\n}\n\nexport function getDateForLog(): string\n{\n\tconst d = new Date();\n\n\treturn `${d.getFullYear()}-${lpad(d.getMonth(), 2, '0')}-${lpad(d.getDate(), 2, '0')} ${lpad(d.getHours(), 2, '0')}:${lpad(d.getMinutes(), 2, '0')}`;\n}\n\nexport function lpad(str: string, length, chr = ' '): string\n{\n\tif (str.length > length)\n\t{\n\t\treturn str;\n\t}\n\n\tlet result = '';\n\tfor (let i = 0; i < length - result.length; i++)\n\t{\n\t\tresult += chr;\n\t}\n\n\treturn result + str;\n}\n\nexport function isWebSocketSupported(): boolean\n{\n\treturn typeof 'WebSocket' !== 'undefined';\n}\n\nexport class CircularBuffer<T>\n{\n\tstorage: T[];\n\tcapacity: number;\n\tpointer = 0;\n\n\tconstructor(capacity: number)\n\t{\n\t\tif (capacity <= 0)\n\t\t{\n\t\t\tthrow new Error('capacity must be > 0');\n\t\t}\n\n\t\tthis.capacity = capacity;\n\t\tthis.storage = [];\n\t}\n\n\tpush(element: T)\n\t{\n\t\tthis.storage[this.pointer] = element;\n\t\tthis.pointer++;\n\t\tif (this.pointer >= this.capacity)\n\t\t{\n\t\t\tthis.pointer = 0;\n\t\t}\n\t}\n\n\tgetAll(): T[]\n\t{\n\t\tif (this.pointer === 0)\n\t\t{\n\t\t\treturn this.storage;\n\t\t}\n\n\t\treturn [...this.storage.slice(this.pointer), ...this.storage.slice(0, this.pointer)];\n\t}\n}\n","export class ErrorNotConnected extends Error\n{\n\tconstructor(message)\n\t{\n\t\tsuper(message);\n\t\tthis.name = 'ErrorNotConnected';\n\t}\n}\n","export class ErrorTimeout extends Error\n{\n\tconstructor(message)\n\t{\n\t\tsuper(message);\n\t\tthis.name = 'ErrorTimeout';\n\t}\n}\n","import * as Utils from '../../util/src/util';\nimport { ErrorNotConnected } from './errors/notconnected';\nimport { ErrorTimeout } from './errors/timeout';\n\nconst JSON_RPC_VERSION = '2.0';\n\nexport interface JsonRpcRequest\n{\n\tjsonrpc: '2.0',\n\tid?: string | number | null,\n\tmethod: string,\n\tparams?: any,\n}\n\ntype RpcResponseError = {\n\tcode: number,\n\tmessage: string,\n\tdata?: any,\n}\n\nexport interface JsonRpcResponse\n{\n\tjsonrpc: '2.0',\n\tid?: string | number | null,\n\tresult?: any;\n\terror?: RpcResponseError;\n}\n\nexport const RpcError: { [string]: RpcResponseError } = {\n\tParse: { code: -32700, message: 'Parse error' },\n\tInvalidRequest: { code: -32600, message: 'Invalid Request' },\n\tMethodNotFound: { code: -32601, message: 'Method not found' },\n\tInvalidParams: { code: -32602, message: 'Invalid params' },\n\tInternal: { code: -32603, message: 'Internal error' },\n};\n\ninterface ResponseAwaiter\n{\n\tresolve: () => void,\n\treject: (Error) => void,\n\ttimeout: number,\n}\n\nexport interface Sender\n{\n\tsend(string): boolean\n}\n\ntype JsonRpcOptions = {\n\tsender: Sender,\n\thandlers: { [string]: Function },\n\tevents: { [string]: Function },\n}\n\nexport class JsonRpc extends EventTarget\n{\n\tidCounter = 0;\n\n\thandlers = {};\n\trpcResponseAwaiters: Map<number, ResponseAwaiter> = new Map();\n\n\tconstructor(options: JsonRpcOptions)\n\t{\n\t\tsuper();\n\n\t\tthis.sender = options.sender;\n\t\tfor (const method of Object.keys(options.handlers || {}))\n\t\t{\n\t\t\tthis.handle(method, options.handlers[method]);\n\t\t}\n\n\t\tfor (const eventType of Object.keys(options.events || {}))\n\t\t{\n\t\t\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-native-events-binding\n\t\t\tthis.addEventListener(eventType, options.events[eventType]);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} method\n\t * @param {function} handler\n\t */\n\thandle(method, handler)\n\t{\n\t\tthis.handlers[method] = handler;\n\t}\n\n\t/**\n\t * Sends RPC command to the server.\n\t *\n\t * @param {string} method Method name\n\t * @param {object} params\n\t * @param {int} timeout\n\t * @returns {Promise}\n\t */\n\texecuteOutgoingRpcCommand(method, params, timeout = 5): Promise<JsonRpcResponse>\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst request = this.createRequest(method, params);\n\n\t\t\tif (this.sender.send(JSON.stringify(request)) === false)\n\t\t\t{\n\t\t\t\treject(new ErrorNotConnected('send failed'));\n\t\t\t}\n\n\t\t\tif (timeout > 0)\n\t\t\t{\n\t\t\t\tconst t = setTimeout(() => {\n\t\t\t\t\tthis.rpcResponseAwaiters.delete(request.id);\n\t\t\t\t\treject(new ErrorTimeout('no response'));\n\t\t\t\t}, timeout * 1000);\n\t\t\t\tthis.rpcResponseAwaiters.set(request.id, { resolve, reject, timeout: t });\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Executes array or rpc commands. Returns array of promises, each promise will be resolved individually.\n\t *\n\t * @param {JsonRpcRequest[]} batch\n\t * @returns {Promise[]}\n\t */\n\texecuteOutgoingRpcBatch(batch: JsonRpcRequest[]): Promise<JsonRpcResponse>[]\n\t{\n\t\tconst requests = [];\n\t\tconst promises = [];\n\t\tbatch.forEach(({ method, params, id }) => {\n\t\t\tconst request = this.createRequest(method, params, id);\n\t\t\trequests.push(request);\n\t\t\tpromises.push(new Promise((resolve, reject) => {\n\t\t\t\tthis.rpcResponseAwaiters.set(request.id, {\n\t\t\t\t\tresolve,\n\t\t\t\t\treject,\n\t\t\t\t});\n\t\t\t}));\n\t\t});\n\n\t\tthis.sender.send(JSON.stringify(requests));\n\n\t\treturn promises;\n\t}\n\n\tprocessRpcResponse(response)\n\t{\n\t\tif ('id' in response && this.rpcResponseAwaiters.has(response.id))\n\t\t{\n\t\t\tconst awaiter = this.rpcResponseAwaiters.get(response.id);\n\t\t\tif ('result' in response)\n\t\t\t{\n\t\t\t\tawaiter.resolve(response.result);\n\t\t\t}\n\t\t\telse if ('error' in response)\n\t\t\t{\n\t\t\t\tawaiter.reject(response.error);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawaiter.reject(new Error('wrong response structure'));\n\t\t\t}\n\n\t\t\tclearTimeout(awaiter.timeout);\n\t\t\tthis.rpcResponseAwaiters.delete(response.id);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.dispatchEvent(new CustomEvent('error', { error: new Error(`received rpc response with unknown id ${response}`) }));\n\t\t}\n\t}\n\n\tasync handleIncomingMessage(message): void\n\t{\n\t\tlet decoded = {};\n\t\ttry\n\t\t{\n\t\t\tdecoded = JSON.parse(message);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tthrow new Error(`could not decode json rpc message: ${e}`);\n\t\t}\n\n\t\tif (Utils.isArray(decoded))\n\t\t{\n\t\t\tthis.executeIncomingRpcBatch(decoded);\n\t\t}\n\t\telse if (Utils.isJsonRpcRequest(decoded))\n\t\t{\n\t\t\tconst commandResult = await this.executeIncomingRpcCommand(decoded);\n\t\t\tif (commandResult !== null && commandResult !== undefined)\n\t\t\t{\n\t\t\t\tconst response = commandResult.error\n\t\t\t\t\t? this.createErrorResponse(decoded.id, commandResult.error)\n\t\t\t\t\t: this.createResponse(decoded.id, commandResult)\n\t\t\t\t;\n\t\t\t\tthis.sender.send(JSON.stringify(response));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.sender.send(JSON.stringify(this.createResponse(decoded.id, null)));\n\t\t\t}\n\t\t}\n\t\telse if (Utils.isJsonRpcResponse(decoded))\n\t\t{\n\t\t\tthis.processRpcResponse(decoded);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error(`unknown rpc packet: ${decoded}`);\n\t\t}\n\t}\n\n\t/**\n\t * Executes RPC command, received from the server\n\t *\n\t * @param {string} method\n\t * @param {object} params\n\t * @returns {object}\n\t */\n\tasync executeIncomingRpcCommand({ method, params }): JsonRpcResponse\n\t{\n\t\tif (method in this.handlers)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\treturn this.handlers[method].call(this, params);\n\t\t\t}\n\t\t\tcatch (e)\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: '2.0',\n\t\t\t\t\terror: e.toString(),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\terror: RpcError.MethodNotFound,\n\t\t};\n\t}\n\n\tasync executeIncomingRpcBatch(batch): JsonRpcResponse[]\n\t{\n\t\tconst result = [];\n\t\tfor (const command of batch)\n\t\t{\n\t\t\tif ('jsonrpc' in command)\n\t\t\t{\n\t\t\t\tif ('method' in command)\n\t\t\t\t{\n\t\t\t\t\tconst commandResult = this.executeIncomingRpcCommand(command);\n\t\t\t\t\tif (commandResult)\n\t\t\t\t\t{\n\t\t\t\t\t\tcommandResult.jsonrpc = JSON_RPC_VERSION;\n\t\t\t\t\t\tcommandResult.id = command.id;\n\n\t\t\t\t\t\tresult.push(commandResult);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.processRpcResponse(command);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.dispatchEvent(new CustomEvent('error', { error: new Error(`unknown rpc command in batch: ${command}`) }));\n\t\t\t\tresult.push({\n\t\t\t\t\tjsonrpc: '2.0',\n\t\t\t\t\terror: RpcError.InvalidRequest,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tnextId(): number\n\t{\n\t\tthis.idCounter++;\n\n\t\treturn this.idCounter;\n\t}\n\n\tcreatePublishRequest(messageBatch): JsonRpcRequest\n\t{\n\t\tconst result = messageBatch.map((message) => this.createRequest('publish', message));\n\n\t\tif (result.length === 0)\n\t\t{\n\t\t\treturn result[0];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tcreateRequest(method, params, id): JsonRpcRequest\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\tid: id ?? this.nextId(),\n\t\t};\n\t}\n\n\tcreateResponse(id, result): JsonRpcResponse\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tid,\n\t\t\tresult,\n\t\t};\n\t}\n\n\tcreateErrorResponse(id, error): JsonRpcResponse\n\t{\n\t\treturn {\n\t\t\tjsonrpc: JSON_RPC_VERSION,\n\t\t\tid,\n\t\t\terror,\n\t\t};\n\t}\n}\n","export class ChannelManager\n{\n\tconstructor(params)\n\t{\n\t\tthis.publicIds = {};\n\t\tthis.restClient = params.restClient ?? BX.rest;\n\t\tthis.getPublicListMethod = params.getPublicListMethod;\n\t}\n\n\t/**\n\t *\n\t * @param {Array} users Array of user ids.\n\t * @return {Promise}\n\t */\n\tgetPublicIds(users): Promise\n\t{\n\t\tconst now = new Date();\n\t\tconst result = {};\n\t\tconst unknownUsers = [];\n\n\t\tfor (const userId of users)\n\t\t{\n\t\t\tif (this.publicIds[userId] && this.publicIds[userId].end > now)\n\t\t\t{\n\t\t\t\tresult[userId] = this.publicIds[userId];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tunknownUsers.push(userId);\n\t\t\t}\n\t\t}\n\n\t\tif (unknownUsers.length === 0)\n\t\t{\n\t\t\treturn Promise.resolve(result);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.restClient.callMethod(this.getPublicListMethod, { users: unknownUsers }).then((response) => {\n\t\t\t\tif (response.error())\n\t\t\t\t{\n\t\t\t\t\tresolve({});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tconst data = response.data();\n\t\t\t\t\tthis.setPublicIds(Object.values(data));\n\t\t\t\t\tfor (const userId of unknownUsers)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult[userId] = this.publicIds[userId];\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t}).catch((e) => reject(e));\n\t\t});\n\t}\n\n\t/**\n\t *\n\t * @param {object[]} publicIds\n\t * @param {integer} publicIds.user_id\n\t * @param {string} publicIds.public_id\n\t * @param {string} publicIds.signature\n\t * @param {Date} publicIds.start\n\t * @param {Date} publicIds.end\n\t */\n\tsetPublicIds(publicIds)\n\t{\n\t\tfor (const publicIdDescriptor of publicIds)\n\t\t{\n\t\t\tconst userId = publicIdDescriptor.user_id;\n\t\t\tthis.publicIds[userId] = {\n\t\t\t\tuserId,\n\t\t\t\tpublicId: publicIdDescriptor.public_id,\n\t\t\t\tsignature: publicIdDescriptor.signature,\n\t\t\t\tstart: new Date(publicIdDescriptor.start),\n\t\t\t\tend: new Date(publicIdDescriptor.end),\n\t\t\t};\n\t\t}\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-pseudo-private */\n/* eslint-disable no-underscore-dangle */\n// noinspection ES6PreferShortImport\n\nimport { isFunction } from '../../../util/src/util';\n\nexport type ConnectorOptions = {\n\tpathGetter: () => string,\n\tonOpen: () => void,\n\tonDisconnect: () => void,\n\tonError: () => void,\n\tonMessage: () => void,\n}\n\nexport class AbstractConnector\n{\n\t_connected = false;\n\tconnectionType = '';\n\n\tdisconnectCode = '';\n\tdisconnectReason = '';\n\n\tconstructor(config: ConnectorOptions)\n\t{\n\t\tthis.pathGetter = config.pathGetter;\n\t\tthis.callbacks = {\n\t\t\tonOpen: isFunction(config.onOpen) ? config.onOpen : function() {},\n\t\t\tonDisconnect: isFunction(config.onDisconnect) ? config.onDisconnect : function() {},\n\t\t\tonError: isFunction(config.onError) ? config.onError : function() {},\n\t\t\tonMessage: isFunction(config.onMessage) ? config.onMessage : function() {},\n\t\t};\n\t}\n\n\tget connected(): boolean\n\t{\n\t\treturn this._connected;\n\t}\n\n\tset connected(value: boolean)\n\t{\n\t\tif (value === this._connected)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis._connected = value;\n\n\t\tif (this._connected)\n\t\t{\n\t\t\tthis.callbacks.onOpen();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.callbacks.onDisconnect({\n\t\t\t\tcode: this.disconnectCode,\n\t\t\t\treason: this.disconnectReason,\n\t\t\t});\n\t\t}\n\t}\n\n\tget path(): string\n\t{\n\t\treturn this.pathGetter();\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-native-events-binding */\n\nimport { ConnectionType } from '../../../client/src/consts';\nimport { AbstractConnector } from './base';\nimport { getDateForLog } from '../../../util/src/util';\n\nexport class WebSocketConnector extends AbstractConnector\n{\n\tsocket: ?WebSocket;\n\tconnectionType = ConnectionType.WebSocket;\n\n\tonSocketOpenHandler = this.onSocketOpen.bind(this);\n\tonSocketCloseHandler = this.onSocketClose.bind(this);\n\tonSocketErrorHandler = this.onSocketError.bind(this);\n\tonSocketMessageHandler = this.onSocketMessage.bind(this);\n\n\tconnect()\n\t{\n\t\tif (this.socket)\n\t\t{\n\t\t\tif (this.socket.readyState === WebSocket.OPEN || this.socket.readyState === WebSocket.CONNECTING)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.socket.removeEventListener('open', this.onSocketOpenHandler);\n\t\t\tthis.socket.removeEventListener('close', this.onSocketCloseHandler);\n\t\t\tthis.socket.removeEventListener('error', this.onSocketErrorHandler);\n\t\t\tthis.socket.removeEventListener('message', this.onSocketMessageHandler);\n\n\t\t\tthis.socket.close();\n\t\t\tthis.socket = null;\n\t\t}\n\n\t\tthis.createSocket();\n\t}\n\n\tdisconnect(code, message)\n\t{\n\t\tif (this.socket !== null)\n\t\t{\n\t\t\tthis.socket.removeEventListener('open', this.onSocketOpenHandler);\n\t\t\tthis.socket.removeEventListener('close', this.onSocketCloseHandler);\n\t\t\tthis.socket.removeEventListener('error', this.onSocketErrorHandler);\n\t\t\tthis.socket.removeEventListener('message', this.onSocketMessageHandler);\n\n\t\t\tthis.socket.close(code, message);\n\t\t}\n\t\tthis.socket = null;\n\t\tthis.disconnectCode = code;\n\t\tthis.disconnectReason = message;\n\t\tthis.connected = false;\n\t}\n\n\tcreateSocket()\n\t{\n\t\tif (this.socket)\n\t\t{\n\t\t\tthrow new Error('Socket already exists');\n\t\t}\n\n\t\tif (!this.path)\n\t\t{\n\t\t\tthrow new Error('Websocket connection path is not defined');\n\t\t}\n\n\t\tthis.socket = new WebSocket(this.path);\n\t\tthis.socket.binaryType = 'arraybuffer';\n\n\t\tthis.socket.addEventListener('open', this.onSocketOpenHandler);\n\t\tthis.socket.addEventListener('close', this.onSocketCloseHandler);\n\t\tthis.socket.addEventListener('error', this.onSocketErrorHandler);\n\t\tthis.socket.addEventListener('message', this.onSocketMessageHandler);\n\t}\n\n\t/**\n\t * Sends some data to the server via websocket connection.\n\t * @param {ArrayBuffer} buffer Data to send.\n\t */\n\tsend(buffer): boolean\n\t{\n\t\tif (!this.socket || this.socket.readyState !== 1)\n\t\t{\n\t\t\tconsole.error(`${getDateForLog()}: Pull: WebSocket is not connected`);\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.socket.send(buffer);\n\n\t\treturn true;\n\t}\n\n\tonSocketOpen()\n\t{\n\t\tthis.connected = true;\n\t}\n\n\tonSocketClose(e)\n\t{\n\t\tthis.socket = null;\n\t\tthis.disconnectCode = e.code;\n\t\tthis.disconnectReason = e.reason;\n\t\tthis.connected = false;\n\t}\n\n\tonSocketError(e)\n\t{\n\t\tthis.callbacks.onError(e);\n\t}\n\n\tonSocketMessage(e)\n\t{\n\t\tthis.callbacks.onMessage(e.data);\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.socket)\n\t\t{\n\t\t\tthis.socket.close();\n\t\t\tthis.socket = null;\n\t\t}\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-native-events-binding */\n\nimport { ConnectionType } from '../../../client/src/consts';\nimport { AbstractConnector } from './base';\nimport { getDateForLog, isNotEmptyString } from '../../../util/src/util';\nimport type { ConnectorOptions } from './base';\n\nconst LONG_POLLING_TIMEOUT = 60;\n\ntype LongPollingConnectorOptions = ConnectorOptions & {\n\tisBinary: boolean,\n\tgetPublicationPath: () => string,\n}\n\nexport class LongPollingConnector extends AbstractConnector\n{\n\tconnectionType = ConnectionType.LongPolling;\n\tactive = false;\n\trequestTimeout = null;\n\tfailureTimeout = null;\n\trequestAborted = false;\n\n\tconstructor(config: LongPollingConnectorOptions)\n\t{\n\t\tsuper(config);\n\n\t\tthis.xhr = this.createXhr();\n\t\tthis.isBinary = config.isBinary;\n\t}\n\n\tcreateXhr(): XMLHttpRequest\n\t{\n\t\tconst result = new XMLHttpRequest();\n\t\tif (this.isBinary)\n\t\t{\n\t\t\tresult.responseType = 'arraybuffer';\n\t\t}\n\t\tresult.addEventListener('readystatechange', this.onXhrReadyStateChange.bind(this));\n\n\t\treturn result;\n\t}\n\n\tconnect()\n\t{\n\t\tthis.active = true;\n\t\tthis.performRequest();\n\t}\n\n\tdisconnect(code, reason)\n\t{\n\t\tthis.active = false;\n\n\t\tif (this.failureTimeout)\n\t\t{\n\t\t\tclearTimeout(this.failureTimeout);\n\t\t\tthis.failureTimeout = null;\n\t\t}\n\n\t\tif (this.requestTimeout)\n\t\t{\n\t\t\tclearTimeout(this.requestTimeout);\n\t\t\tthis.requestTimeout = null;\n\t\t}\n\n\t\tif (this.xhr)\n\t\t{\n\t\t\tthis.requestAborted = true;\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.disconnectCode = code;\n\t\tthis.disconnectReason = reason;\n\t\tthis.connected = false;\n\t}\n\n\tperformRequest()\n\t{\n\t\tif (!this.active)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.path)\n\t\t{\n\t\t\tthrow new Error('Long polling connection path is not defined');\n\t\t}\n\n\t\tif (this.xhr.readyState !== 0 && this.xhr.readyState !== 4)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(this.failureTimeout);\n\t\tclearTimeout(this.requestTimeout);\n\n\t\tthis.failureTimeout = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis.connected = true;\n\t\t\t},\n\t\t\t5000,\n\t\t);\n\t\tthis.requestTimeout = setTimeout(this.onRequestTimeout.bind(this), LONG_POLLING_TIMEOUT * 1000);\n\n\t\tthis.xhr.open('GET', this.path);\n\t\tthis.xhr.send();\n\t}\n\n\tonRequestTimeout()\n\t{\n\t\tthis.requestAborted = true;\n\t\tthis.xhr.abort();\n\t\tthis.performRequest();\n\t}\n\n\tonXhrReadyStateChange()\n\t{\n\t\tif (this.xhr.readyState === 4)\n\t\t{\n\t\t\tif (!this.requestAborted || this.xhr.status === 200)\n\t\t\t{\n\t\t\t\tthis.onResponse(this.xhr.response);\n\t\t\t}\n\t\t\tthis.requestAborted = false;\n\t\t}\n\t}\n\n\t/**\n\t * Sends some data to the server via http request.\n\t */\n\tsend(buffer: ArrayBuffer): void\n\t{\n\t\tconst path = this.parent.getPublicationPath();\n\t\tif (!path)\n\t\t{\n\t\t\tconsole.error(`${getDateForLog()}: Pull: publication path is empty`);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst xhr = new XMLHttpRequest();\n\t\txhr.open('POST', path);\n\t\txhr.send(buffer);\n\t}\n\n\tonResponse(response)\n\t{\n\t\tif (this.failureTimeout)\n\t\t{\n\t\t\tclearTimeout(this.failureTimeout);\n\t\t\tthis.failureTimeout = 0;\n\t\t}\n\n\t\tif (this.requestTimeout)\n\t\t{\n\t\t\tclearTimeout(this.requestTimeout);\n\t\t\tthis.requestTimeout = 0;\n\t\t}\n\n\t\tif (this.xhr.status === 200)\n\t\t{\n\t\t\tthis.connected = true;\n\t\t\tif (isNotEmptyString(response) || (response instanceof ArrayBuffer))\n\t\t\t{\n\t\t\t\tthis.callbacks.onMessage(response);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.parent.session.mid = null;\n\t\t\t}\n\t\t\tthis.performRequest();\n\t\t}\n\t\telse if (this.xhr.status === 304)\n\t\t{\n\t\t\tthis.connected = true;\n\t\t\tif (this.xhr.getResponseHeader('Expires') === 'Thu, 01 Jan 1973 11:11:01 GMT')\n\t\t\t{\n\t\t\t\tconst lastMessageId = this.xhr.getResponseHeader('Last-Message-Id');\n\t\t\t\tif (isNotEmptyString(lastMessageId))\n\t\t\t\t{\n\t\t\t\t\tthis.parent.setLastMessageId(lastMessageId);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.performRequest();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.callbacks.onError('Could not connect to the server');\n\t\t\tthis.connected = false;\n\t\t}\n\t}\n}\n","/*!\r\n * protobuf.js v6.8.6 (c) 2016, daniel wirtz\r\n * compiled mon, 26 feb 2018 11:35:34 utc\r\n * licensed under the bsd-3-clause license\r\n * see: https://github.com/dcodeio/protobuf.js for details\r\n *\r\n * Modify list for integration with Bitrix Framework:\r\n * - removed integration with RequireJS and AMD package builders;\r\n */\r\n(function(global,undefined){\"use strict\";(function prelude(modules, cache, entries) {\r\n\r\n // This is the prelude used to bundle protobuf.js for the browser. Wraps up the CommonJS\r\n // sources through a conflict-free require shim and is again wrapped within an iife that\r\n // provides a unified `global` and a minification-friendly `undefined` var plus a global\r\n // \"use strict\" directive so that minification can remove the directives of each module.\r\n\r\n function $require(name) {\r\n var $module = cache[name];\r\n if (!$module)\r\n modules[name][0].call($module = cache[name] = { exports: {} }, $require, $module, $module.exports);\r\n return $module.exports;\r\n }\r\n\r\n // Expose globally\r\n var protobuf = global.protobuf = $require(entries[0]);\r\n\r\n // Be nice to AMD\r\n /*if (typeof define === \"function\" && define.amd)\r\n define([\"long\"], function(Long) {\r\n if (Long && Long.isLong) {\r\n protobuf.util.Long = Long;\r\n protobuf.configure();\r\n }\r\n return protobuf;\r\n });*/\r\n\r\n // Be nice to CommonJS\r\n /*if (typeof module === \"object\" && module && module.exports)\r\n module.exports = protobuf;*/\r\n\r\n})/* end of prelude */({1:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n\r\n},{}],2:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\r\n},{}],3:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.<string,*>} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n\r\n},{}],4:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.<string,*>}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n\r\n},{}],5:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(1),\r\n inquire = require(7);\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise<string|Uint8Array>} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n\r\n},{\"1\":1,\"7\":7}],6:[function(require,module,exports){\r\n\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n\r\n},{}],7:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n\r\n},{}],8:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n\r\n},{}],9:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n\r\n},{}],10:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n\r\n},{}],11:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = common;\r\n\r\nvar commonRe = /\\/|\\./;\r\n\r\n/**\r\n * Provides common type definitions.\r\n * Can also be used to provide additional google types or your own custom types.\r\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\r\n * @param {Object.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\r\n * @returns {undefined}\r\n * @property {INamespace} google/protobuf/any.proto Any\r\n * @property {INamespace} google/protobuf/duration.proto Duration\r\n * @property {INamespace} google/protobuf/empty.proto Empty\r\n * @property {INamespace} google/protobuf/field_mask.proto FieldMask\r\n * @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\r\n * @property {INamespace} google/protobuf/timestamp.proto Timestamp\r\n * @property {INamespace} google/protobuf/wrappers.proto Wrappers\r\n * @example\r\n * // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension)\r\n * protobuf.common(\"descriptor\", descriptorJson);\r\n *\r\n * // manually provides a custom definition (uses my.foo namespace)\r\n * protobuf.common(\"my/foo/bar.proto\", myFooBarJson);\r\n */\r\nfunction common(name, json) {\r\n if (!commonRe.test(name)) {\r\n name = \"google/protobuf/\" + name + \".proto\";\r\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\r\n }\r\n common[name] = json;\r\n}\r\n\r\n// Not provided because of limited use (feel free to discuss or to provide yourself):\r\n//\r\n// google/protobuf/descriptor.proto\r\n// google/protobuf/source_context.proto\r\n// google/protobuf/type.proto\r\n//\r\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\r\n// the repository or package within the google/protobuf directory.\r\n\r\ncommon(\"any\", {\r\n\r\n /**\r\n * Properties of a google.protobuf.Any message.\r\n * @interface IAny\r\n * @type {Object}\r\n * @property {string} [typeUrl]\r\n * @property {Uint8Array} [bytes]\r\n * @memberof common\r\n */\r\n Any: {\r\n fields: {\r\n type_url: {\r\n type: \"string\",\r\n id: 1\r\n },\r\n value: {\r\n type: \"bytes\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\nvar timeType;\r\n\r\ncommon(\"duration\", {\r\n\r\n /**\r\n * Properties of a google.protobuf.Duration message.\r\n * @interface IDuration\r\n * @type {Object}\r\n * @property {number|Long} [seconds]\r\n * @property {number} [nanos]\r\n * @memberof common\r\n */\r\n Duration: timeType = {\r\n fields: {\r\n seconds: {\r\n type: \"int64\",\r\n id: 1\r\n },\r\n nanos: {\r\n type: \"int32\",\r\n id: 2\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"timestamp\", {\r\n\r\n /**\r\n * Properties of a google.protobuf.Timestamp message.\r\n * @interface ITimestamp\r\n * @type {Object}\r\n * @property {number|Long} [seconds]\r\n * @property {number} [nanos]\r\n * @memberof common\r\n */\r\n Timestamp: timeType\r\n});\r\n\r\ncommon(\"empty\", {\r\n\r\n /**\r\n * Properties of a google.protobuf.Empty message.\r\n * @interface IEmpty\r\n * @memberof common\r\n */\r\n Empty: {\r\n fields: {}\r\n }\r\n});\r\n\r\ncommon(\"struct\", {\r\n\r\n /**\r\n * Properties of a google.protobuf.Struct message.\r\n * @interface IStruct\r\n * @type {Object}\r\n * @property {Object.<string,IValue>} [fields]\r\n * @memberof common\r\n */\r\n Struct: {\r\n fields: {\r\n fields: {\r\n keyType: \"string\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.Value message.\r\n * @interface IValue\r\n * @type {Object}\r\n * @property {string} [kind]\r\n * @property {0} [nullValue]\r\n * @property {number} [numberValue]\r\n * @property {string} [stringValue]\r\n * @property {boolean} [boolValue]\r\n * @property {IStruct} [structValue]\r\n * @property {IListValue} [listValue]\r\n * @memberof common\r\n */\r\n Value: {\r\n oneofs: {\r\n kind: {\r\n oneof: [\r\n \"nullValue\",\r\n \"numberValue\",\r\n \"stringValue\",\r\n \"boolValue\",\r\n \"structValue\",\r\n \"listValue\"\r\n ]\r\n }\r\n },\r\n fields: {\r\n nullValue: {\r\n type: \"NullValue\",\r\n id: 1\r\n },\r\n numberValue: {\r\n type: \"double\",\r\n id: 2\r\n },\r\n stringValue: {\r\n type: \"string\",\r\n id: 3\r\n },\r\n boolValue: {\r\n type: \"bool\",\r\n id: 4\r\n },\r\n structValue: {\r\n type: \"Struct\",\r\n id: 5\r\n },\r\n listValue: {\r\n type: \"ListValue\",\r\n id: 6\r\n }\r\n }\r\n },\r\n\r\n NullValue: {\r\n values: {\r\n NULL_VALUE: 0\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.ListValue message.\r\n * @interface IListValue\r\n * @type {Object}\r\n * @property {Array.<IValue>} [values]\r\n * @memberof common\r\n */\r\n ListValue: {\r\n fields: {\r\n values: {\r\n rule: \"repeated\",\r\n type: \"Value\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"wrappers\", {\r\n\r\n /**\r\n * Properties of a google.protobuf.DoubleValue message.\r\n * @interface IDoubleValue\r\n * @type {Object}\r\n * @property {number} [value]\r\n * @memberof common\r\n */\r\n DoubleValue: {\r\n fields: {\r\n value: {\r\n type: \"double\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.FloatValue message.\r\n * @interface IFloatValue\r\n * @type {Object}\r\n * @property {number} [value]\r\n * @memberof common\r\n */\r\n FloatValue: {\r\n fields: {\r\n value: {\r\n type: \"float\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.Int64Value message.\r\n * @interface IInt64Value\r\n * @type {Object}\r\n * @property {number|Long} [value]\r\n * @memberof common\r\n */\r\n Int64Value: {\r\n fields: {\r\n value: {\r\n type: \"int64\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.UInt64Value message.\r\n * @interface IUInt64Value\r\n * @type {Object}\r\n * @property {number|Long} [value]\r\n * @memberof common\r\n */\r\n UInt64Value: {\r\n fields: {\r\n value: {\r\n type: \"uint64\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.Int32Value message.\r\n * @interface IInt32Value\r\n * @type {Object}\r\n * @property {number} [value]\r\n * @memberof common\r\n */\r\n Int32Value: {\r\n fields: {\r\n value: {\r\n type: \"int32\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.UInt32Value message.\r\n * @interface IUInt32Value\r\n * @type {Object}\r\n * @property {number} [value]\r\n * @memberof common\r\n */\r\n UInt32Value: {\r\n fields: {\r\n value: {\r\n type: \"uint32\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.BoolValue message.\r\n * @interface IBoolValue\r\n * @type {Object}\r\n * @property {boolean} [value]\r\n * @memberof common\r\n */\r\n BoolValue: {\r\n fields: {\r\n value: {\r\n type: \"bool\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.StringValue message.\r\n * @interface IStringValue\r\n * @type {Object}\r\n * @property {string} [value]\r\n * @memberof common\r\n */\r\n StringValue: {\r\n fields: {\r\n value: {\r\n type: \"string\",\r\n id: 1\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Properties of a google.protobuf.BytesValue message.\r\n * @interface IBytesValue\r\n * @type {Object}\r\n * @property {Uint8Array} [value]\r\n * @memberof common\r\n */\r\n BytesValue: {\r\n fields: {\r\n value: {\r\n type: \"bytes\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n\r\ncommon(\"field_mask\", {\r\n\r\n /**\r\n * Properties of a google.protobuf.FieldMask message.\r\n * @interface IDoubleValue\r\n * @type {Object}\r\n * @property {number} [value]\r\n * @memberof common\r\n */\r\n FieldMask: {\r\n fields: {\r\n paths: {\r\n rule: \"repeated\",\r\n type: \"string\",\r\n id: 1\r\n }\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Gets the root definition of the specified common proto file.\r\n *\r\n * Bundled definitions are:\r\n * - google/protobuf/any.proto\r\n * - google/protobuf/duration.proto\r\n * - google/protobuf/empty.proto\r\n * - google/protobuf/field_mask.proto\r\n * - google/protobuf/struct.proto\r\n * - google/protobuf/timestamp.proto\r\n * - google/protobuf/wrappers.proto\r\n *\r\n * @param {string} file Proto file name\r\n * @returns {INamespace|null} Root definition or `null` if not defined\r\n */\r\ncommon.get = function get(file) {\r\n return common[file] || null;\r\n};\r\n\r\n},{}],12:[function(require,module,exports){\r\n\"use strict\";\r\n/**\r\n * Runtime message from/to plain object converters.\r\n * @namespace\r\n */\r\nvar converter = exports;\r\n\r\nvar Enum = require(15),\r\n util = require(37);\r\n\r\n/**\r\n * Generates a partial value fromObject conveter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n if (field.resolvedType) {\r\n if (field.resolvedType instanceof Enum) { gen\r\n (\"switch(d%s){\", prop);\r\n for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) {\r\n if (field.repeated && values[keys[i]] === field.typeDefault) gen\r\n (\"default:\");\r\n gen\r\n (\"case%j:\", keys[i])\r\n (\"case %i:\", values[keys[i]])\r\n (\"m%s=%j\", prop, values[keys[i]])\r\n (\"break\");\r\n } gen\r\n (\"}\");\r\n } else gen\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s=types[%i].fromObject(d%s)\", prop, fieldIndex, prop);\r\n } else {\r\n var isUnsigned = false;\r\n switch (field.type) {\r\n case \"double\":\r\n case \"float\": gen\r\n (\"m%s=Number(d%s)\", prop, prop); // also catches \"NaN\", \"Infinity\"\r\n break;\r\n case \"uint32\":\r\n case \"fixed32\": gen\r\n (\"m%s=d%s>>>0\", prop, prop);\r\n break;\r\n case \"int32\":\r\n case \"sint32\":\r\n case \"sfixed32\": gen\r\n (\"m%s=d%s|0\", prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(util.Long)\")\r\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n (\"m%s=d%s\", prop, prop)\r\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n break;\r\n case \"bytes\": gen\r\n (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n (\"else if(d%s.length)\", prop)\r\n (\"m%s=d%s\", prop, prop);\r\n break;\r\n case \"string\": gen\r\n (\"m%s=String(d%s)\", prop, prop);\r\n break;\r\n case \"bool\": gen\r\n (\"m%s=Boolean(d%s)\", prop, prop);\r\n break;\r\n /* default: gen\r\n (\"m%s=d%s\", prop, prop);\r\n break; */\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray;\r\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n (\"if(d instanceof this.ctor)\")\r\n (\"return d\");\r\n if (!fields.length) return gen\r\n (\"return new this.ctor\");\r\n gen\r\n (\"var m=new this.ctor\");\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s={}\", prop)\r\n (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\r\n genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[ks[i]]\")\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(!Array.isArray(d%s))\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": array expected\")\r\n (\"m%s=[]\", prop)\r\n (\"for(var i=0;i<d%s.length;++i){\", prop);\r\n genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[i]\")\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Non-repeated fields\r\n } else {\r\n if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\r\n (\"if(d%s!=null){\", prop); // !== undefined && !== null\r\n genValuePartial_fromObject(gen, field, /* not sorted */ i, prop);\r\n if (!(field.resolvedType instanceof Enum)) gen\r\n (\"}\");\r\n }\r\n } return gen\r\n (\"return m\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n/**\r\n * Generates a partial value toObject converter.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} prop Property reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n if (field.resolvedType) {\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?types[%i].values[m%s]:m%s\", prop, fieldIndex, prop, prop);\r\n else gen\r\n (\"d%s=types[%i].toObject(m%s,o)\", prop, fieldIndex, prop);\r\n } else {\r\n var isUnsigned = false;\r\n switch (field.type) {\r\n case \"double\":\r\n case \"float\": gen\r\n (\"d%s=o.json&&!isFinite(m%s)?String(m%s):m%s\", prop, prop, prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(typeof m%s===\\\"number\\\")\", prop)\r\n (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\r\n (\"else\") // Long-like\r\n (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n break;\r\n case \"bytes\": gen\r\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n break;\r\n default: gen\r\n (\"d%s=m%s\", prop, prop);\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n if (!fields.length)\r\n return util.codegen()(\"return {}\");\r\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d={}\");\r\n\r\n var repeatedFields = [],\r\n mapFields = [],\r\n normalFields = [],\r\n i = 0;\r\n for (; i < fields.length; ++i)\r\n if (!fields[i].partOf)\r\n ( fields[i].resolve().repeated ? repeatedFields\r\n : fields[i].map ? mapFields\r\n : normalFields).push(fields[i]);\r\n\r\n if (repeatedFields.length) { gen\r\n (\"if(o.arrays||o.defaults){\");\r\n for (i = 0; i < repeatedFields.length; ++i) gen\r\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (mapFields.length) { gen\r\n (\"if(o.objects||o.defaults){\");\r\n for (i = 0; i < mapFields.length; ++i) gen\r\n (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (normalFields.length) { gen\r\n (\"if(o.defaults){\");\r\n for (i = 0; i < normalFields.length; ++i) {\r\n var field = normalFields[i],\r\n prop = util.safeProp(field.name);\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n else if (field.long) gen\r\n (\"if(util.Long){\")\r\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n (\"}else\")\r\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n else if (field.bytes) gen\r\n (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n else gen\r\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n } gen\r\n (\"}\");\r\n }\r\n var hasKs2 = false;\r\n for (i = 0; i < fields.length; ++i) {\r\n var field = fields[i],\r\n index = mtype._fieldsArray.indexOf(field),\r\n prop = util.safeProp(field.name);\r\n if (field.map) {\r\n if (!hasKs2) { hasKs2 = true; gen\r\n (\"var ks2\");\r\n } gen\r\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n (\"d%s={}\", prop)\r\n (\"for(var j=0;j<ks2.length;++j){\");\r\n genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[ks2[j]]\")\r\n (\"}\");\r\n } else if (field.repeated) { gen\r\n (\"if(m%s&&m%s.length){\", prop, prop)\r\n (\"d%s=[]\", prop)\r\n (\"for(var j=0;j<m%s.length;++j){\", prop);\r\n genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[j]\")\r\n (\"}\");\r\n } else { gen\r\n (\"if(m%s!=null&&m.hasOwnProperty(%j)){\", prop, field.name); // !== undefined && !== null\r\n genValuePartial_toObject(gen, field, /* sorted */ index, prop);\r\n if (field.partOf) gen\r\n (\"if(o.oneofs)\")\r\n (\"d%s=%j\", util.safeProp(field.partOf.name), field.name);\r\n }\r\n gen\r\n (\"}\");\r\n }\r\n return gen\r\n (\"return d\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n};\r\n\r\n},{\"15\":15,\"37\":37}],13:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(15),\r\n types = require(36),\r\n util = require(37);\r\n\r\nfunction missing(field) {\r\n return \"missing required '\" + field.name + \"'\";\r\n}\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction decoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\r\n (\"if(!(r instanceof Reader))\")\r\n (\"r=Reader.create(r)\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\r\n (\"while(r.pos<c){\")\r\n (\"var t=r.uint32()\");\r\n if (mtype.group) gen\r\n (\"if((t&7)===4)\")\r\n (\"break\");\r\n gen\r\n (\"switch(t>>>3){\");\r\n\r\n var i = 0;\r\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name); gen\r\n (\"case %i:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"k=r.%s()\", field.keyType)\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.long[field.keyType] !== undefined) {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n } else {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[k]=r.%s()\", ref, type);\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"if(!(%s&&%s.length))\", ref, ref)\r\n (\"%s=[]\", ref);\r\n\r\n // Packable (always check for forward and backward compatiblity)\r\n if (types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos<c2)\")\r\n (\"%s.push(r.%s())\", ref, type)\r\n (\"}else\");\r\n\r\n // Non-packed\r\n if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n ? \"%s.push(types[%i].decode(r))\"\r\n : \"%s.push(types[%i].decode(r,r.uint32()))\", ref, i);\r\n else gen\r\n (\"%s.push(r.%s())\", ref, type);\r\n\r\n // Non-repeated\r\n } else if (types.basic[type] === undefined) gen(field.resolvedType.group\r\n ? \"%s=types[%i].decode(r)\"\r\n : \"%s=types[%i].decode(r,r.uint32())\", ref, i);\r\n else gen\r\n (\"%s=r.%s()\", ref, type);\r\n gen\r\n (\"break\");\r\n // Unknown fields\r\n } gen\r\n (\"default:\")\r\n (\"r.skipType(t&7)\")\r\n (\"break\")\r\n\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Field presence\r\n for (i = 0; i < mtype._fieldsArray.length; ++i) {\r\n var rfield = mtype._fieldsArray[i];\r\n if (rfield.required) gen\r\n (\"if(!m.hasOwnProperty(%j))\", rfield.name)\r\n (\"throw util.ProtocolError(%j,{instance:m})\", missing(rfield));\r\n }\r\n\r\n return gen\r\n (\"return m\");\r\n /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n},{\"15\":15,\"36\":36,\"37\":37}],14:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = encoder;\r\n\r\nvar Enum = require(15),\r\n types = require(36),\r\n util = require(37);\r\n\r\n/**\r\n * Generates a partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n return field.resolvedType.group\r\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n\r\n // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n index = mtype._fieldsArray.indexOf(field),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) {\r\n gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\r\n (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\r\n (\"w.uint32(%i).fork().uint32(%i).%s(ks[i])\", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n else gen\r\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n gen\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n (\"for(var i=0;i<%s.length;++i)\", ref)\r\n (\"w.%s(%s[i])\", type, ref)\r\n (\"w.ldelim()\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n } gen\r\n (\"}\");\r\n\r\n // Non-repeated\r\n } else {\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref);\r\n else gen\r\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n\r\n return gen\r\n (\"return w\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n},{\"15\":15,\"36\":36,\"37\":37}],15:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = require(23),\r\n util = require(37);\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.<string,number>} [values] Enum values as an object, by name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.<string,string>} [comments] The value comments for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (values && typeof values !== \"object\")\r\n throw TypeError(\"values must be an object\");\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.<number,string>}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.<string,number>}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n /**\r\n * Enum comment text.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Value comment texts, if any.\r\n * @type {Object.<string,string>}\r\n */\r\n this.comments = comments || {};\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.<number[]|string>}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n if (values)\r\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.<string,number>} values Enum values\r\n * @property {Object.<string,*>} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n enm.reserved = json.reserved;\r\n return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"values\" , this.values,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"comments\" , keepComments ? this.comments : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment) {\r\n // utilized by the parser but not by .fromJSON\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (!util.isInteger(id))\r\n throw TypeError(\"id must be an integer\");\r\n\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n if (this.isReservedId(id))\r\n throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n if (this.isReservedName(name))\r\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n if (this.valuesById[id] !== undefined) {\r\n if (!(this.options && this.options.allow_alias))\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n } else\r\n this.valuesById[this.values[name] = id] = name;\r\n\r\n this.comments[name] = comment || null;\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n var val = this.values[name];\r\n if (val == null)\r\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n delete this.comments[name];\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n},{\"23\":23,\"24\":24,\"37\":37}],16:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum = require(15),\r\n types = require(36),\r\n util = require(37);\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\r\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n if (util.isObject(rule)) {\r\n comment = extend;\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n comment = options;\r\n options = extend;\r\n extend = undefined;\r\n }\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id must be a non-negative integer\");\r\n\r\n if (!util.isString(type))\r\n throw TypeError(\"type must be a string\");\r\n\r\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule must be a string rule\");\r\n\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend must be a string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {Type|null}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {OneOf|null}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field type's default value.\r\n * @type {*}\r\n */\r\n this.typeDefault = null;\r\n\r\n /**\r\n * The field's default value on prototypes.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n /**\r\n * Whether this field's value is a buffer.\r\n * @type {boolean}\r\n */\r\n this.bytes = type === \"bytes\";\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {Type|Enum|null}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {Field|null}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {Field|null}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {boolean|null}\r\n * @private\r\n */\r\n this._packed = null;\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n get: function() {\r\n // defaults to packed=true if not explicity set to false\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\") // clear cached before setting\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.<string,*>} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n if (this.resolved)\r\n return this;\r\n\r\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n if (this.resolvedType instanceof Type)\r\n this.typeDefault = null;\r\n else // instanceof Enum\r\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n }\r\n\r\n // use explicitly set default value if present\r\n if (this.options && this.options[\"default\"] != null) {\r\n this.typeDefault = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n }\r\n\r\n // remove unnecessary options\r\n if (this.options) {\r\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n delete this.options.packed;\r\n if (!Object.keys(this.options).length)\r\n this.options = undefined;\r\n }\r\n\r\n // convert to internal data type if necesssary\r\n if (this.long) {\r\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n /* istanbul ignore else */\r\n if (Object.freeze)\r\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n var buf;\r\n if (util.base64.test(this.typeDefault))\r\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n else\r\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n this.typeDefault = buf;\r\n }\r\n\r\n // take special care of maps and repeated fields\r\n if (this.map)\r\n this.defaultValue = util.emptyObject;\r\n else if (this.repeated)\r\n this.defaultValue = util.emptyArray;\r\n else\r\n this.defaultValue = this.typeDefault;\r\n\r\n // ensure proper value on prototype\r\n if (this.parent instanceof Type)\r\n this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n // submessage: decorate the submessage and use its name as the type\r\n if (typeof fieldType === \"function\")\r\n fieldType = util.decorateType(fieldType).name;\r\n\r\n // enum reference: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldType && typeof fieldType === \"object\")\r\n fieldType = util.decorateEnum(fieldType).name;\r\n\r\n return function fieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor<T>|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message<T>\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\nField._configure = function configure(Type_) {\r\n Type = Type_;\r\n};\r\n\r\n},{\"15\":15,\"24\":24,\"36\":36,\"37\":37}],17:[function(require,module,exports){\r\n\"use strict\";\r\nvar protobuf = module.exports = require(18);\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === \"function\") {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise<Root>\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder = require(14);\r\nprotobuf.decoder = require(13);\r\nprotobuf.verifier = require(40);\r\nprotobuf.converter = require(12);\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(24);\r\nprotobuf.Namespace = require(23);\r\nprotobuf.Root = require(29);\r\nprotobuf.Enum = require(15);\r\nprotobuf.Type = require(35);\r\nprotobuf.Field = require(16);\r\nprotobuf.OneOf = require(25);\r\nprotobuf.MapField = require(20);\r\nprotobuf.Service = require(33);\r\nprotobuf.Method = require(22);\r\n\r\n// Runtime\r\nprotobuf.Message = require(21);\r\nprotobuf.wrappers = require(41);\r\n\r\n// Utility\r\nprotobuf.types = require(36);\r\nprotobuf.util = require(37);\r\n\r\n// Configure reflection\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n\r\n},{\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"18\":18,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"29\":29,\"33\":33,\"35\":35,\"36\":36,\"37\":37,\"40\":40,\"41\":41}],18:[function(require,module,exports){\r\n\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(42);\r\nprotobuf.BufferWriter = require(43);\r\nprotobuf.Reader = require(27);\r\nprotobuf.BufferReader = require(28);\r\n\r\n// Utility\r\nprotobuf.util = require(39);\r\nprotobuf.rpc = require(31);\r\nprotobuf.roots = require(30);\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n protobuf.util._configure();\r\n}\r\n\r\n// Configure serialization\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\r\n},{\"27\":27,\"28\":28,\"30\":30,\"31\":31,\"39\":39,\"42\":42,\"43\":43}],19:[function(require,module,exports){\r\n\"use strict\";\r\nvar protobuf = module.exports = require(17);\r\n\r\nprotobuf.build = \"full\";\r\n\r\n// Parser\r\nprotobuf.tokenize = require(34);\r\nprotobuf.parse = require(26);\r\nprotobuf.common = require(11);\r\n\r\n// Configure parser\r\nprotobuf.Root._configure(protobuf.Type, protobuf.parse, protobuf.common);\r\n\r\n},{\"11\":11,\"17\":17,\"26\":26,\"34\":34}],20:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = require(16);\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types = require(36),\r\n util = require(37);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(keyType))\r\n throw TypeError(\"keyType must be a string\");\r\n\r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {ReflectionObject|null}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"keyType\" , this.keyType,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n if (types.mapKey[this.keyType] === undefined)\r\n throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n // submessage value: decorate the submessage and use its name as the type\r\n if (typeof fieldValueType === \"function\")\r\n fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldValueType && typeof fieldValueType === \"object\")\r\n fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n return function mapFieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n };\r\n};\r\n\r\n},{\"16\":16,\"36\":36,\"37\":37}],21:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar util = require(39);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties<T>} [properties] Properties to set\r\n * @template T extends object\r\n */\r\nfunction Message(properties) {\r\n // not used internally\r\n if (properties)\r\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.<string,*>} [properties] Properties to set\r\n * @returns {Message<T>} Message instance\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.create = function create(properties) {\r\n return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.<string,*>} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.<string,*>} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.decode = function decode(reader) {\r\n return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.<string,*>} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n * @template T extends Message<T>\r\n * @this Constructor<T>\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.<string,*>} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/\r\n},{\"39\":39}],22:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = require(37);\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\r\n\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!(type === undefined || util.isString(type)))\r\n throw TypeError(\"type must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType must be a string\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedResponseType = null;\r\n\r\n /**\r\n * Comment for this method\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.<string,*>} [options] Method options\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n \"requestType\" , this.requestType,\r\n \"requestStream\" , this.requestStream,\r\n \"responseType\" , this.responseType,\r\n \"responseStream\" , this.responseStream,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n /* istanbul ignore if */\r\n if (this.resolved)\r\n return this;\r\n\r\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n},{\"24\":24,\"37\":37}],23:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Enum = require(15),\r\n Field = require(16),\r\n util = require(37);\r\n\r\nvar Type, // cyclic\r\n Service; // \"\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.<string,*>|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (reserved[i] === name)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.<string,ReflectionObject>|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {ReflectionObject[]|null}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n get: function() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.<string,*>} [options] Namespace options\r\n * @property {Object.<string,AnyNestedObject>} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\r\n */\r\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.<string,AnyNestedObject>} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n /* istanbul ignore else */\r\n if (nestedJson) {\r\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n nested = nestedJson[names[i]];\r\n ns.add( // most to least likely\r\n ( nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : nested.id !== undefined\r\n ? Field.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n return this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.<string,number>} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n if (this.nested && this.nested[name] instanceof Enum)\r\n return this.nested[name].values;\r\n throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n throw TypeError(\"object must be a valid nested object\");\r\n\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.nestedArray;\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object must be a ReflectionObject\");\r\n if (object.parent !== this)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path))\r\n throw TypeError(\"illegal path\");\r\n if (path && path.length && path[0] === \"\")\r\n throw Error(\"path must be relative\");\r\n\r\n var ptr = this;\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n var nested = this.nestedArray, i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n /* istanbul ignore next */\r\n if (typeof filterTypes === \"boolean\") {\r\n parentAlreadyChecked = filterTypes;\r\n filterTypes = undefined;\r\n } else if (filterTypes && !Array.isArray(filterTypes))\r\n filterTypes = [ filterTypes ];\r\n\r\n if (util.isString(path) && path.length) {\r\n if (path === \".\")\r\n return this.root;\r\n path = path.split(\".\");\r\n } else if (!path.length)\r\n return this;\r\n\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found) {\r\n if (path.length === 1) {\r\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n return found;\r\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n return found;\r\n\r\n // Otherwise try each nested namespace\r\n } else\r\n for (var i = 0; i < this.nestedArray.length; ++i)\r\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n return found;\r\n\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n var found = this.lookup(path, [ Type ]);\r\n if (!found)\r\n throw Error(\"no such type: \" + path);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, [ Enum ]);\r\n if (!found)\r\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n var found = this.lookup(path, [ Type, Enum ]);\r\n if (!found)\r\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n var found = this.lookup(path, [ Service ]);\r\n if (!found)\r\n throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\nNamespace._configure = function(Type_, Service_) {\r\n Type = Type_;\r\n Service = Service_;\r\n};\r\n\r\n},{\"15\":15,\"16\":16,\"24\":24,\"37\":37}],24:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = require(37);\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options must be an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.<string,*>|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {Namespace|null}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * Comment text, if any.\r\n * @type {string|null}\r\n */\r\n this.comment = null;\r\n\r\n /**\r\n * Defining file name.\r\n * @type {string|null}\r\n */\r\n this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: function() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: function() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join(\".\");\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.<string,*>} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n if (this.root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.<string,*>} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n var className = this.constructor.className,\r\n fullName = this.fullName;\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n\r\nReflectionObject._configure = function(Root_) {\r\n Root = Root_;\r\n};\r\n\r\n},{\"37\":37}],25:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(24);\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = require(16),\r\n util = require(37);\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.<string,*>} [fieldNames] Field names\r\n * @param {Object.<string,*>} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore if */\r\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n throw TypeError(\"fieldNames must be an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.<string>} oneof Oneof field names\r\n * @property {Object.<string,*>} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"oneof\" , this.oneof,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n if (!oneof.fieldsArray[i].parent)\r\n oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n if (field.parent && field.parent !== this.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this.fieldsArray.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n var index = this.fieldsArray.indexOf(field);\r\n\r\n /* istanbul ignore if */\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n\r\n this.fieldsArray.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) // theoretical\r\n this.oneof.splice(index, 1);\r\n\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n for (var i = 0; i < this.oneof.length; ++i) {\r\n var field = parent.get(this.oneof[i]);\r\n if (field && !field.partOf) {\r\n field.partOf = self;\r\n self.fieldsArray.push(field);\r\n }\r\n }\r\n // Add not yet present fields\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n if ((field = this.fieldsArray[i]).parent)\r\n field.parent.remove(field);\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n var fieldNames = new Array(arguments.length),\r\n index = 0;\r\n while (index < arguments.length)\r\n fieldNames[index] = arguments[index++];\r\n return function oneOfDecorator(prototype, oneofName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new OneOf(oneofName, fieldNames));\r\n Object.defineProperty(prototype, oneofName, {\r\n get: util.oneOfGetter(fieldNames),\r\n set: util.oneOfSetter(fieldNames)\r\n });\r\n };\r\n};\r\n\r\n},{\"16\":16,\"24\":24,\"37\":37}],26:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = parse;\r\n\r\nparse.filename = null;\r\nparse.defaults = { keepCase: false };\r\n\r\nvar tokenize = require(34),\r\n Root = require(29),\r\n Type = require(35),\r\n Field = require(16),\r\n MapField = require(20),\r\n OneOf = require(25),\r\n Enum = require(15),\r\n Service = require(33),\r\n Method = require(22),\r\n types = require(36),\r\n util = require(37);\r\n\r\nvar base10Re = /^[1-9][0-9]*$/,\r\n base10NegRe = /^-?[1-9][0-9]*$/,\r\n base16Re = /^0[x][0-9a-fA-F]+$/,\r\n base16NegRe = /^-?0[x][0-9a-fA-F]+$/,\r\n base8Re = /^0[0-7]+$/,\r\n base8NegRe = /^-?0[0-7]+$/,\r\n numberRe = /^(?![eE])[0-9]*(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/,\r\n nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\r\n fqTypeRefRe = /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/;\r\n\r\n/**\r\n * Result object returned from {@link parse}.\r\n * @interface IParserResult\r\n * @property {string|undefined} package Package name, if declared\r\n * @property {string[]|undefined} imports Imports, if any\r\n * @property {string[]|undefined} weakImports Weak imports, if any\r\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\r\n * @property {Root} root Populated root instance\r\n */\r\n\r\n/**\r\n * Options modifying the behavior of {@link parse}.\r\n * @interface IParseOptions\r\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\r\n * @property {boolean} [alternateCommentMode=false] Recognize double-slash comments in addition to doc-block comments.\r\n */\r\n\r\n/**\r\n * Options modifying the behavior of JSON serialization.\r\n * @interface IToJSONOptions\r\n * @property {boolean} [keepComments=false] Serializes comments.\r\n */\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @param {string} source Source contents\r\n * @param {Root} root Root to populate\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {IParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {IParseOptions} defaults Default {@link IParseOptions}\r\n */\r\nfunction parse(source, root, options) {\r\n /* eslint-disable callback-return */\r\n if (!(root instanceof Root)) {\r\n options = root;\r\n root = new Root();\r\n }\r\n if (!options)\r\n options = parse.defaults;\r\n\r\n var tn = tokenize(source, options.alternateCommentMode || false),\r\n next = tn.next,\r\n push = tn.push,\r\n peek = tn.peek,\r\n skip = tn.skip,\r\n cmnt = tn.cmnt;\r\n\r\n var head = true,\r\n pkg,\r\n imports,\r\n weakImports,\r\n syntax,\r\n isProto3 = false;\r\n\r\n var ptr = root;\r\n\r\n var applyCase = options.keepCase ? function(name) { return name; } : util.camelCase;\r\n\r\n /* istanbul ignore next */\r\n function illegal(token, name, insideTryCatch) {\r\n var filename = parse.filename;\r\n if (!insideTryCatch)\r\n parse.filename = null;\r\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (\" + (filename ? filename + \", \" : \"\") + \"line \" + tn.line + \")\");\r\n }\r\n\r\n function readString() {\r\n var values = [],\r\n token;\r\n do {\r\n /* istanbul ignore if */\r\n if ((token = next()) !== \"\\\"\" && token !== \"'\")\r\n throw illegal(token);\r\n\r\n values.push(next());\r\n skip(token);\r\n token = peek();\r\n } while (token === \"\\\"\" || token === \"'\");\r\n return values.join(\"\");\r\n }\r\n\r\n function readValue(acceptTypeRef) {\r\n var token = next();\r\n switch (token) {\r\n case \"'\":\r\n case \"\\\"\":\r\n push(token);\r\n return readString();\r\n case \"true\": case \"TRUE\":\r\n return true;\r\n case \"false\": case \"FALSE\":\r\n return false;\r\n }\r\n try {\r\n return parseNumber(token, /* insideTryCatch */ true);\r\n } catch (e) {\r\n\r\n /* istanbul ignore else */\r\n if (acceptTypeRef && typeRefRe.test(token))\r\n return token;\r\n\r\n /* istanbul ignore next */\r\n throw illegal(token, \"value\");\r\n }\r\n }\r\n\r\n function readRanges(target, acceptStrings) {\r\n var token, start;\r\n do {\r\n if (acceptStrings && ((token = peek()) === \"\\\"\" || token === \"'\"))\r\n target.push(readString());\r\n else\r\n target.push([ start = parseId(next()), skip(\"to\", true) ? parseId(next()) : start ]);\r\n } while (skip(\",\", true));\r\n skip(\";\");\r\n }\r\n\r\n function parseNumber(token, insideTryCatch) {\r\n var sign = 1;\r\n if (token.charAt(0) === \"-\") {\r\n sign = -1;\r\n token = token.substring(1);\r\n }\r\n switch (token) {\r\n case \"inf\": case \"INF\": case \"Inf\":\r\n return sign * Infinity;\r\n case \"nan\": case \"NAN\": case \"Nan\": case \"NaN\":\r\n return NaN;\r\n case \"0\":\r\n return 0;\r\n }\r\n if (base10Re.test(token))\r\n return sign * parseInt(token, 10);\r\n if (base16Re.test(token))\r\n return sign * parseInt(token, 16);\r\n if (base8Re.test(token))\r\n return sign * parseInt(token, 8);\r\n\r\n /* istanbul ignore else */\r\n if (numberRe.test(token))\r\n return sign * parseFloat(token);\r\n\r\n /* istanbul ignore next */\r\n throw illegal(token, \"number\", insideTryCatch);\r\n }\r\n\r\n function parseId(token, acceptNegative) {\r\n switch (token) {\r\n case \"max\": case \"MAX\": case \"Max\":\r\n return 536870911;\r\n case \"0\":\r\n return 0;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!acceptNegative && token.charAt(0) === \"-\")\r\n throw illegal(token, \"id\");\r\n\r\n if (base10NegRe.test(token))\r\n return parseInt(token, 10);\r\n if (base16NegRe.test(token))\r\n return parseInt(token, 16);\r\n\r\n /* istanbul ignore else */\r\n if (base8NegRe.test(token))\r\n return parseInt(token, 8);\r\n\r\n /* istanbul ignore next */\r\n throw illegal(token, \"id\");\r\n }\r\n\r\n function parsePackage() {\r\n\r\n /* istanbul ignore if */\r\n if (pkg !== undefined)\r\n throw illegal(\"package\");\r\n\r\n pkg = next();\r\n\r\n /* istanbul ignore if */\r\n if (!typeRefRe.test(pkg))\r\n throw illegal(pkg, \"name\");\r\n\r\n ptr = ptr.define(pkg);\r\n skip(\";\");\r\n }\r\n\r\n function parseImport() {\r\n var token = peek();\r\n var whichImports;\r\n switch (token) {\r\n case \"weak\":\r\n whichImports = weakImports || (weakImports = []);\r\n next();\r\n break;\r\n case \"public\":\r\n next();\r\n // eslint-disable-line no-fallthrough\r\n default:\r\n whichImports = imports || (imports = []);\r\n break;\r\n }\r\n token = readString();\r\n skip(\";\");\r\n whichImports.push(token);\r\n }\r\n\r\n function parseSyntax() {\r\n skip(\"=\");\r\n syntax = readString();\r\n isProto3 = syntax === \"proto3\";\r\n\r\n /* istanbul ignore if */\r\n if (!isProto3 && syntax !== \"proto2\")\r\n throw illegal(syntax, \"syntax\");\r\n\r\n skip(\";\");\r\n }\r\n\r\n function parseCommon(parent, token) {\r\n switch (token) {\r\n\r\n case \"option\":\r\n parseOption(parent, token);\r\n skip(\";\");\r\n return true;\r\n\r\n case \"message\":\r\n parseType(parent, token);\r\n return true;\r\n\r\n case \"enum\":\r\n parseEnum(parent, token);\r\n return true;\r\n\r\n case \"service\":\r\n parseService(parent, token);\r\n return true;\r\n\r\n case \"extend\":\r\n parseExtension(parent, token);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function ifBlock(obj, fnIf, fnElse) {\r\n var trailingLine = tn.line;\r\n if (obj) {\r\n obj.comment = cmnt(); // try block-type comment\r\n obj.filename = parse.filename;\r\n }\r\n if (skip(\"{\", true)) {\r\n var token;\r\n while ((token = next()) !== \"}\")\r\n fnIf(token);\r\n skip(\";\", true);\r\n } else {\r\n if (fnElse)\r\n fnElse();\r\n skip(\";\");\r\n if (obj && typeof obj.comment !== \"string\")\r\n obj.comment = cmnt(trailingLine); // try line-type comment if no block\r\n }\r\n }\r\n\r\n function parseType(parent, token) {\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(token = next()))\r\n throw illegal(token, \"type name\");\r\n\r\n var type = new Type(token);\r\n ifBlock(type, function parseType_block(token) {\r\n if (parseCommon(type, token))\r\n return;\r\n\r\n switch (token) {\r\n\r\n case \"map\":\r\n parseMapField(type, token);\r\n break;\r\n\r\n case \"required\":\r\n case \"optional\":\r\n case \"repeated\":\r\n parseField(type, token);\r\n break;\r\n\r\n case \"oneof\":\r\n parseOneOf(type, token);\r\n break;\r\n\r\n case \"extensions\":\r\n readRanges(type.extensions || (type.extensions = []));\r\n break;\r\n\r\n case \"reserved\":\r\n readRanges(type.reserved || (type.reserved = []), true);\r\n break;\r\n\r\n default:\r\n /* istanbul ignore if */\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n\r\n push(token);\r\n parseField(type, \"optional\");\r\n break;\r\n }\r\n });\r\n parent.add(type);\r\n }\r\n\r\n function parseField(parent, rule, extend) {\r\n var type = next();\r\n if (type === \"group\") {\r\n parseGroup(parent, rule);\r\n return;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!typeRefRe.test(type))\r\n throw illegal(type, \"type\");\r\n\r\n var name = next();\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"name\");\r\n\r\n name = applyCase(name);\r\n skip(\"=\");\r\n\r\n var field = new Field(name, parseId(next()), type, rule, extend);\r\n ifBlock(field, function parseField_block(token) {\r\n\r\n /* istanbul ignore else */\r\n if (token === \"option\") {\r\n parseOption(field, token);\r\n skip(\";\");\r\n } else\r\n throw illegal(token);\r\n\r\n }, function parseField_line() {\r\n parseInlineOptions(field);\r\n });\r\n parent.add(field);\r\n\r\n // JSON defaults to packed=true if not set so we have to set packed=false explicity when\r\n // parsing proto2 descriptors without the option, where applicable. This must be done for\r\n // all known packable types and anything that could be an enum (= is not a basic type).\r\n if (!isProto3 && field.repeated && (types.packed[type] !== undefined || types.basic[type] === undefined))\r\n field.setOption(\"packed\", false, /* ifNotSet */ true);\r\n }\r\n\r\n function parseGroup(parent, rule) {\r\n var name = next();\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"name\");\r\n\r\n var fieldName = util.lcFirst(name);\r\n if (name === fieldName)\r\n name = util.ucFirst(name);\r\n skip(\"=\");\r\n var id = parseId(next());\r\n var type = new Type(name);\r\n type.group = true;\r\n var field = new Field(fieldName, id, name, rule);\r\n field.filename = parse.filename;\r\n ifBlock(type, function parseGroup_block(token) {\r\n switch (token) {\r\n\r\n case \"option\":\r\n parseOption(type, token);\r\n skip(\";\");\r\n break;\r\n\r\n case \"required\":\r\n case \"optional\":\r\n case \"repeated\":\r\n parseField(type, token);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw illegal(token); // there are no groups with proto3 semantics\r\n }\r\n });\r\n parent.add(type)\r\n .add(field);\r\n }\r\n\r\n function parseMapField(parent) {\r\n skip(\"<\");\r\n var keyType = next();\r\n\r\n /* istanbul ignore if */\r\n if (types.mapKey[keyType] === undefined)\r\n throw illegal(keyType, \"type\");\r\n\r\n skip(\",\");\r\n var valueType = next();\r\n\r\n /* istanbul ignore if */\r\n if (!typeRefRe.test(valueType))\r\n throw illegal(valueType, \"type\");\r\n\r\n skip(\">\");\r\n var name = next();\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(name))\r\n throw illegal(name, \"name\");\r\n\r\n skip(\"=\");\r\n var field = new MapField(applyCase(name), parseId(next()), keyType, valueType);\r\n ifBlock(field, function parseMapField_block(token) {\r\n\r\n /* istanbul ignore else */\r\n if (token === \"option\") {\r\n parseOption(field, token);\r\n skip(\";\");\r\n } else\r\n throw illegal(token);\r\n\r\n }, function parseMapField_line() {\r\n parseInlineOptions(field);\r\n });\r\n parent.add(field);\r\n }\r\n\r\n function parseOneOf(parent, token) {\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(token = next()))\r\n throw illegal(token, \"name\");\r\n\r\n var oneof = new OneOf(applyCase(token));\r\n ifBlock(oneof, function parseOneOf_block(token) {\r\n if (token === \"option\") {\r\n parseOption(oneof, token);\r\n skip(\";\");\r\n } else {\r\n push(token);\r\n parseField(oneof, \"optional\");\r\n }\r\n });\r\n parent.add(oneof);\r\n }\r\n\r\n function parseEnum(parent, token) {\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(token = next()))\r\n throw illegal(token, \"name\");\r\n\r\n var enm = new Enum(token);\r\n ifBlock(enm, function parseEnum_block(token) {\r\n switch(token) {\r\n case \"option\":\r\n parseOption(enm, token);\r\n skip(\";\");\r\n break;\r\n\r\n case \"reserved\":\r\n readRanges(enm.reserved || (enm.reserved = []), true);\r\n break;\r\n\r\n default:\r\n parseEnumValue(enm, token);\r\n }\r\n });\r\n parent.add(enm);\r\n }\r\n\r\n function parseEnumValue(parent, token) {\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(token))\r\n throw illegal(token, \"name\");\r\n\r\n skip(\"=\");\r\n var value = parseId(next(), true),\r\n dummy = {};\r\n ifBlock(dummy, function parseEnumValue_block(token) {\r\n\r\n /* istanbul ignore else */\r\n if (token === \"option\") {\r\n parseOption(dummy, token); // skip\r\n skip(\";\");\r\n } else\r\n throw illegal(token);\r\n\r\n }, function parseEnumValue_line() {\r\n parseInlineOptions(dummy); // skip\r\n });\r\n parent.add(token, value, dummy.comment);\r\n }\r\n\r\n function parseOption(parent, token) {\r\n var isCustom = skip(\"(\", true);\r\n\r\n /* istanbul ignore if */\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token, \"name\");\r\n\r\n var name = token;\r\n if (isCustom) {\r\n skip(\")\");\r\n name = \"(\" + name + \")\";\r\n token = peek();\r\n if (fqTypeRefRe.test(token)) {\r\n name += token;\r\n next();\r\n }\r\n }\r\n skip(\"=\");\r\n parseOptionValue(parent, name);\r\n }\r\n\r\n function parseOptionValue(parent, name) {\r\n if (skip(\"{\", true)) { // { a: \"foo\" b { c: \"bar\" } }\r\n do {\r\n /* istanbul ignore if */\r\n if (!nameRe.test(token = next()))\r\n throw illegal(token, \"name\");\r\n\r\n if (peek() === \"{\")\r\n parseOptionValue(parent, name + \".\" + token);\r\n else {\r\n skip(\":\");\r\n if (peek() === \"{\")\r\n parseOptionValue(parent, name + \".\" + token);\r\n else\r\n setOption(parent, name + \".\" + token, readValue(true));\r\n }\r\n } while (!skip(\"}\", true));\r\n } else\r\n setOption(parent, name, readValue(true));\r\n // Does not enforce a delimiter to be universal\r\n }\r\n\r\n function setOption(parent, name, value) {\r\n if (parent.setOption)\r\n parent.setOption(name, value);\r\n }\r\n\r\n function parseInlineOptions(parent) {\r\n if (skip(\"[\", true)) {\r\n do {\r\n parseOption(parent, \"option\");\r\n } while (skip(\",\", true));\r\n skip(\"]\");\r\n }\r\n return parent;\r\n }\r\n\r\n function parseService(parent, token) {\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(token = next()))\r\n throw illegal(token, \"service name\");\r\n\r\n var service = new Service(token);\r\n ifBlock(service, function parseService_block(token) {\r\n if (parseCommon(service, token))\r\n return;\r\n\r\n /* istanbul ignore else */\r\n if (token === \"rpc\")\r\n parseMethod(service, token);\r\n else\r\n throw illegal(token);\r\n });\r\n parent.add(service);\r\n }\r\n\r\n function parseMethod(parent, token) {\r\n var type = token;\r\n\r\n /* istanbul ignore if */\r\n if (!nameRe.test(token = next()))\r\n throw illegal(token, \"name\");\r\n\r\n var name = token,\r\n requestType, requestStream,\r\n responseType, responseStream;\r\n\r\n skip(\"(\");\r\n if (skip(\"stream\", true))\r\n requestStream = true;\r\n\r\n /* istanbul ignore if */\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n\r\n requestType = token;\r\n skip(\")\"); skip(\"returns\"); skip(\"(\");\r\n if (skip(\"stream\", true))\r\n responseStream = true;\r\n\r\n /* istanbul ignore if */\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token);\r\n\r\n responseType = token;\r\n skip(\")\");\r\n\r\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\r\n ifBlock(method, function parseMethod_block(token) {\r\n\r\n /* istanbul ignore else */\r\n if (token === \"option\") {\r\n parseOption(method, token);\r\n skip(\";\");\r\n } else\r\n throw illegal(token);\r\n\r\n });\r\n parent.add(method);\r\n }\r\n\r\n function parseExtension(parent, token) {\r\n\r\n /* istanbul ignore if */\r\n if (!typeRefRe.test(token = next()))\r\n throw illegal(token, \"reference\");\r\n\r\n var reference = token;\r\n ifBlock(null, function parseExtension_block(token) {\r\n switch (token) {\r\n\r\n case \"required\":\r\n case \"repeated\":\r\n case \"optional\":\r\n parseField(parent, token, reference);\r\n break;\r\n\r\n default:\r\n /* istanbul ignore if */\r\n if (!isProto3 || !typeRefRe.test(token))\r\n throw illegal(token);\r\n push(token);\r\n parseField(parent, \"optional\", reference);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n var token;\r\n while ((token = next()) !== null) {\r\n switch (token) {\r\n\r\n case \"package\":\r\n\r\n /* istanbul ignore if */\r\n if (!head)\r\n throw illegal(token);\r\n\r\n parsePackage();\r\n break;\r\n\r\n case \"import\":\r\n\r\n /* istanbul ignore if */\r\n if (!head)\r\n throw illegal(token);\r\n\r\n parseImport();\r\n break;\r\n\r\n case \"syntax\":\r\n\r\n /* istanbul ignore if */\r\n if (!head)\r\n throw illegal(token);\r\n\r\n parseSyntax();\r\n break;\r\n\r\n case \"option\":\r\n\r\n /* istanbul ignore if */\r\n if (!head)\r\n throw illegal(token);\r\n\r\n parseOption(ptr, token);\r\n skip(\";\");\r\n break;\r\n\r\n default:\r\n\r\n /* istanbul ignore else */\r\n if (parseCommon(ptr, token)) {\r\n head = false;\r\n continue;\r\n }\r\n\r\n /* istanbul ignore next */\r\n throw illegal(token);\r\n }\r\n }\r\n\r\n parse.filename = null;\r\n return {\r\n \"package\" : pkg,\r\n \"imports\" : imports,\r\n weakImports : weakImports,\r\n syntax : syntax,\r\n root : root\r\n };\r\n}\r\n\r\n/**\r\n * Parses the given .proto source and returns an object with the parsed contents.\r\n * @name parse\r\n * @function\r\n * @param {string} source Source contents\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {IParserResult} Parser result\r\n * @property {string} filename=null Currently processing file name for error reporting, if known\r\n * @property {IParseOptions} defaults Default {@link IParseOptions}\r\n * @variation 2\r\n */\r\n\r\n},{\"15\":15,\"16\":16,\"20\":20,\"22\":22,\"25\":25,\"29\":29,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"37\":37}],27:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(39);\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n if ((wireType = this.uint32() & 7) === 4)\r\n break;\r\n this.skipType(wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n\r\n},{\"39\":39}],28:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(27);\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(39);\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\r\n},{\"27\":27,\"39\":39}],29:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = require(23);\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field = require(16),\r\n Enum = require(15),\r\n OneOf = require(25),\r\n util = require(37);\r\n\r\nvar Type, // cyclic\r\n parse, // might be excluded\r\n common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.<string,*>} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files.\r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n if (json.options)\r\n root.setOptions(json.options);\r\n return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = undefined;\r\n }\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename, options);\r\n\r\n var sync = callback === SYNC; // undocumented\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n if (sync)\r\n throw err;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n parse.filename = filename;\r\n var parsed = parse(source, self, options),\r\n resolved,\r\n i = 0;\r\n if (parsed.imports)\r\n for (; i < parsed.imports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.imports[i]))\r\n fetch(resolved);\r\n if (parsed.weakImports)\r\n for (i = 0; i < parsed.weakImports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\r\n fetch(resolved, true);\r\n }\r\n } catch (err) {\r\n finish(err);\r\n }\r\n if (!sync && !queued)\r\n finish(null, self); // only once anyway\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded / attempted\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n /* istanbul ignore else */\r\n if (!weak)\r\n finish(err);\r\n else if (!queued) // can't be covered reliably\r\n finish(null, self);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n for (var i = 0, resolved; i < filename.length; ++i)\r\n if (resolved = self.resolvePath(\"\", filename[i]))\r\n fetch(resolved);\r\n\r\n if (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise<Root>} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise<Root>\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n if (!util.isNode)\r\n throw Error(\"not supported\");\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n if (this.deferred.length)\r\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n if (!tryHandleExtension(this, object))\r\n this.deferred.push(object);\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n if (object instanceof Type) // Try to handle any deferred extensions\r\n for (var i = 0; i < this.deferred.length;)\r\n if (tryHandleExtension(this, this.deferred[i]))\r\n this.deferred.splice(i, 1);\r\n else\r\n ++i;\r\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n this._handleAdd(object._nestedArray[j]);\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object; // expose namespace as property of its parent\r\n }\r\n\r\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field */ object.extend !== undefined) {\r\n if (/* already handled */ object.extensionField) { // remove its sister field\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n } else { // cancel the extension\r\n var index = this.deferred.indexOf(object);\r\n /* istanbul ignore else */\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n }\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose enum values\r\n\r\n } else if (object instanceof Namespace) {\r\n\r\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n this._handleRemove(object._nestedArray[i]);\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose namespaces\r\n\r\n }\r\n};\r\n\r\nRoot._configure = function(Type_, parse_, common_) {\r\n Type = Type_;\r\n parse = parse_;\r\n common = common_;\r\n};\r\n\r\n},{\"15\":15,\"16\":16,\"23\":23,\"25\":25,\"37\":37}],30:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\r\n},{}],31:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(32);\r\n\r\n},{\"32\":32}],32:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(39);\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\r\n * @param {Constructor<TReq>} requestCtor Request constructor\r\n * @param {Constructor<TRes>} responseCtor Response constructor\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n\r\n},{\"39\":39}],33:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = require(23);\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = require(22),\r\n util = require(37),\r\n rpc = require(31);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.<string,Method>}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {Method[]|null}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.<string,IMethod>} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n /* istanbul ignore else */\r\n if (json.methods)\r\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n if (json.nested)\r\n service.addJSON(json.nested);\r\n service.comment = json.comment;\r\n return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n get: function() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n return this.methods[name]\r\n || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n var methods = this.methodsArray;\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n /* istanbul ignore if */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore if */\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n m: method,\r\n q: method.resolvedRequestType.ctor,\r\n s: method.resolvedResponseType.ctor\r\n });\r\n }\r\n return rpcService;\r\n};\r\n\r\n},{\"22\":22,\"23\":23,\"31\":31,\"37\":37}],34:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = tokenize;\r\n\r\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\r\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\r\n\r\nvar setCommentRe = /^ *[*/]+ */,\r\n setCommentAltRe = /^\\s*\\*?\\/*/,\r\n setCommentSplitRe = /\\n/g,\r\n whitespaceRe = /\\s/,\r\n unescapeRe = /\\\\(.?)/g;\r\n\r\nvar unescapeMap = {\r\n \"0\": \"\\0\",\r\n \"r\": \"\\r\",\r\n \"n\": \"\\n\",\r\n \"t\": \"\\t\"\r\n};\r\n\r\n/**\r\n * Unescapes a string.\r\n * @param {string} str String to unescape\r\n * @returns {string} Unescaped string\r\n * @property {Object.<string,string>} map Special characters map\r\n * @memberof tokenize\r\n */\r\nfunction unescape(str) {\r\n return str.replace(unescapeRe, function($0, $1) {\r\n switch ($1) {\r\n case \"\\\\\":\r\n case \"\":\r\n return $1;\r\n default:\r\n return unescapeMap[$1] || \"\";\r\n }\r\n });\r\n}\r\n\r\ntokenize.unescape = unescape;\r\n\r\n/**\r\n * Gets the next token and advances.\r\n * @typedef TokenizerHandleNext\r\n * @type {function}\r\n * @returns {string|null} Next token or `null` on eof\r\n */\r\n\r\n/**\r\n * Peeks for the next token.\r\n * @typedef TokenizerHandlePeek\r\n * @type {function}\r\n * @returns {string|null} Next token or `null` on eof\r\n */\r\n\r\n/**\r\n * Pushes a token back to the stack.\r\n * @typedef TokenizerHandlePush\r\n * @type {function}\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Skips the next token.\r\n * @typedef TokenizerHandleSkip\r\n * @type {function}\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] If optional\r\n * @returns {boolean} Whether the token matched\r\n * @throws {Error} If the token didn't match and is not optional\r\n */\r\n\r\n/**\r\n * Gets the comment on the previous line or, alternatively, the line comment on the specified line.\r\n * @typedef TokenizerHandleCmnt\r\n * @type {function}\r\n * @param {number} [line] Line number\r\n * @returns {string|null} Comment text or `null` if none\r\n */\r\n\r\n/**\r\n * Handle object returned from {@link tokenize}.\r\n * @interface ITokenizerHandle\r\n * @property {TokenizerHandleNext} next Gets the next token and advances (`null` on eof)\r\n * @property {TokenizerHandlePeek} peek Peeks for the next token (`null` on eof)\r\n * @property {TokenizerHandlePush} push Pushes a token back to the stack\r\n * @property {TokenizerHandleSkip} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\r\n * @property {TokenizerHandleCmnt} cmnt Gets the comment on the previous line or the line comment on the specified line, if any\r\n * @property {number} line Current line number\r\n */\r\n\r\n/**\r\n * Tokenizes the given .proto source and returns an object with useful utility functions.\r\n * @param {string} source Source contents\r\n * @param {boolean} alternateCommentMode Whether we should activate alternate comment parsing mode.\r\n * @returns {ITokenizerHandle} Tokenizer handle\r\n */\r\nfunction tokenize(source, alternateCommentMode) {\r\n /* eslint-disable callback-return */\r\n source = source.toString();\r\n\r\n var offset = 0,\r\n length = source.length,\r\n line = 1,\r\n commentType = null,\r\n commentText = null,\r\n commentLine = 0,\r\n commentLineEmpty = false;\r\n\r\n var stack = [];\r\n\r\n var stringDelim = null;\r\n\r\n /* istanbul ignore next */\r\n /**\r\n * Creates an error for illegal syntax.\r\n * @param {string} subject Subject\r\n * @returns {Error} Error created\r\n * @inner\r\n */\r\n function illegal(subject) {\r\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\r\n }\r\n\r\n /**\r\n * Reads a string till its end.\r\n * @returns {string} String read\r\n * @inner\r\n */\r\n function readString() {\r\n var re = stringDelim === \"'\" ? stringSingleRe : stringDoubleRe;\r\n re.lastIndex = offset - 1;\r\n var match = re.exec(source);\r\n if (!match)\r\n throw illegal(\"string\");\r\n offset = re.lastIndex;\r\n push(stringDelim);\r\n stringDelim = null;\r\n return unescape(match[1]);\r\n }\r\n\r\n /**\r\n * Gets the character at `pos` within the source.\r\n * @param {number} pos Position\r\n * @returns {string} Character\r\n * @inner\r\n */\r\n function charAt(pos) {\r\n return source.charAt(pos);\r\n }\r\n\r\n /**\r\n * Sets the current comment text.\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function setComment(start, end) {\r\n commentType = source.charAt(start++);\r\n commentLine = line;\r\n commentLineEmpty = false;\r\n var lookback;\r\n if (alternateCommentMode) {\r\n lookback = 2; // alternate comment parsing: \"//\" or \"/*\"\r\n } else {\r\n lookback = 3; // \"///\" or \"/**\"\r\n }\r\n var commentOffset = start - lookback,\r\n c;\r\n do {\r\n if (--commentOffset < 0 ||\r\n (c = source.charAt(commentOffset)) === \"\\n\") {\r\n commentLineEmpty = true;\r\n break;\r\n }\r\n } while (c === \" \" || c === \"\\t\");\r\n var lines = source\r\n .substring(start, end)\r\n .split(setCommentSplitRe);\r\n for (var i = 0; i < lines.length; ++i)\r\n lines[i] = lines[i]\r\n .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, \"\")\r\n .trim();\r\n commentText = lines\r\n .join(\"\\n\")\r\n .trim();\r\n }\r\n\r\n function isDoubleSlashCommentLine(startOffset) {\r\n var endOffset = findEndOfLine(startOffset);\r\n\r\n // see if remaining line matches comment pattern\r\n var lineText = source.substring(startOffset, endOffset);\r\n // look for 1 or 2 slashes since startOffset would already point past\r\n // the first slash that started the comment.\r\n var isComment = /^\\s*\\/{1,2}/.test(lineText);\r\n return isComment;\r\n }\r\n\r\n function findEndOfLine(cursor) {\r\n // find end of cursor's line\r\n var endOffset = cursor;\r\n while (endOffset < length && charAt(endOffset) !== \"\\n\") {\r\n endOffset++;\r\n }\r\n return endOffset;\r\n }\r\n\r\n /**\r\n * Obtains the next token.\r\n * @returns {string|null} Next token or `null` on eof\r\n * @inner\r\n */\r\n function next() {\r\n if (stack.length > 0)\r\n return stack.shift();\r\n if (stringDelim)\r\n return readString();\r\n var repeat,\r\n prev,\r\n curr,\r\n start,\r\n isDoc;\r\n do {\r\n if (offset === length)\r\n return null;\r\n repeat = false;\r\n while (whitespaceRe.test(curr = charAt(offset))) {\r\n if (curr === \"\\n\")\r\n ++line;\r\n if (++offset === length)\r\n return null;\r\n }\r\n\r\n if (charAt(offset) === \"/\") {\r\n if (++offset === length) {\r\n throw illegal(\"comment\");\r\n }\r\n if (charAt(offset) === \"/\") { // Line\r\n if (!alternateCommentMode) {\r\n // check for triple-slash comment\r\n isDoc = charAt(start = offset + 1) === \"/\";\r\n\r\n while (charAt(++offset) !== \"\\n\") {\r\n if (offset === length) {\r\n return null;\r\n }\r\n }\r\n ++offset;\r\n if (isDoc) {\r\n setComment(start, offset - 1);\r\n }\r\n ++line;\r\n repeat = true;\r\n } else {\r\n // check for double-slash comments, consolidating consecutive lines\r\n start = offset;\r\n isDoc = false;\r\n if (isDoubleSlashCommentLine(offset)) {\r\n isDoc = true;\r\n do {\r\n offset = findEndOfLine(offset);\r\n if (offset === length) {\r\n break;\r\n }\r\n offset++;\r\n } while (isDoubleSlashCommentLine(offset));\r\n } else {\r\n offset = Math.min(length, findEndOfLine(offset) + 1);\r\n }\r\n if (isDoc) {\r\n setComment(start, offset);\r\n }\r\n line++;\r\n repeat = true;\r\n }\r\n } else if ((curr = charAt(offset)) === \"*\") { /* Block */\r\n // check for /** (regular comment mode) or /* (alternate comment mode)\r\n start = offset + 1;\r\n isDoc = alternateCommentMode || charAt(start) === \"*\";\r\n do {\r\n if (curr === \"\\n\") {\r\n ++line;\r\n }\r\n if (++offset === length) {\r\n throw illegal(\"comment\");\r\n }\r\n prev = curr;\r\n curr = charAt(offset);\r\n } while (prev !== \"*\" || curr !== \"/\");\r\n ++offset;\r\n if (isDoc) {\r\n setComment(start, offset - 2);\r\n }\r\n repeat = true;\r\n } else {\r\n return \"/\";\r\n }\r\n }\r\n } while (repeat);\r\n\r\n // offset !== length if we got here\r\n\r\n var end = offset;\r\n delimRe.lastIndex = 0;\r\n var delim = delimRe.test(charAt(end++));\r\n if (!delim)\r\n while (end < length && !delimRe.test(charAt(end)))\r\n ++end;\r\n var token = source.substring(offset, offset = end);\r\n if (token === \"\\\"\" || token === \"'\")\r\n stringDelim = token;\r\n return token;\r\n }\r\n\r\n /**\r\n * Pushes a token back to the stack.\r\n * @param {string} token Token\r\n * @returns {undefined}\r\n * @inner\r\n */\r\n function push(token) {\r\n stack.push(token);\r\n }\r\n\r\n /**\r\n * Peeks for the next token.\r\n * @returns {string|null} Token or `null` on eof\r\n * @inner\r\n */\r\n function peek() {\r\n if (!stack.length) {\r\n var token = next();\r\n if (token === null)\r\n return null;\r\n push(token);\r\n }\r\n return stack[0];\r\n }\r\n\r\n /**\r\n * Skips a token.\r\n * @param {string} expected Expected token\r\n * @param {boolean} [optional=false] Whether the token is optional\r\n * @returns {boolean} `true` when skipped, `false` if not\r\n * @throws {Error} When a required token is not present\r\n * @inner\r\n */\r\n function skip(expected, optional) {\r\n var actual = peek(),\r\n equals = actual === expected;\r\n if (equals) {\r\n next();\r\n return true;\r\n }\r\n if (!optional)\r\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets a comment.\r\n * @param {number} [trailingLine] Line number if looking for a trailing comment\r\n * @returns {string|null} Comment text\r\n * @inner\r\n */\r\n function cmnt(trailingLine) {\r\n var ret = null;\r\n if (trailingLine === undefined) {\r\n if (commentLine === line - 1 && (alternateCommentMode || commentType === \"*\" || commentLineEmpty)) {\r\n ret = commentText;\r\n }\r\n } else {\r\n /* istanbul ignore else */\r\n if (commentLine < trailingLine) {\r\n peek();\r\n }\r\n if (commentLine === trailingLine && !commentLineEmpty && (alternateCommentMode || commentType === \"/\")) {\r\n ret = commentText;\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n return Object.defineProperty({\r\n next: next,\r\n peek: peek,\r\n push: push,\r\n skip: skip,\r\n cmnt: cmnt\r\n }, \"line\", {\r\n get: function() { return line; }\r\n });\r\n /* eslint-enable callback-return */\r\n}\r\n\r\n},{}],35:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = require(23);\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum = require(15),\r\n OneOf = require(25),\r\n Field = require(16),\r\n MapField = require(20),\r\n Service = require(33),\r\n Message = require(21),\r\n Reader = require(27),\r\n Writer = require(42),\r\n util = require(37),\r\n encoder = require(14),\r\n decoder = require(13),\r\n verifier = require(40),\r\n converter = require(12),\r\n wrappers = require(41);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.<string,Field>}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.<string,OneOf>}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.<number[]|string>}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /*?\r\n * Whether this type is a legacy group.\r\n * @type {boolean|undefined}\r\n */\r\n this.group = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {Object.<number,Field>|null}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {Field[]|null}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {OneOf[]|null}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {Constructor<{}>}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.<number,Field>}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function() {\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n\r\n this._fieldsById = {};\r\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: function() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: function() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n * @name Type#ctor\r\n * @type {Constructor<{}>}\r\n */\r\n ctor: {\r\n get: function() {\r\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n },\r\n set: function(ctor) {\r\n\r\n // Ensure proper prototype\r\n var prototype = ctor.prototype;\r\n if (!(prototype instanceof Message)) {\r\n (ctor.prototype = new Message()).constructor = ctor;\r\n util.merge(ctor.prototype, prototype);\r\n }\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = ctor.prototype.$type = this;\r\n\r\n // Mix in static methods\r\n util.merge(ctor, Message, true);\r\n\r\n this._ctor = ctor;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n var i = 0;\r\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n var ctorProperties = {};\r\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n };\r\n if (i)\r\n Object.defineProperties(ctor.prototype, ctorProperties);\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"p\"], mtype.name);\r\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n if ((field = mtype._fieldsArray[i]).map) gen\r\n (\"this%s={}\", util.safeProp(field.name));\r\n else if (field.repeated) gen\r\n (\"this%s=[]\", util.safeProp(field.name));\r\n return gen\r\n (\"if(p)for(var ks=Object.keys(p),i=0;i<ks.length;++i)if(p[ks[i]]!=null)\") // omit undefined or null\r\n (\"this[ks[i]]=p[ks[i]]\");\r\n /* eslint-enable no-unexpected-multiline */\r\n};\r\n\r\nfunction clearCache(type) {\r\n type._fieldsById = type._fieldsArray = type._oneofsArray = null;\r\n delete type.encode;\r\n delete type.decode;\r\n delete type.verify;\r\n return type;\r\n}\r\n\r\n/**\r\n * Message type descriptor.\r\n * @interface IType\r\n * @extends INamespace\r\n * @property {Object.<string,IOneOf>} [oneofs] Oneof descriptors\r\n * @property {Object.<string,IField>} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {number[][]} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n var names = Object.keys(json.fields),\r\n i = 0;\r\n for (; i < names.length; ++i)\r\n type.add(\r\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n ? MapField.fromJSON\r\n : Field.fromJSON )(names[i], json.fields[names[i]])\r\n );\r\n if (json.oneofs)\r\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n if (json.nested)\r\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n var nested = json.nested[names[i]];\r\n type.add( // most to least likely\r\n ( nested.id !== undefined\r\n ? Field.fromJSON\r\n : nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n if (json.group)\r\n type.group = true;\r\n if (json.comment)\r\n type.comment = json.comment;\r\n return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"group\" , this.group || undefined,\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n var fields = this.fieldsArray, i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.oneofsArray; i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n return this.fields[name]\r\n || this.oneofs && this.oneofs[name]\r\n || this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n\r\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (this.isReservedId(object.id))\r\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n if (this.isReservedName(object.name))\r\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n\r\n /* istanbul ignore if */\r\n if (!this.fields || this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.fields[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n\r\n /* istanbul ignore if */\r\n if (!this.oneofs || this.oneofs[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.oneofs[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.<string,*>} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n // multiple times (V8, soft-deopt prototype-check).\r\n\r\n var fullName = this.fullName,\r\n types = [];\r\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n // Replace setup methods with type-specific generated functions\r\n this.encode = encoder(this)({\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this)({\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.fromObject = converter.fromObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.toObject = converter.toObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n\r\n // Inject custom wrappers for common types\r\n var wrapper = wrappers[fullName];\r\n if (wrapper) {\r\n var originalThis = Object.create(this);\r\n // if (wrapper.fromObject) {\r\n originalThis.fromObject = this.fromObject;\r\n this.fromObject = wrapper.fromObject.bind(originalThis);\r\n // }\r\n // if (wrapper.toObject) {\r\n originalThis.toObject = this.toObject;\r\n this.toObject = wrapper.toObject.bind(originalThis);\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n if (!(reader instanceof Reader))\r\n reader = Reader.create(reader);\r\n return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.<string,*>} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.<string,*>} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor<T>} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message<T>\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator<T>} Decorator function\r\n * @template T extends Message<T>\r\n */\r\nType.d = function decorateType(typeName) {\r\n return function typeDecorator(target) {\r\n util.decorateType(target, typeName);\r\n };\r\n};\r\n\r\n},{\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"20\":20,\"21\":21,\"23\":23,\"25\":25,\"27\":27,\"33\":33,\"37\":37,\"40\":40,\"41\":41,\"42\":42}],36:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(37);\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.<string,*>}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.<number>} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ util.emptyArray,\r\n /* message */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n\r\n},{\"37\":37}],37:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(39);\r\n\r\nvar roots = require(30);\r\n\r\nvar Type, // cyclic\r\n Enum;\r\n\r\nutil.codegen = require(3);\r\nutil.fetch = require(5);\r\nutil.path = require(8);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.<string,*>}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.<string,*>} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (object) {\r\n var keys = Object.keys(object),\r\n array = new Array(keys.length),\r\n index = 0;\r\n while (index < keys.length)\r\n array[index] = object[keys[index++]];\r\n return array;\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.<string,*>} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n var object = {},\r\n index = 0;\r\n while (index < array.length) {\r\n var key = array[index++],\r\n val = array[index++];\r\n if (val !== undefined)\r\n object[key] = val;\r\n }\r\n return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n safePropQuoteRe = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0, 1)\r\n + str.substring(1)\r\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor<T>} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message<T>\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n /* istanbul ignore if */\r\n if (ctor.$type) {\r\n if (typeName && ctor.$type.name !== typeName) {\r\n util.decorateRoot.remove(ctor.$type);\r\n ctor.$type.name = typeName;\r\n util.decorateRoot.add(ctor.$type);\r\n }\r\n return ctor.$type;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(35);\r\n\r\n var type = new Type(typeName || ctor.name);\r\n util.decorateRoot.add(type);\r\n type.ctor = ctor; // sets up .encode, .decode etc.\r\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n /* istanbul ignore if */\r\n if (object.$type)\r\n return object.$type;\r\n\r\n /* istanbul ignore next */\r\n if (!Enum)\r\n Enum = require(15);\r\n\r\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n util.decorateRoot.add(enm);\r\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n return enm;\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n get: function() {\r\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(29))());\r\n }\r\n});\r\n\r\n},{\"15\":15,\"29\":29,\"3\":3,\"30\":30,\"35\":35,\"39\":39,\"5\":5,\"8\":8}],38:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(39);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n\r\n},{\"39\":39}],39:[function(require,module,exports){\r\n\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(1);\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(2);\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(4);\r\n\r\n// float handling accross browsers\r\nutil.float = require(6);\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(7);\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(10);\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(9);\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(38);\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor<Buffer>}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor<Uint8Array>}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor<Long>}\r\n */\r\nutil.Long = /* istanbul ignore next */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor<Error>} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n CustomError.prototype.toString = function toString() {\r\n return this.name + \": \" + this.message;\r\n };\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message<T>\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.<string,*>} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message<T>}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n\r\n},{\"1\":1,\"10\":10,\"2\":2,\"38\":38,\"4\":4,\"6\":6,\"7\":7,\"9\":9}],40:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = verifier;\r\n\r\nvar Enum = require(15),\r\n util = require(37);\r\n\r\nfunction invalid(field, expected) {\r\n return field.name + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\r\n}\r\n\r\n/**\r\n * Generates a partial value verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\r\n /* eslint-disable no-unexpected-multiline */\r\n if (field.resolvedType) {\r\n if (field.resolvedType instanceof Enum) { gen\r\n (\"switch(%s){\", ref)\r\n (\"default:\")\r\n (\"return%j\", invalid(field, \"enum value\"));\r\n for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen\r\n (\"case %i:\", field.resolvedType.values[keys[j]]);\r\n gen\r\n (\"break\")\r\n (\"}\");\r\n } else {\r\n gen\r\n (\"{\")\r\n (\"var e=types[%i].verify(%s);\", fieldIndex, ref)\r\n (\"if(e)\")\r\n (\"return%j+e\", field.name + \".\")\r\n (\"}\");\r\n }\r\n } else {\r\n switch (field.type) {\r\n case \"int32\":\r\n case \"uint32\":\r\n case \"sint32\":\r\n case \"fixed32\":\r\n case \"sfixed32\": gen\r\n (\"if(!util.isInteger(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer\"));\r\n break;\r\n case \"int64\":\r\n case \"uint64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))\", ref, ref, ref, ref)\r\n (\"return%j\", invalid(field, \"integer|Long\"));\r\n break;\r\n case \"float\":\r\n case \"double\": gen\r\n (\"if(typeof %s!==\\\"number\\\")\", ref)\r\n (\"return%j\", invalid(field, \"number\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(typeof %s!==\\\"boolean\\\")\", ref)\r\n (\"return%j\", invalid(field, \"boolean\"));\r\n break;\r\n case \"string\": gen\r\n (\"if(!util.isString(%s))\", ref)\r\n (\"return%j\", invalid(field, \"string\"));\r\n break;\r\n case \"bytes\": gen\r\n (\"if(!(%s&&typeof %s.length===\\\"number\\\"||util.isString(%s)))\", ref, ref, ref)\r\n (\"return%j\", invalid(field, \"buffer\"));\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a partial key verifier.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genVerifyKey(gen, field, ref) {\r\n /* eslint-disable no-unexpected-multiline */\r\n switch (field.keyType) {\r\n case \"int32\":\r\n case \"uint32\":\r\n case \"sint32\":\r\n case \"fixed32\":\r\n case \"sfixed32\": gen\r\n (\"if(!util.key32Re.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"integer key\"));\r\n break;\r\n case \"int64\":\r\n case \"uint64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(!util.key64Re.test(%s))\", ref) // see comment above: x is ok, d is not\r\n (\"return%j\", invalid(field, \"integer|Long key\"));\r\n break;\r\n case \"bool\": gen\r\n (\"if(!util.key2Re.test(%s))\", ref)\r\n (\"return%j\", invalid(field, \"boolean key\"));\r\n break;\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline */\r\n}\r\n\r\n/**\r\n * Generates a verifier specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction verifier(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n\r\n var gen = util.codegen([\"m\"], mtype.name + \"$verify\")\r\n (\"if(typeof m!==\\\"object\\\"||m===null)\")\r\n (\"return%j\", \"object expected\");\r\n var oneofs = mtype.oneofsArray,\r\n seenFirstField = {};\r\n if (oneofs.length) gen\r\n (\"var p={}\");\r\n\r\n for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name); // !== undefined && !== null\r\n\r\n // map fields\r\n if (field.map) { gen\r\n (\"if(!util.isObject(%s))\", ref)\r\n (\"return%j\", invalid(field, \"object\"))\r\n (\"var k=Object.keys(%s)\", ref)\r\n (\"for(var i=0;i<k.length;++i){\");\r\n genVerifyKey(gen, field, \"k[i]\");\r\n genVerifyValue(gen, field, i, ref + \"[k[i]]\")\r\n (\"}\");\r\n\r\n // repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(!Array.isArray(%s))\", ref)\r\n (\"return%j\", invalid(field, \"array\"))\r\n (\"for(var i=0;i<%s.length;++i){\", ref);\r\n genVerifyValue(gen, field, i, ref + \"[i]\")\r\n (\"}\");\r\n\r\n // required or present fields\r\n } else {\r\n if (field.partOf) {\r\n var oneofProp = util.safeProp(field.partOf.name);\r\n if (seenFirstField[field.partOf.name] === 1) gen\r\n (\"if(p%s===1)\", oneofProp)\r\n (\"return%j\", field.partOf.name + \": multiple values\");\r\n seenFirstField[field.partOf.name] = 1;\r\n gen\r\n (\"p%s=1\", oneofProp);\r\n }\r\n genVerifyValue(gen, field, i, ref);\r\n }\r\n if (field.optional) gen\r\n (\"}\");\r\n }\r\n return gen\r\n (\"return null\");\r\n /* eslint-enable no-unexpected-multiline */\r\n}\r\n},{\"15\":15,\"37\":37}],41:[function(require,module,exports){\r\n\"use strict\";\r\n\r\n/**\r\n * Wrappers for common types.\r\n * @type {Object.<string,IWrapper>}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = require(21);\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.<string,*>} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.<string,*>} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n fromObject: function(object) {\r\n\r\n // unwrap value type if mapped\r\n if (object && object[\"@type\"]) {\r\n var type = this.lookup(object[\"@type\"]);\r\n /* istanbul ignore else */\r\n if (type) {\r\n // type_url does not accept leading \".\"\r\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n object[\"@type\"].substr(1) : object[\"@type\"];\r\n // type_url prefix is optional, but path seperator is required\r\n return this.create({\r\n type_url: \"/\" + type_url,\r\n value: type.encode(type.fromObject(object)).finish()\r\n });\r\n }\r\n }\r\n\r\n return this.fromObject(object);\r\n },\r\n\r\n toObject: function(message, options) {\r\n\r\n // decode value if requested and unmapped\r\n if (options && options.json && message.type_url && message.value) {\r\n // Only use fully qualified type name after the last '/'\r\n var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type)\r\n message = type.decode(message.value);\r\n }\r\n\r\n // wrap value if unmapped\r\n if (!(message instanceof this.ctor) && message instanceof Message) {\r\n var object = message.$type.toObject(message, options);\r\n object[\"@type\"] = message.$type.fullName;\r\n return object;\r\n }\r\n\r\n return this.toObject(message, options);\r\n }\r\n};\r\n\r\n},{\"21\":21}],42:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(39);\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n};\r\n\r\n},{\"39\":39}],43:[function(require,module,exports){\r\n\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(42);\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(39);\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else\r\n buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\r\n},{\"39\":39,\"42\":42}]},{},[19])\r\n\r\n})(\r\n\ttypeof window===\"object\" && window\r\n\t|| typeof self===\"object\" && self\r\n\t|| this\r\n);\r\n\r\n","/*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/\n(function($protobuf) {\n \"use strict\";\n\n // Common aliases\n var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n // Exported root namespace\n var $root = $protobuf.roots[\"push-server\"] || ($protobuf.roots[\"push-server\"] = {});\n\n $root.RequestBatch = (function() {\n\n /**\n * Properties of a RequestBatch.\n * @exports IRequestBatch\n * @interface IRequestBatch\n * @property {Array.<Request>|null} [requests] RequestBatch requests\n */\n\n /**\n * Constructs a new RequestBatch.\n * @exports RequestBatch\n * @classdesc Represents a RequestBatch.\n * @implements IRequestBatch\n * @constructor\n * @param {IRequestBatch=} [properties] Properties to set\n */\n function RequestBatch(properties) {\n this.requests = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * RequestBatch requests.\n * @member {Array.<Request>} requests\n * @memberof RequestBatch\n * @instance\n */\n RequestBatch.prototype.requests = $util.emptyArray;\n\n /**\n * Creates a new RequestBatch instance using the specified properties.\n * @function create\n * @memberof RequestBatch\n * @static\n * @param {IRequestBatch=} [properties] Properties to set\n * @returns {RequestBatch} RequestBatch instance\n */\n RequestBatch.create = function create(properties) {\n return new RequestBatch(properties);\n };\n\n /**\n * Encodes the specified RequestBatch message. Does not implicitly {@link RequestBatch.verify|verify} messages.\n * @function encode\n * @memberof RequestBatch\n * @static\n * @param {RequestBatch} message RequestBatch message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n RequestBatch.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.requests != null && message.requests.length)\n for (var i = 0; i < message.requests.length; ++i)\n $root.Request.encode(message.requests[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes a RequestBatch message from the specified reader or buffer.\n * @function decode\n * @memberof RequestBatch\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {RequestBatch} RequestBatch\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n RequestBatch.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.RequestBatch();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.requests && message.requests.length))\n message.requests = [];\n message.requests.push($root.Request.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return RequestBatch;\n })();\n\n $root.Request = (function() {\n\n /**\n * Properties of a Request.\n * @exports IRequest\n * @interface IRequest\n * @property {IncomingMessagesRequest|null} [incomingMessages] Request incomingMessages\n * @property {ChannelStatsRequest|null} [channelStats] Request channelStats\n * @property {ServerStatsRequest|null} [serverStats] Request serverStats\n */\n\n /**\n * Constructs a new Request.\n * @exports Request\n * @classdesc Represents a Request.\n * @implements IRequest\n * @constructor\n * @param {IRequest=} [properties] Properties to set\n */\n function Request(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Request incomingMessages.\n * @member {IncomingMessagesRequest|null|undefined} incomingMessages\n * @memberof Request\n * @instance\n */\n Request.prototype.incomingMessages = null;\n\n /**\n * Request channelStats.\n * @member {ChannelStatsRequest|null|undefined} channelStats\n * @memberof Request\n * @instance\n */\n Request.prototype.channelStats = null;\n\n /**\n * Request serverStats.\n * @member {ServerStatsRequest|null|undefined} serverStats\n * @memberof Request\n * @instance\n */\n Request.prototype.serverStats = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * Request command.\n * @member {\"incomingMessages\"|\"channelStats\"|\"serverStats\"|undefined} command\n * @memberof Request\n * @instance\n */\n Object.defineProperty(Request.prototype, \"command\", {\n get: $util.oneOfGetter($oneOfFields = [\"incomingMessages\", \"channelStats\", \"serverStats\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Creates a new Request instance using the specified properties.\n * @function create\n * @memberof Request\n * @static\n * @param {IRequest=} [properties] Properties to set\n * @returns {Request} Request instance\n */\n Request.create = function create(properties) {\n return new Request(properties);\n };\n\n /**\n * Encodes the specified Request message. Does not implicitly {@link Request.verify|verify} messages.\n * @function encode\n * @memberof Request\n * @static\n * @param {Request} message Request message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Request.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.incomingMessages != null && message.hasOwnProperty(\"incomingMessages\"))\n $root.IncomingMessagesRequest.encode(message.incomingMessages, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.channelStats != null && message.hasOwnProperty(\"channelStats\"))\n $root.ChannelStatsRequest.encode(message.channelStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.serverStats != null && message.hasOwnProperty(\"serverStats\"))\n $root.ServerStatsRequest.encode(message.serverStats, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes a Request message from the specified reader or buffer.\n * @function decode\n * @memberof Request\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {Request} Request\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Request.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Request();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.incomingMessages = $root.IncomingMessagesRequest.decode(reader, reader.uint32());\n break;\n case 2:\n message.channelStats = $root.ChannelStatsRequest.decode(reader, reader.uint32());\n break;\n case 3:\n message.serverStats = $root.ServerStatsRequest.decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return Request;\n })();\n\n $root.IncomingMessagesRequest = (function() {\n\n /**\n * Properties of an IncomingMessagesRequest.\n * @exports IIncomingMessagesRequest\n * @interface IIncomingMessagesRequest\n * @property {Array.<IncomingMessage>|null} [messages] IncomingMessagesRequest messages\n */\n\n /**\n * Constructs a new IncomingMessagesRequest.\n * @exports IncomingMessagesRequest\n * @classdesc Represents an IncomingMessagesRequest.\n * @implements IIncomingMessagesRequest\n * @constructor\n * @param {IIncomingMessagesRequest=} [properties] Properties to set\n */\n function IncomingMessagesRequest(properties) {\n this.messages = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * IncomingMessagesRequest messages.\n * @member {Array.<IncomingMessage>} messages\n * @memberof IncomingMessagesRequest\n * @instance\n */\n IncomingMessagesRequest.prototype.messages = $util.emptyArray;\n\n /**\n * Creates a new IncomingMessagesRequest instance using the specified properties.\n * @function create\n * @memberof IncomingMessagesRequest\n * @static\n * @param {IIncomingMessagesRequest=} [properties] Properties to set\n * @returns {IncomingMessagesRequest} IncomingMessagesRequest instance\n */\n IncomingMessagesRequest.create = function create(properties) {\n return new IncomingMessagesRequest(properties);\n };\n\n /**\n * Encodes the specified IncomingMessagesRequest message. Does not implicitly {@link IncomingMessagesRequest.verify|verify} messages.\n * @function encode\n * @memberof IncomingMessagesRequest\n * @static\n * @param {IncomingMessagesRequest} message IncomingMessagesRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n IncomingMessagesRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.messages != null && message.messages.length)\n for (var i = 0; i < message.messages.length; ++i)\n $root.IncomingMessage.encode(message.messages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes an IncomingMessagesRequest message from the specified reader or buffer.\n * @function decode\n * @memberof IncomingMessagesRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {IncomingMessagesRequest} IncomingMessagesRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n IncomingMessagesRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.IncomingMessagesRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.messages && message.messages.length))\n message.messages = [];\n message.messages.push($root.IncomingMessage.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return IncomingMessagesRequest;\n })();\n\n $root.IncomingMessage = (function() {\n\n /**\n * Properties of an IncomingMessage.\n * @exports IIncomingMessage\n * @interface IIncomingMessage\n * @property {Array.<Receiver>|null} [receivers] IncomingMessage receivers\n * @property {Sender|null} [sender] IncomingMessage sender\n * @property {string|null} [body] IncomingMessage body\n * @property {number|null} [expiry] IncomingMessage expiry\n * @property {string|null} [type] IncomingMessage type\n */\n\n /**\n * Constructs a new IncomingMessage.\n * @exports IncomingMessage\n * @classdesc Represents an IncomingMessage.\n * @implements IIncomingMessage\n * @constructor\n * @param {IIncomingMessage=} [properties] Properties to set\n */\n function IncomingMessage(properties) {\n this.receivers = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * IncomingMessage receivers.\n * @member {Array.<Receiver>} receivers\n * @memberof IncomingMessage\n * @instance\n */\n IncomingMessage.prototype.receivers = $util.emptyArray;\n\n /**\n * IncomingMessage sender.\n * @member {Sender|null|undefined} sender\n * @memberof IncomingMessage\n * @instance\n */\n IncomingMessage.prototype.sender = null;\n\n /**\n * IncomingMessage body.\n * @member {string} body\n * @memberof IncomingMessage\n * @instance\n */\n IncomingMessage.prototype.body = \"\";\n\n /**\n * IncomingMessage expiry.\n * @member {number} expiry\n * @memberof IncomingMessage\n * @instance\n */\n IncomingMessage.prototype.expiry = 0;\n\n /**\n * IncomingMessage type.\n * @member {string} type\n * @memberof IncomingMessage\n * @instance\n */\n IncomingMessage.prototype.type = \"\";\n\n /**\n * Creates a new IncomingMessage instance using the specified properties.\n * @function create\n * @memberof IncomingMessage\n * @static\n * @param {IIncomingMessage=} [properties] Properties to set\n * @returns {IncomingMessage} IncomingMessage instance\n */\n IncomingMessage.create = function create(properties) {\n return new IncomingMessage(properties);\n };\n\n /**\n * Encodes the specified IncomingMessage message. Does not implicitly {@link IncomingMessage.verify|verify} messages.\n * @function encode\n * @memberof IncomingMessage\n * @static\n * @param {IncomingMessage} message IncomingMessage message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n IncomingMessage.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.receivers != null && message.receivers.length)\n for (var i = 0; i < message.receivers.length; ++i)\n $root.Receiver.encode(message.receivers[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.sender != null && message.hasOwnProperty(\"sender\"))\n $root.Sender.encode(message.sender, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.body != null && message.hasOwnProperty(\"body\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.body);\n if (message.expiry != null && message.hasOwnProperty(\"expiry\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.expiry);\n if (message.type != null && message.hasOwnProperty(\"type\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.type);\n return writer;\n };\n\n /**\n * Decodes an IncomingMessage message from the specified reader or buffer.\n * @function decode\n * @memberof IncomingMessage\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {IncomingMessage} IncomingMessage\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n IncomingMessage.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.IncomingMessage();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.receivers && message.receivers.length))\n message.receivers = [];\n message.receivers.push($root.Receiver.decode(reader, reader.uint32()));\n break;\n case 2:\n message.sender = $root.Sender.decode(reader, reader.uint32());\n break;\n case 3:\n message.body = reader.string();\n break;\n case 4:\n message.expiry = reader.uint32();\n break;\n case 5:\n message.type = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return IncomingMessage;\n })();\n\n $root.ChannelStatsRequest = (function() {\n\n /**\n * Properties of a ChannelStatsRequest.\n * @exports IChannelStatsRequest\n * @interface IChannelStatsRequest\n * @property {Array.<ChannelId>|null} [channels] ChannelStatsRequest channels\n */\n\n /**\n * Constructs a new ChannelStatsRequest.\n * @exports ChannelStatsRequest\n * @classdesc Represents a ChannelStatsRequest.\n * @implements IChannelStatsRequest\n * @constructor\n * @param {IChannelStatsRequest=} [properties] Properties to set\n */\n function ChannelStatsRequest(properties) {\n this.channels = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ChannelStatsRequest channels.\n * @member {Array.<ChannelId>} channels\n * @memberof ChannelStatsRequest\n * @instance\n */\n ChannelStatsRequest.prototype.channels = $util.emptyArray;\n\n /**\n * Creates a new ChannelStatsRequest instance using the specified properties.\n * @function create\n * @memberof ChannelStatsRequest\n * @static\n * @param {IChannelStatsRequest=} [properties] Properties to set\n * @returns {ChannelStatsRequest} ChannelStatsRequest instance\n */\n ChannelStatsRequest.create = function create(properties) {\n return new ChannelStatsRequest(properties);\n };\n\n /**\n * Encodes the specified ChannelStatsRequest message. Does not implicitly {@link ChannelStatsRequest.verify|verify} messages.\n * @function encode\n * @memberof ChannelStatsRequest\n * @static\n * @param {ChannelStatsRequest} message ChannelStatsRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ChannelStatsRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.channels != null && message.channels.length)\n for (var i = 0; i < message.channels.length; ++i)\n $root.ChannelId.encode(message.channels[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes a ChannelStatsRequest message from the specified reader or buffer.\n * @function decode\n * @memberof ChannelStatsRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {ChannelStatsRequest} ChannelStatsRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ChannelStatsRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ChannelStatsRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.channels && message.channels.length))\n message.channels = [];\n message.channels.push($root.ChannelId.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return ChannelStatsRequest;\n })();\n\n $root.ChannelId = (function() {\n\n /**\n * Properties of a ChannelId.\n * @exports IChannelId\n * @interface IChannelId\n * @property {Uint8Array|null} [id] ChannelId id\n * @property {boolean|null} [isPrivate] ChannelId isPrivate\n * @property {Uint8Array|null} [signature] ChannelId signature\n */\n\n /**\n * Constructs a new ChannelId.\n * @exports ChannelId\n * @classdesc Represents a ChannelId.\n * @implements IChannelId\n * @constructor\n * @param {IChannelId=} [properties] Properties to set\n */\n function ChannelId(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ChannelId id.\n * @member {Uint8Array} id\n * @memberof ChannelId\n * @instance\n */\n ChannelId.prototype.id = $util.newBuffer([]);\n\n /**\n * ChannelId isPrivate.\n * @member {boolean} isPrivate\n * @memberof ChannelId\n * @instance\n */\n ChannelId.prototype.isPrivate = false;\n\n /**\n * ChannelId signature.\n * @member {Uint8Array} signature\n * @memberof ChannelId\n * @instance\n */\n ChannelId.prototype.signature = $util.newBuffer([]);\n\n /**\n * Creates a new ChannelId instance using the specified properties.\n * @function create\n * @memberof ChannelId\n * @static\n * @param {IChannelId=} [properties] Properties to set\n * @returns {ChannelId} ChannelId instance\n */\n ChannelId.create = function create(properties) {\n return new ChannelId(properties);\n };\n\n /**\n * Encodes the specified ChannelId message. Does not implicitly {@link ChannelId.verify|verify} messages.\n * @function encode\n * @memberof ChannelId\n * @static\n * @param {ChannelId} message ChannelId message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ChannelId.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.id != null && message.hasOwnProperty(\"id\"))\n writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id);\n if (message.isPrivate != null && message.hasOwnProperty(\"isPrivate\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isPrivate);\n if (message.signature != null && message.hasOwnProperty(\"signature\"))\n writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.signature);\n return writer;\n };\n\n /**\n * Decodes a ChannelId message from the specified reader or buffer.\n * @function decode\n * @memberof ChannelId\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {ChannelId} ChannelId\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ChannelId.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ChannelId();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.id = reader.bytes();\n break;\n case 2:\n message.isPrivate = reader.bool();\n break;\n case 3:\n message.signature = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return ChannelId;\n })();\n\n $root.ServerStatsRequest = (function() {\n\n /**\n * Properties of a ServerStatsRequest.\n * @exports IServerStatsRequest\n * @interface IServerStatsRequest\n */\n\n /**\n * Constructs a new ServerStatsRequest.\n * @exports ServerStatsRequest\n * @classdesc Represents a ServerStatsRequest.\n * @implements IServerStatsRequest\n * @constructor\n * @param {IServerStatsRequest=} [properties] Properties to set\n */\n function ServerStatsRequest(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Creates a new ServerStatsRequest instance using the specified properties.\n * @function create\n * @memberof ServerStatsRequest\n * @static\n * @param {IServerStatsRequest=} [properties] Properties to set\n * @returns {ServerStatsRequest} ServerStatsRequest instance\n */\n ServerStatsRequest.create = function create(properties) {\n return new ServerStatsRequest(properties);\n };\n\n /**\n * Encodes the specified ServerStatsRequest message. Does not implicitly {@link ServerStatsRequest.verify|verify} messages.\n * @function encode\n * @memberof ServerStatsRequest\n * @static\n * @param {ServerStatsRequest} message ServerStatsRequest message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ServerStatsRequest.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n return writer;\n };\n\n /**\n * Decodes a ServerStatsRequest message from the specified reader or buffer.\n * @function decode\n * @memberof ServerStatsRequest\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {ServerStatsRequest} ServerStatsRequest\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ServerStatsRequest.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ServerStatsRequest();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return ServerStatsRequest;\n })();\n\n $root.Sender = (function() {\n\n /**\n * Properties of a Sender.\n * @exports ISender\n * @interface ISender\n * @property {SenderType|null} [type] Sender type\n * @property {Uint8Array|null} [id] Sender id\n */\n\n /**\n * Constructs a new Sender.\n * @exports Sender\n * @classdesc Represents a Sender.\n * @implements ISender\n * @constructor\n * @param {ISender=} [properties] Properties to set\n */\n function Sender(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Sender type.\n * @member {SenderType} type\n * @memberof Sender\n * @instance\n */\n Sender.prototype.type = 0;\n\n /**\n * Sender id.\n * @member {Uint8Array} id\n * @memberof Sender\n * @instance\n */\n Sender.prototype.id = $util.newBuffer([]);\n\n /**\n * Creates a new Sender instance using the specified properties.\n * @function create\n * @memberof Sender\n * @static\n * @param {ISender=} [properties] Properties to set\n * @returns {Sender} Sender instance\n */\n Sender.create = function create(properties) {\n return new Sender(properties);\n };\n\n /**\n * Encodes the specified Sender message. Does not implicitly {@link Sender.verify|verify} messages.\n * @function encode\n * @memberof Sender\n * @static\n * @param {Sender} message Sender message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sender.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && message.hasOwnProperty(\"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.id != null && message.hasOwnProperty(\"id\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.id);\n return writer;\n };\n\n /**\n * Decodes a Sender message from the specified reader or buffer.\n * @function decode\n * @memberof Sender\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {Sender} Sender\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sender.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Sender();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int32();\n break;\n case 2:\n message.id = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return Sender;\n })();\n\n /**\n * SenderType enum.\n * @exports SenderType\n * @enum {string}\n * @property {number} UNKNOWN=0 UNKNOWN value\n * @property {number} CLIENT=1 CLIENT value\n * @property {number} BACKEND=2 BACKEND value\n */\n $root.SenderType = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"UNKNOWN\"] = 0;\n values[valuesById[1] = \"CLIENT\"] = 1;\n values[valuesById[2] = \"BACKEND\"] = 2;\n return values;\n })();\n\n $root.Receiver = (function() {\n\n /**\n * Properties of a Receiver.\n * @exports IReceiver\n * @interface IReceiver\n * @property {Uint8Array|null} [id] Receiver id\n * @property {boolean|null} [isPrivate] Receiver isPrivate\n * @property {Uint8Array|null} [signature] Receiver signature\n */\n\n /**\n * Constructs a new Receiver.\n * @exports Receiver\n * @classdesc Represents a Receiver.\n * @implements IReceiver\n * @constructor\n * @param {IReceiver=} [properties] Properties to set\n */\n function Receiver(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Receiver id.\n * @member {Uint8Array} id\n * @memberof Receiver\n * @instance\n */\n Receiver.prototype.id = $util.newBuffer([]);\n\n /**\n * Receiver isPrivate.\n * @member {boolean} isPrivate\n * @memberof Receiver\n * @instance\n */\n Receiver.prototype.isPrivate = false;\n\n /**\n * Receiver signature.\n * @member {Uint8Array} signature\n * @memberof Receiver\n * @instance\n */\n Receiver.prototype.signature = $util.newBuffer([]);\n\n /**\n * Creates a new Receiver instance using the specified properties.\n * @function create\n * @memberof Receiver\n * @static\n * @param {IReceiver=} [properties] Properties to set\n * @returns {Receiver} Receiver instance\n */\n Receiver.create = function create(properties) {\n return new Receiver(properties);\n };\n\n /**\n * Encodes the specified Receiver message. Does not implicitly {@link Receiver.verify|verify} messages.\n * @function encode\n * @memberof Receiver\n * @static\n * @param {Receiver} message Receiver message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Receiver.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.id != null && message.hasOwnProperty(\"id\"))\n writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id);\n if (message.isPrivate != null && message.hasOwnProperty(\"isPrivate\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isPrivate);\n if (message.signature != null && message.hasOwnProperty(\"signature\"))\n writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.signature);\n return writer;\n };\n\n /**\n * Decodes a Receiver message from the specified reader or buffer.\n * @function decode\n * @memberof Receiver\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {Receiver} Receiver\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Receiver.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Receiver();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.id = reader.bytes();\n break;\n case 2:\n message.isPrivate = reader.bool();\n break;\n case 3:\n message.signature = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return Receiver;\n })();\n\n $root.ResponseBatch = (function() {\n\n /**\n * Properties of a ResponseBatch.\n * @exports IResponseBatch\n * @interface IResponseBatch\n * @property {Array.<Response>|null} [responses] ResponseBatch responses\n */\n\n /**\n * Constructs a new ResponseBatch.\n * @exports ResponseBatch\n * @classdesc Represents a ResponseBatch.\n * @implements IResponseBatch\n * @constructor\n * @param {IResponseBatch=} [properties] Properties to set\n */\n function ResponseBatch(properties) {\n this.responses = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ResponseBatch responses.\n * @member {Array.<Response>} responses\n * @memberof ResponseBatch\n * @instance\n */\n ResponseBatch.prototype.responses = $util.emptyArray;\n\n /**\n * Creates a new ResponseBatch instance using the specified properties.\n * @function create\n * @memberof ResponseBatch\n * @static\n * @param {IResponseBatch=} [properties] Properties to set\n * @returns {ResponseBatch} ResponseBatch instance\n */\n ResponseBatch.create = function create(properties) {\n return new ResponseBatch(properties);\n };\n\n /**\n * Encodes the specified ResponseBatch message. Does not implicitly {@link ResponseBatch.verify|verify} messages.\n * @function encode\n * @memberof ResponseBatch\n * @static\n * @param {ResponseBatch} message ResponseBatch message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ResponseBatch.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.responses != null && message.responses.length)\n for (var i = 0; i < message.responses.length; ++i)\n $root.Response.encode(message.responses[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes a ResponseBatch message from the specified reader or buffer.\n * @function decode\n * @memberof ResponseBatch\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {ResponseBatch} ResponseBatch\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ResponseBatch.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ResponseBatch();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.responses && message.responses.length))\n message.responses = [];\n message.responses.push($root.Response.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return ResponseBatch;\n })();\n\n $root.Response = (function() {\n\n /**\n * Properties of a Response.\n * @exports IResponse\n * @interface IResponse\n * @property {OutgoingMessagesResponse|null} [outgoingMessages] Response outgoingMessages\n * @property {ChannelStatsResponse|null} [channelStats] Response channelStats\n * @property {JsonResponse|null} [serverStats] Response serverStats\n */\n\n /**\n * Constructs a new Response.\n * @exports Response\n * @classdesc Represents a Response.\n * @implements IResponse\n * @constructor\n * @param {IResponse=} [properties] Properties to set\n */\n function Response(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Response outgoingMessages.\n * @member {OutgoingMessagesResponse|null|undefined} outgoingMessages\n * @memberof Response\n * @instance\n */\n Response.prototype.outgoingMessages = null;\n\n /**\n * Response channelStats.\n * @member {ChannelStatsResponse|null|undefined} channelStats\n * @memberof Response\n * @instance\n */\n Response.prototype.channelStats = null;\n\n /**\n * Response serverStats.\n * @member {JsonResponse|null|undefined} serverStats\n * @memberof Response\n * @instance\n */\n Response.prototype.serverStats = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * Response command.\n * @member {\"outgoingMessages\"|\"channelStats\"|\"serverStats\"|undefined} command\n * @memberof Response\n * @instance\n */\n Object.defineProperty(Response.prototype, \"command\", {\n get: $util.oneOfGetter($oneOfFields = [\"outgoingMessages\", \"channelStats\", \"serverStats\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Creates a new Response instance using the specified properties.\n * @function create\n * @memberof Response\n * @static\n * @param {IResponse=} [properties] Properties to set\n * @returns {Response} Response instance\n */\n Response.create = function create(properties) {\n return new Response(properties);\n };\n\n /**\n * Encodes the specified Response message. Does not implicitly {@link Response.verify|verify} messages.\n * @function encode\n * @memberof Response\n * @static\n * @param {Response} message Response message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Response.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.outgoingMessages != null && message.hasOwnProperty(\"outgoingMessages\"))\n $root.OutgoingMessagesResponse.encode(message.outgoingMessages, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.channelStats != null && message.hasOwnProperty(\"channelStats\"))\n $root.ChannelStatsResponse.encode(message.channelStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.serverStats != null && message.hasOwnProperty(\"serverStats\"))\n $root.JsonResponse.encode(message.serverStats, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes a Response message from the specified reader or buffer.\n * @function decode\n * @memberof Response\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {Response} Response\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Response.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Response();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.outgoingMessages = $root.OutgoingMessagesResponse.decode(reader, reader.uint32());\n break;\n case 2:\n message.channelStats = $root.ChannelStatsResponse.decode(reader, reader.uint32());\n break;\n case 3:\n message.serverStats = $root.JsonResponse.decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return Response;\n })();\n\n $root.OutgoingMessagesResponse = (function() {\n\n /**\n * Properties of an OutgoingMessagesResponse.\n * @exports IOutgoingMessagesResponse\n * @interface IOutgoingMessagesResponse\n * @property {Array.<OutgoingMessage>|null} [messages] OutgoingMessagesResponse messages\n */\n\n /**\n * Constructs a new OutgoingMessagesResponse.\n * @exports OutgoingMessagesResponse\n * @classdesc Represents an OutgoingMessagesResponse.\n * @implements IOutgoingMessagesResponse\n * @constructor\n * @param {IOutgoingMessagesResponse=} [properties] Properties to set\n */\n function OutgoingMessagesResponse(properties) {\n this.messages = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * OutgoingMessagesResponse messages.\n * @member {Array.<OutgoingMessage>} messages\n * @memberof OutgoingMessagesResponse\n * @instance\n */\n OutgoingMessagesResponse.prototype.messages = $util.emptyArray;\n\n /**\n * Creates a new OutgoingMessagesResponse instance using the specified properties.\n * @function create\n * @memberof OutgoingMessagesResponse\n * @static\n * @param {IOutgoingMessagesResponse=} [properties] Properties to set\n * @returns {OutgoingMessagesResponse} OutgoingMessagesResponse instance\n */\n OutgoingMessagesResponse.create = function create(properties) {\n return new OutgoingMessagesResponse(properties);\n };\n\n /**\n * Encodes the specified OutgoingMessagesResponse message. Does not implicitly {@link OutgoingMessagesResponse.verify|verify} messages.\n * @function encode\n * @memberof OutgoingMessagesResponse\n * @static\n * @param {OutgoingMessagesResponse} message OutgoingMessagesResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n OutgoingMessagesResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.messages != null && message.messages.length)\n for (var i = 0; i < message.messages.length; ++i)\n $root.OutgoingMessage.encode(message.messages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes an OutgoingMessagesResponse message from the specified reader or buffer.\n * @function decode\n * @memberof OutgoingMessagesResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {OutgoingMessagesResponse} OutgoingMessagesResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n OutgoingMessagesResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.OutgoingMessagesResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.messages && message.messages.length))\n message.messages = [];\n message.messages.push($root.OutgoingMessage.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return OutgoingMessagesResponse;\n })();\n\n $root.OutgoingMessage = (function() {\n\n /**\n * Properties of an OutgoingMessage.\n * @exports IOutgoingMessage\n * @interface IOutgoingMessage\n * @property {Uint8Array|null} [id] OutgoingMessage id\n * @property {string|null} [body] OutgoingMessage body\n * @property {number|null} [expiry] OutgoingMessage expiry\n * @property {number|null} [created] OutgoingMessage created\n * @property {Sender|null} [sender] OutgoingMessage sender\n */\n\n /**\n * Constructs a new OutgoingMessage.\n * @exports OutgoingMessage\n * @classdesc Represents an OutgoingMessage.\n * @implements IOutgoingMessage\n * @constructor\n * @param {IOutgoingMessage=} [properties] Properties to set\n */\n function OutgoingMessage(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * OutgoingMessage id.\n * @member {Uint8Array} id\n * @memberof OutgoingMessage\n * @instance\n */\n OutgoingMessage.prototype.id = $util.newBuffer([]);\n\n /**\n * OutgoingMessage body.\n * @member {string} body\n * @memberof OutgoingMessage\n * @instance\n */\n OutgoingMessage.prototype.body = \"\";\n\n /**\n * OutgoingMessage expiry.\n * @member {number} expiry\n * @memberof OutgoingMessage\n * @instance\n */\n OutgoingMessage.prototype.expiry = 0;\n\n /**\n * OutgoingMessage created.\n * @member {number} created\n * @memberof OutgoingMessage\n * @instance\n */\n OutgoingMessage.prototype.created = 0;\n\n /**\n * OutgoingMessage sender.\n * @member {Sender|null|undefined} sender\n * @memberof OutgoingMessage\n * @instance\n */\n OutgoingMessage.prototype.sender = null;\n\n /**\n * Creates a new OutgoingMessage instance using the specified properties.\n * @function create\n * @memberof OutgoingMessage\n * @static\n * @param {IOutgoingMessage=} [properties] Properties to set\n * @returns {OutgoingMessage} OutgoingMessage instance\n */\n OutgoingMessage.create = function create(properties) {\n return new OutgoingMessage(properties);\n };\n\n /**\n * Encodes the specified OutgoingMessage message. Does not implicitly {@link OutgoingMessage.verify|verify} messages.\n * @function encode\n * @memberof OutgoingMessage\n * @static\n * @param {OutgoingMessage} message OutgoingMessage message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n OutgoingMessage.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.id != null && message.hasOwnProperty(\"id\"))\n writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id);\n if (message.body != null && message.hasOwnProperty(\"body\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.body);\n if (message.expiry != null && message.hasOwnProperty(\"expiry\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.expiry);\n if (message.created != null && message.hasOwnProperty(\"created\"))\n writer.uint32(/* id 4, wireType 5 =*/37).fixed32(message.created);\n if (message.sender != null && message.hasOwnProperty(\"sender\"))\n $root.Sender.encode(message.sender, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes an OutgoingMessage message from the specified reader or buffer.\n * @function decode\n * @memberof OutgoingMessage\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {OutgoingMessage} OutgoingMessage\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n OutgoingMessage.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.OutgoingMessage();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.id = reader.bytes();\n break;\n case 2:\n message.body = reader.string();\n break;\n case 3:\n message.expiry = reader.uint32();\n break;\n case 4:\n message.created = reader.fixed32();\n break;\n case 5:\n message.sender = $root.Sender.decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return OutgoingMessage;\n })();\n\n $root.ChannelStatsResponse = (function() {\n\n /**\n * Properties of a ChannelStatsResponse.\n * @exports IChannelStatsResponse\n * @interface IChannelStatsResponse\n * @property {Array.<ChannelStats>|null} [channels] ChannelStatsResponse channels\n */\n\n /**\n * Constructs a new ChannelStatsResponse.\n * @exports ChannelStatsResponse\n * @classdesc Represents a ChannelStatsResponse.\n * @implements IChannelStatsResponse\n * @constructor\n * @param {IChannelStatsResponse=} [properties] Properties to set\n */\n function ChannelStatsResponse(properties) {\n this.channels = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ChannelStatsResponse channels.\n * @member {Array.<ChannelStats>} channels\n * @memberof ChannelStatsResponse\n * @instance\n */\n ChannelStatsResponse.prototype.channels = $util.emptyArray;\n\n /**\n * Creates a new ChannelStatsResponse instance using the specified properties.\n * @function create\n * @memberof ChannelStatsResponse\n * @static\n * @param {IChannelStatsResponse=} [properties] Properties to set\n * @returns {ChannelStatsResponse} ChannelStatsResponse instance\n */\n ChannelStatsResponse.create = function create(properties) {\n return new ChannelStatsResponse(properties);\n };\n\n /**\n * Encodes the specified ChannelStatsResponse message. Does not implicitly {@link ChannelStatsResponse.verify|verify} messages.\n * @function encode\n * @memberof ChannelStatsResponse\n * @static\n * @param {ChannelStatsResponse} message ChannelStatsResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ChannelStatsResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.channels != null && message.channels.length)\n for (var i = 0; i < message.channels.length; ++i)\n $root.ChannelStats.encode(message.channels[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Decodes a ChannelStatsResponse message from the specified reader or buffer.\n * @function decode\n * @memberof ChannelStatsResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {ChannelStatsResponse} ChannelStatsResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ChannelStatsResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ChannelStatsResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!(message.channels && message.channels.length))\n message.channels = [];\n message.channels.push($root.ChannelStats.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return ChannelStatsResponse;\n })();\n\n $root.ChannelStats = (function() {\n\n /**\n * Properties of a ChannelStats.\n * @exports IChannelStats\n * @interface IChannelStats\n * @property {Uint8Array|null} [id] ChannelStats id\n * @property {boolean|null} [isPrivate] ChannelStats isPrivate\n * @property {boolean|null} [isOnline] ChannelStats isOnline\n */\n\n /**\n * Constructs a new ChannelStats.\n * @exports ChannelStats\n * @classdesc Represents a ChannelStats.\n * @implements IChannelStats\n * @constructor\n * @param {IChannelStats=} [properties] Properties to set\n */\n function ChannelStats(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ChannelStats id.\n * @member {Uint8Array} id\n * @memberof ChannelStats\n * @instance\n */\n ChannelStats.prototype.id = $util.newBuffer([]);\n\n /**\n * ChannelStats isPrivate.\n * @member {boolean} isPrivate\n * @memberof ChannelStats\n * @instance\n */\n ChannelStats.prototype.isPrivate = false;\n\n /**\n * ChannelStats isOnline.\n * @member {boolean} isOnline\n * @memberof ChannelStats\n * @instance\n */\n ChannelStats.prototype.isOnline = false;\n\n /**\n * Creates a new ChannelStats instance using the specified properties.\n * @function create\n * @memberof ChannelStats\n * @static\n * @param {IChannelStats=} [properties] Properties to set\n * @returns {ChannelStats} ChannelStats instance\n */\n ChannelStats.create = function create(properties) {\n return new ChannelStats(properties);\n };\n\n /**\n * Encodes the specified ChannelStats message. Does not implicitly {@link ChannelStats.verify|verify} messages.\n * @function encode\n * @memberof ChannelStats\n * @static\n * @param {ChannelStats} message ChannelStats message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ChannelStats.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.id != null && message.hasOwnProperty(\"id\"))\n writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id);\n if (message.isPrivate != null && message.hasOwnProperty(\"isPrivate\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isPrivate);\n if (message.isOnline != null && message.hasOwnProperty(\"isOnline\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.isOnline);\n return writer;\n };\n\n /**\n * Decodes a ChannelStats message from the specified reader or buffer.\n * @function decode\n * @memberof ChannelStats\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {ChannelStats} ChannelStats\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ChannelStats.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ChannelStats();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.id = reader.bytes();\n break;\n case 2:\n message.isPrivate = reader.bool();\n break;\n case 3:\n message.isOnline = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return ChannelStats;\n })();\n\n $root.JsonResponse = (function() {\n\n /**\n * Properties of a JsonResponse.\n * @exports IJsonResponse\n * @interface IJsonResponse\n * @property {string|null} [json] JsonResponse json\n */\n\n /**\n * Constructs a new JsonResponse.\n * @exports JsonResponse\n * @classdesc Represents a JsonResponse.\n * @implements IJsonResponse\n * @constructor\n * @param {IJsonResponse=} [properties] Properties to set\n */\n function JsonResponse(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * JsonResponse json.\n * @member {string} json\n * @memberof JsonResponse\n * @instance\n */\n JsonResponse.prototype.json = \"\";\n\n /**\n * Creates a new JsonResponse instance using the specified properties.\n * @function create\n * @memberof JsonResponse\n * @static\n * @param {IJsonResponse=} [properties] Properties to set\n * @returns {JsonResponse} JsonResponse instance\n */\n JsonResponse.create = function create(properties) {\n return new JsonResponse(properties);\n };\n\n /**\n * Encodes the specified JsonResponse message. Does not implicitly {@link JsonResponse.verify|verify} messages.\n * @function encode\n * @memberof JsonResponse\n * @static\n * @param {JsonResponse} message JsonResponse message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n JsonResponse.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.json != null && message.hasOwnProperty(\"json\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.json);\n return writer;\n };\n\n /**\n * Decodes a JsonResponse message from the specified reader or buffer.\n * @function decode\n * @memberof JsonResponse\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {JsonResponse} JsonResponse\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n JsonResponse.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.JsonResponse();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.json = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n return JsonResponse;\n })();\n\n return $root;\n})(\n\ttypeof window===\"object\" && typeof window.protobuf==='object' && window.protobuf\n\t|| typeof self===\"object\" && typeof self.protobuf==='object' && self.protobuf\n\t|| typeof protobuf==='object' && protobuf\n);\n","// Protobuf message models\nimport '../../../protobuf/protobuf';\nimport '../../../protobuf/model';\n\nconst Response = protobuf.roots['push-server'].Response;\nconst ResponseBatch = protobuf.roots['push-server'].ResponseBatch;\nconst Request = protobuf.roots['push-server'].Request;\nconst RequestBatch = protobuf.roots['push-server'].RequestBatch;\nconst IncomingMessagesRequest = protobuf.roots['push-server'].IncomingMessagesRequest;\nconst IncomingMessage = protobuf.roots['push-server'].IncomingMessage;\nconst Receiver = protobuf.roots['push-server'].Receiver;\n\nexport {\n\tResponse,\n\tResponseBatch,\n\tRequest,\n\tRequestBatch,\n\tIncomingMessagesRequest,\n\tIncomingMessage,\n\tReceiver,\n};\n","import { getDateForLog, isArray } from '../../../util/src/util';\nimport * as Models from './models';\nimport type { MessageCodec } from './messagecodec';\nimport type { ChannelManager } from './channelmanager';\n\ntype ProtobufCodecOptions = {\n\tchannelManager: ChannelManager\n}\n\nexport class ProtobufCodec implements MessageCodec\n{\n\tconstructor(options: ProtobufCodecOptions)\n\t{\n\t\tthis.channelManager = options.channelManager;\n\t}\n\n\textractMessages(pullEvent)\n\t{\n\t\tconst result = [];\n\t\ttry\n\t\t{\n\t\t\tconst responseBatch = Models.ResponseBatch.decode(new Uint8Array(pullEvent));\n\t\t\tfor (let i = 0; i < responseBatch.responses.length; i++)\n\t\t\t{\n\t\t\t\tconst response = responseBatch.responses[i];\n\t\t\t\tif (response.command !== 'outgoingMessages')\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst messages = response.outgoingMessages.messages;\n\t\t\t\tfor (const message of messages)\n\t\t\t\t{\n\t\t\t\t\tlet messageFields = {};\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tmessageFields = JSON.parse(message.body);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e)\n\t\t\t\t\t{\n\t\t\t\t\t\tconsole.error(`${getDateForLog()}: Pull: Could not parse message body`, e);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!messageFields.extra)\n\t\t\t\t\t{\n\t\t\t\t\t\tmessageFields.extra = {};\n\t\t\t\t\t}\n\t\t\t\t\tmessageFields.extra.sender = {\n\t\t\t\t\t\ttype: message.sender.type,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (message.sender.id instanceof Uint8Array)\n\t\t\t\t\t{\n\t\t\t\t\t\tmessageFields.extra.sender.id = decodeId(message.sender.id);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst compatibleMessage = {\n\t\t\t\t\t\tmid: decodeId(message.id),\n\t\t\t\t\t\ttext: messageFields,\n\t\t\t\t\t};\n\n\t\t\t\t\tresult.push(compatibleMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tconsole.error(`${getDateForLog()}: Pull: Could not parse message`, e);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tasync encodeMessageBatch(messageBatch)\n\t{\n\t\tconst userIds = {};\n\t\tfor (const element of messageBatch)\n\t\t{\n\t\t\tif (element.userList)\n\t\t\t{\n\t\t\t\tfor (let j = 0; j < element.userList.length; j++)\n\t\t\t\t{\n\t\t\t\t\tuserIds[element.userList[j]] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst publicIds = await this.channelManager.getPublicIds(Object.keys(userIds));\n\n\t\treturn this.encodeMessageBatchInternal(messageBatch, publicIds);\n\t}\n\n\tencodeMessageBatchInternal(messageBatch, publicIds): Uint8Array\n\t{\n\t\tconst messages = [];\n\t\tmessageBatch.forEach((messageFields) => {\n\t\t\tconst messageBody = messageFields.body;\n\n\t\t\tlet receivers = [];\n\t\t\tif (messageFields.userList)\n\t\t\t{\n\t\t\t\treceivers = this.createMessageReceivers(messageFields.userList, publicIds);\n\t\t\t}\n\n\t\t\tif (messageFields.channelList)\n\t\t\t{\n\t\t\t\tif (!isArray(messageFields.channelList))\n\t\t\t\t{\n\t\t\t\t\tthrow new TypeError('messageFields.publicChannels must be an array');\n\t\t\t\t}\n\t\t\t\tmessageFields.channelList.forEach((publicChannel) => {\n\t\t\t\t\tlet publicId = '';\n\t\t\t\t\tlet signature = '';\n\t\t\t\t\tif (typeof (publicChannel) === 'string' && publicChannel.includes('.'))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst fields = publicChannel.toString().split('.');\n\t\t\t\t\t\tpublicId = fields[0];\n\t\t\t\t\t\tsignature = fields[1];\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof (publicChannel) === 'object' && ('publicId' in publicChannel) && ('signature' in publicChannel))\n\t\t\t\t\t{\n\t\t\t\t\t\tpublicId = publicChannel.publicId;\n\t\t\t\t\t\tsignature = publicChannel.signature;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new Error('Public channel MUST be either a string, formatted like \"{publicId}.{signature}\" or an object with fields \\'publicId\\' and \\'signature\\'');\n\t\t\t\t\t}\n\n\t\t\t\t\treceivers.push(Models.Receiver.create({\n\t\t\t\t\t\tid: this.encodeId(publicId),\n\t\t\t\t\t\tsignature: this.encodeId(signature),\n\t\t\t\t\t}));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst message = Models.IncomingMessage.create({\n\t\t\t\treceivers,\n\t\t\t\tbody: JSON.stringify(messageBody),\n\t\t\t\texpiry: messageFields.expiry || 0,\n\t\t\t});\n\t\t\tmessages.push(message);\n\t\t});\n\n\t\tconst requestBatch = Models.RequestBatch.create({\n\t\t\trequests: [{\n\t\t\t\tincomingMessages: {\n\t\t\t\t\tmessages,\n\t\t\t\t},\n\t\t\t}],\n\t\t});\n\n\t\treturn Models.RequestBatch.encode(requestBatch).finish();\n\t}\n\n\tcreateMessageReceivers(users, publicIds): Models.Receiver[]\n\t{\n\t\tconst result = [];\n\t\tfor (const userId of users)\n\t\t{\n\t\t\tif (!publicIds[userId] || !publicIds[userId].publicId)\n\t\t\t{\n\t\t\t\tthrow new Error(`Could not determine public id for user ${userId}`);\n\t\t\t}\n\n\t\t\tresult.push(Models.Receiver.create({\n\t\t\t\tid: this.encodeId(publicIds[userId].publicId),\n\t\t\t\tsignature: this.encodeId(publicIds[userId].signature),\n\t\t\t}));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Converts message id from hex-encoded string to byte[]\n\t * @param {string} id Hex-encoded string.\n\t * @return {Uint8Array}\n\t */\n\tencodeId(id: string): Uint8Array\n\t{\n\t\tif (!id)\n\t\t{\n\t\t\treturn new Uint8Array();\n\t\t}\n\n\t\tconst result = [];\n\t\tfor (let i = 0; i < id.length; i += 2)\n\t\t{\n\t\t\tresult.push(parseInt(id.slice(i, i + 2), 16));\n\t\t}\n\n\t\treturn new Uint8Array(result);\n\t}\n}\n\n/**\n * Converts message id from byte[] to string\n */\nfunction decodeId(encodedId: Uint8Array): string\n{\n\tif (!(encodedId instanceof Uint8Array))\n\t{\n\t\tthrow new TypeError('encodedId should be an instance of Uint8Array');\n\t}\n\n\tlet result = '';\n\tfor (const element of encodedId)\n\t{\n\t\tconst hexByte = element.toString(16);\n\t\tif (hexByte.length === 1)\n\t\t{\n\t\t\tresult += '0';\n\t\t}\n\t\tresult += hexByte;\n\t}\n\n\treturn result;\n}","import type { MessageCodec } from './messagecodec';\n\nexport class LegacyCodec implements MessageCodec\n{\n\tasync encodeMessageBatch(messageBatch)\n\t{\n\t\treturn null;\n\t}\n\n\textractMessages(pullEvent: string)\n\t{\n\t\tconst result = [];\n\t\tconst dataArray = pullEvent.match(/#!NGINXNMS!#(.*?)#!NGINXNME!#/gm);\n\t\tif (dataArray === null)\n\t\t{\n\t\t\tconst text = '\\n========= PULL ERROR ===========\\n'\n\t\t\t\t+ 'Error type: parseResponse error parsing message\\n'\n\t\t\t\t+ '\\n'\n\t\t\t\t+ `Data string: ${pullEvent}\\n`\n\t\t\t\t+ '================================\\n\\n';\n\t\t\tconsole.error(text);\n\n\t\t\treturn result;\n\t\t}\n\n\t\tfor (let i = 0; i < dataArray.length; i++)\n\t\t{\n\t\t\tdataArray[i] = dataArray[i].slice(12, -12);\n\t\t\tif (dataArray[i].length <= 0)\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet data = {};\n\t\t\ttry\n\t\t\t{\n\t\t\t\tdata = JSON.parse(dataArray[i]);\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult.push(data);\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n/* eslint-disable @bitrix24/bitrix24-rules/no-native-events-binding */\n/* eslint-disable @bitrix24/bitrix24-rules/no-pseudo-private */\n/* eslint-disable no-underscore-dangle */\n// noinspection ES6PreferShortImport\n\nimport {\n\tCloseReasons,\n\tConnectionType,\n\tPullStatus,\n\tRpcMethod,\n\tServerMode,\n\tSystemCommands,\n\tREVISION,\n} from '../../client/src/consts';\nimport {\n\tbuildQueryString,\n\tgetDateForLog,\n\tisPlainObject,\n\tisNotEmptyString,\n\tisWebSocketSupported,\n\tisArray, browser, getTimestamp,\n} from '../../util/src/util';\nimport { JsonRpc } from '../../jsonrpc/src/jsonrpc';\nimport type { RestCaller } from '../../minirest/src/restcaller';\n\nimport { ChannelManager } from './codec/channelmanager';\nimport { WebSocketConnector } from './transport/websocket';\nimport { LongPollingConnector } from './transport/longpolling';\nimport { ProtobufCodec } from './codec/protobuf';\nimport { LegacyCodec } from './codec/legacy';\nimport type { MessageCodec } from './codec/messagecodec';\nimport type { PullConfig } from '../../configholder/src/configholder';\nimport type { JsonRpcResponse } from '../../jsonrpc/src/jsonrpc';\nimport type { StorageManager } from '../../client/src/storage';\n\nconst RESTORE_WEBSOCKET_TIMEOUT = 30 * 60;\n\nconst MAX_IDS_TO_STORE = 10;\n\nconst PING_TIMEOUT = 10;\nconst JSON_RPC_PING = 'ping';\nconst JSON_RPC_PONG = 'pong';\n\nconst LS_SESSION = 'bx-pull-session';\n\n// const LS_SESSION_CACHE_TIME = 20;\n\nexport interface Logger\n{\n\tlog(message: string, ...params): void,\n\n\tlogForce(message: string, ...params): void,\n}\n\ntype ConnectorOptions = {\n\tconfig: ?PullConfig,\n\tstorage: ?StorageManager,\n\tevents: { [key: $Values<typeof ConnectorEvents>]: (e: CustomEvent) => void },\n\trestoreSession: boolean,\n\tgetPublicListMethod: string,\n\trestClient: RestCaller,\n\tlogger: Logger,\n}\n\nexport const ConnectorEvents = {\n\tMessage: 'message',\n\tRevisionChanged: 'revisionChanged',\n\tChannelReplaced: 'channelReplaced',\n\tConfigExpired: 'configExpired',\n\tConnectionStatus: 'connectionStatus',\n\tConnectionError: 'connectionError',\n};\n\ntype PromiseResolver = {\n\tresolve: () => {},\n\treject: () => {},\n}\n\nexport class Connector extends EventTarget\n{\n\tconfig: ?PullConfig;\n\tcodec: ?MessageCodec;\n\tlogger: ?Logger;\n\n\tconnectors = {\n\t\twebSocket: null,\n\t\tlongPolling: null,\n\t};\n\n\tconnectPromises: PromiseResolver[] = [];\n\tpingWaitTimeout: number | null = null;\n\treconnectTimeout: number | null = null;\n\tisWebsocketBlocked = false;\n\tisLongPollingBlocked = false;\n\tisManualDisconnect = false;\n\n\t_status = PullStatus.Offline;\n\n\tconnectionAttempt = 0;\n\n\tconstructor(options: ConnectorOptions = {})\n\t{\n\t\tsuper();\n\n\t\tthis.config = options.config;\n\t\tthis.logger = options.logger;\n\t\tthis.storage = options.storage;\n\t\tthis.restClient = options.restClient;\n\n\t\tthis.isSecure = globalThis.location.protocol === 'https:';\n\n\t\tthis.connectors.webSocket = new WebSocketConnector({\n\t\t\tpathGetter: () => this.getConnectionPathByType(ConnectionType.WebSocket),\n\t\t\tonOpen: this.onWebSocketOpen.bind(this),\n\t\t\tonMessage: this.onIncomingMessage.bind(this),\n\t\t\tonDisconnect: this.onWebSocketDisconnect.bind(this),\n\t\t\tonError: this.onWebSocketError.bind(this),\n\t\t});\n\n\t\tthis.connectors.longPolling = new LongPollingConnector({\n\t\t\tpathGetter: () => this.getConnectionPathByType(ConnectionType.LongPolling),\n\t\t\tisBinary: this.isProtobufSupported() && !this.isJsonRpc(),\n\t\t\tonOpen: this.onLongPollingOpen.bind(this),\n\t\t\tonMessage: this.onIncomingMessage.bind(this),\n\t\t\tonDisconnect: this.onLongPollingDisconnect.bind(this),\n\t\t\tonError: this.onLongPollingError.bind(this),\n\t\t});\n\n\t\tthis.connectionType = this.isWebSocketAllowed() ? ConnectionType.WebSocket : ConnectionType.LongPolling;\n\n\t\tfor (const eventName of Object.keys(options.events || {}))\n\t\t{\n\t\t\tthis.addEventListener(eventName, options.events[eventName]);\n\t\t}\n\n\t\tthis.channelManager = new ChannelManager({\n\t\t\trestClient: options.restClient,\n\t\t\tgetPublicListMethod: options.getPublicListMethod,\n\t\t});\n\n\t\tthis.jsonRpcAdapter = this.createRpcAdapter();\n\t\tthis.codec = this.createCodec();\n\n\t\tthis.session = {\n\t\t\tmid: null,\n\t\t\ttag: null,\n\t\t\ttime: null,\n\t\t\thistory: {},\n\t\t\tlastMessageIds: [],\n\t\t\tmessageCount: 0,\n\t\t};\n\n\t\tif (options.restoreSession && this.storage)\n\t\t{\n\t\t\tconst oldSession = this.storage.get(LS_SESSION);\n\t\t\tconst now = new Date();\n\t\t\tif (isPlainObject(oldSession) && 'ttl' in oldSession && oldSession.ttl >= now)\n\t\t\t{\n\t\t\t\tthis.session.mid = oldSession.mid;\n\t\t\t}\n\t\t}\n\t}\n\n\tget status(): string\n\t{\n\t\treturn this._status;\n\t}\n\n\tset status(status)\n\t{\n\t\tif (this._status === status)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis._status = status;\n\t\tthis.dispatchEvent(new CustomEvent(ConnectorEvents.ConnectionStatus, {\n\t\t\tdetail: {\n\t\t\t\tstatus,\n\t\t\t\tconnectionType: this.connector.connectionType,\n\t\t\t},\n\t\t}));\n\t}\n\n\tcreateRpcAdapter(): JsonRpc\n\t{\n\t\treturn new JsonRpc({\n\t\t\tsender: this.connectors.webSocket,\n\t\t\thandlers: {\n\t\t\t\t'incoming.message': this.handleRpcIncomingMessage.bind(this),\n\t\t\t},\n\t\t\tevents: {\n\t\t\t\terror: this.onRpcError.bind(this),\n\t\t\t},\n\t\t});\n\t}\n\n\tcreateCodec(): MessageCodec\n\t{\n\t\tif (this.isProtobufSupported())\n\t\t{\n\t\t\treturn new ProtobufCodec({\n\t\t\t\tchannelManager: this.channelManager,\n\t\t\t});\n\t\t}\n\n\t\treturn new LegacyCodec();\n\t}\n\n\tget connector(): WebSocketConnector | LongPollingConnector\n\t{\n\t\treturn this.connectors[this.connectionType];\n\t}\n\n\tdisconnect(disconnectCode, disconnectReason)\n\t{\n\t\tif (this.connector)\n\t\t{\n\t\t\tthis.isManualDisconnect = true;\n\t\t\tthis.connector.disconnect(disconnectCode, disconnectReason);\n\t\t}\n\t}\n\n\tstop(disconnectCode, disconnectReason)\n\t{\n\t\tthis.disconnect(disconnectCode, disconnectReason);\n\t\tthis.stopCheckConfig();\n\t}\n\n\tresetSession()\n\t{\n\t\tthis.session.mid = null;\n\t\tthis.session.tag = null;\n\t\tthis.session.time = null;\n\t}\n\n\tsetConfig(config)\n\t{\n\t\tconst wasConnected = this.isConnected();\n\t\tif (wasConnected)\n\t\t{\n\t\t\tthis.disconnect(CloseReasons.CONFIG_REPLACED, 'config was replaced');\n\t\t}\n\n\t\tthis.config = config;\n\n\t\tif (config.publicChannels)\n\t\t{\n\t\t\tthis.channelManager.setPublicIds(Object.values(config.publicChannels));\n\t\t}\n\n\t\tif (wasConnected)\n\t\t{\n\t\t\tthis.connect();\n\t\t}\n\t}\n\n\tconnect(): Promise<void>\n\t{\n\t\tif (this.connector.connected)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tif (this.reconnectTimeout)\n\t\t{\n\t\t\tclearTimeout(this.reconnectTimeout);\n\t\t}\n\n\t\tthis.isManualDisconnect = false;\n\t\tthis.status = PullStatus.Connecting;\n\t\tthis.connectionAttempt++;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.connectPromises.push({ resolve, reject });\n\t\t\tthis.connector.connect();\n\t\t});\n\t}\n\n\treconnect(disconnectCode, disconnectReason, delay = 1)\n\t{\n\t\tthis.disconnect(disconnectCode, disconnectReason);\n\n\t\tthis.scheduleReconnect(delay);\n\t}\n\n\trestoreWebSocketConnection()\n\t{\n\t\tif (this.connectionType === ConnectionType.WebSocket)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connectors.webSocket.connect();\n\t}\n\n\tscheduleReconnect(connectionDelay)\n\t{\n\t\tconst delay = connectionDelay ?? this.getConnectionAttemptDelay(this.connectionAttempt);\n\n\t\tif (this.reconnectTimeout)\n\t\t{\n\t\t\tclearTimeout(this.reconnectTimeout);\n\t\t}\n\n\t\tthis.logger?.log(`Pull: scheduling reconnection in ${delay} seconds; attempt # ${this.connectionAttempt}`);\n\n\t\tthis.reconnectTimeout = setTimeout(\n\t\t\t() => {\n\t\t\t\tthis.connect().catch((error) => {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelay * 1000,\n\t\t);\n\t}\n\n\tscheduleRestoreWebSocketConnection()\n\t{\n\t\tthis.logger?.log(`Pull: scheduling restoration of websocket connection in ${RESTORE_WEBSOCKET_TIMEOUT} seconds`);\n\n\t\tif (this.restoreWebSocketTimeout)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.restoreWebSocketTimeout = setTimeout(() => {\n\t\t\tthis.restoreWebSocketTimeout = 0;\n\t\t\tthis.restoreWebSocketConnection();\n\t\t}, RESTORE_WEBSOCKET_TIMEOUT * 1000);\n\t}\n\n\thandleInternalPullEvent(command, message)\n\t{\n\t\tswitch (command.toUpperCase())\n\t\t{\n\t\t\tcase SystemCommands.CHANNEL_EXPIRE:\n\t\t\t{\n\t\t\t\tif (message.params.action === 'reconnect' && 'new_channel' in message.params)\n\t\t\t\t{\n\t\t\t\t\tthis.dispatchEvent(new CustomEvent(ConnectorEvents.ChannelReplaced), {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\ttype: message.params.channel.type,\n\t\t\t\t\t\t\tnewChannel: message.params.new_channel,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.dispatchEvent(new CustomEvent(ConnectorEvents.ConfigExpired));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase SystemCommands.CONFIG_EXPIRE:\n\t\t\t{\n\t\t\t\tthis.dispatchEvent(new CustomEvent(ConnectorEvents.ConfigExpired));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase SystemCommands.SERVER_RESTART:\n\t\t\t{\n\t\t\t\tthis.reconnect(CloseReasons.SERVER_RESTARTED, 'server was restarted', 15);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault://\n\t\t}\n\t}\n\n\tgetConnectionBasePath(connectionType: string): string\n\t{\n\t\tswitch (connectionType)\n\t\t{\n\t\t\tcase ConnectionType.WebSocket:\n\t\t\t\treturn this.isSecure ? this.config.server.websocket_secure : this.config.server.websocket;\n\t\t\tcase ConnectionType.LongPolling:\n\t\t\t\treturn this.isSecure ? this.config.server.long_pooling_secure : this.config.server.long_polling;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown connection type ${connectionType}`);\n\t\t}\n\t}\n\n\tgetConnectionChannels(): string\n\t{\n\t\tconst channels = [];\n\t\tfor (const channelType of ['private', 'shared'])\n\t\t{\n\t\t\tif (channelType in this.config.channels)\n\t\t\t{\n\t\t\t\tchannels.push(this.config.channels[channelType].id);\n\t\t\t}\n\t\t}\n\n\t\tif (channels.length === 0)\n\t\t{\n\t\t\tthrow new Error('Empty channel list');\n\t\t}\n\n\t\treturn channels.join('/');\n\t}\n\n\tgetConnectionPath(): string\n\t{\n\t\treturn this.getConnectionPathByType(this.connectionType);\n\t}\n\n\tgetConnectionPathByType(connectionType): string\n\t{\n\t\tconst params = {};\n\t\tconst path = this.getConnectionBasePath(connectionType);\n\n\t\tif (isNotEmptyString(this.config.jwt))\n\t\t{\n\t\t\tparams.token = this.config.jwt;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tparams.CHANNEL_ID = this.getConnectionChannels();\n\t\t}\n\n\t\tif (this.isJsonRpc())\n\t\t{\n\t\t\tparams.jsonRpc = 'true';\n\t\t}\n\t\telse if (this.isProtobufSupported())\n\t\t{\n\t\t\tparams.binaryMode = 'true';\n\t\t}\n\n\t\tif (this.isSharedMode())\n\t\t{\n\t\t\tif (!this.config.clientId)\n\t\t\t{\n\t\t\t\tthrow new Error('Push-server is in shared mode, but clientId is not set');\n\t\t\t}\n\t\t\tparams.clientId = this.config.clientId;\n\t\t}\n\n\t\tif (this.config.server && this.config.server.hostname)\n\t\t{\n\t\t\tparams.hostname = this.config.server.hostname;\n\t\t}\n\n\t\tif (this.session.mid)\n\t\t{\n\t\t\tparams.mid = this.session.mid;\n\t\t}\n\n\t\tif (this.session.tag)\n\t\t{\n\t\t\tparams.tag = this.session.tag;\n\t\t}\n\n\t\tif (this.session.time)\n\t\t{\n\t\t\tparams.time = this.session.time;\n\t\t}\n\t\tparams.revision = REVISION;\n\n\t\treturn `${path}?${buildQueryString(params)}`;\n\t}\n\n\tgetPublicationPath(): string\n\t{\n\t\tconst path = this.isSecure ? this.config.server.publish_secure : this.config.server.publish;\n\t\tif (!path)\n\t\t{\n\t\t\treturn '';\n\t\t}\n\n\t\tconst channels = [];\n\t\tfor (const type of Object.keys(this.config.channels))\n\t\t{\n\t\t\tchannels.push(this.config.channels[type].id);\n\t\t}\n\n\t\tconst params = {\n\t\t\tCHANNEL_ID: channels.join('/'),\n\t\t};\n\n\t\treturn `${path}?${buildQueryString(params)}`;\n\t}\n\n\temitMessage(message)\n\t{\n\t\tif (!isPlainObject(message.extra))\n\t\t{\n\t\t\tmessage.extra = {};\n\t\t}\n\n\t\tif (message.extra.server_time_unix)\n\t\t{\n\t\t\tconst timeShift = this.config.server.timeShift ?? 0;\n\t\t\tconst timeAgo = ((getTimestamp() - (message.extra.server_time_unix * 1000)) / 1000) - timeShift;\n\t\t\tmessage.extra.server_time_ago = timeAgo > 0 ? timeAgo : 0;\n\t\t}\n\n\t\tthis.dispatchEvent(new CustomEvent(ConnectorEvents.Message, { detail: message }));\n\t}\n\n\t/**\n\t * Returns reconnect delay in seconds\n\t * @param attemptNumber\n\t * @return {number}\n\t */\n\tgetConnectionAttemptDelay(attemptNumber): number\n\t{\n\t\tlet result = 60;\n\t\tif (attemptNumber < 1)\n\t\t{\n\t\t\tresult = 0.5;\n\t\t}\n\t\telse if (attemptNumber < 3)\n\t\t{\n\t\t\tresult = 5;\n\t\t}\n\t\telse if (attemptNumber < 5)\n\t\t{\n\t\t\tresult = 25;\n\t\t}\n\t\telse if (attemptNumber < 10)\n\t\t{\n\t\t\tresult = 45;\n\t\t}\n\n\t\treturn result + (result * Math.random() * 0.2);\n\t}\n\n\tonLongPollingOpen()\n\t{\n\t\tthis.unloading = false;\n\t\tthis.starting = false;\n\t\tthis.connectionAttempt = 0;\n\t\tthis.isManualDisconnect = false;\n\t\tthis.status = PullStatus.Online;\n\n\t\tthis.logger?.log('Pull: Long polling connection with push-server opened');\n\t\tif (this.isWebSocketEnabled())\n\t\t{\n\t\t\tthis.scheduleRestoreWebSocketConnection();\n\t\t}\n\n\t\tthis.connectPromises.forEach((resolver) => {\n\t\t\tresolver.resolve();\n\t\t});\n\t\tthis.connectPromises = [];\n\t}\n\n\tonWebSocketOpen()\n\t{\n\t\tthis.status = PullStatus.Online;\n\t\tthis.isWebsocketBlocked = false;\n\t\tthis.connectionAttempt = 0;\n\n\t\t// to prevent fallback to long polling in case of networking problems\n\t\tthis.isLongPollingBlocked = true;\n\n\t\tif (this.connectionType === ConnectionType.LongPolling)\n\t\t{\n\t\t\tthis.connectionType = ConnectionType.WebSocket;\n\t\t\tthis.connectors.longPolling.disconnect();\n\t\t}\n\n\t\tif (this.restoreWebSocketTimeout)\n\t\t{\n\t\t\tclearTimeout(this.restoreWebSocketTimeout);\n\t\t\tthis.restoreWebSocketTimeout = null;\n\t\t}\n\t\tthis.logger?.log('Pull: Websocket connection with push-server opened');\n\t\tthis.connectPromises.forEach((resolver) => {\n\t\t\tresolver.resolve();\n\t\t});\n\t\tthis.connectPromises = [];\n\t}\n\n\tonWebSocketDisconnect(e = {})\n\t{\n\t\tif (this.connectionType === ConnectionType.WebSocket)\n\t\t{\n\t\t\tthis.status = PullStatus.Offline;\n\t\t}\n\n\t\tif (this.isManualDisconnect)\n\t\t{\n\t\t\tthis.logger?.logForce('Pull: Websocket connection with push-server manually closed');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.logger?.logForce(`Pull: Websocket connection with push-server closed. Code: ${e.code}, reason: ${e.reason}`);\n\t\t\tif (e.code === CloseReasons.WRONG_CHANNEL_ID)\n\t\t\t{\n\t\t\t\tthis.dispatchEvent(new CustomEvent(ConnectorEvents.ConnectionError, {\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tcode: e.code,\n\t\t\t\t\t\treason: 'wrong channel signature',\n\t\t\t\t\t},\n\t\t\t\t}));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.scheduleReconnect();\n\t\t\t}\n\t\t}\n\n\t\t// to prevent fallback to long polling in case of networking problems\n\t\tthis.isLongPollingBlocked = true;\n\t\tthis.isManualDisconnect = false;\n\n\t\tthis.clearPingWaitTimeout();\n\t}\n\n\tonWebSocketError(e)\n\t{\n\t\tthis.starting = false;\n\t\tif (this.connectionType === ConnectionType.WebSocket)\n\t\t{\n\t\t\tthis.status = PullStatus.Offline;\n\t\t}\n\n\t\tconsole.error(`${getDateForLog()}: Pull: WebSocket connection error`, e);\n\t\tthis.scheduleReconnect();\n\t\tthis.connectPromises.forEach((resolver) => {\n\t\t\tresolver.reject();\n\t\t});\n\t\tthis.connectPromises = [];\n\n\t\tthis.clearPingWaitTimeout();\n\t}\n\n\tonWebSocketBlockChanged(e)\n\t{\n\t\tconst isWebSocketBlocked = e.isWebSocketBlocked;\n\n\t\tif (isWebSocketBlocked && this.connectionType === ConnectionType.WebSocket && !this.isConnected())\n\t\t{\n\t\t\tclearTimeout(this.reconnectTimeout);\n\n\t\t\tthis.connectionAttempt = 0;\n\t\t\tthis.connectionType = ConnectionType.LongPolling;\n\t\t\tthis.scheduleReconnect(1);\n\t\t}\n\t\telse if (!isWebSocketBlocked && this.connectionType === ConnectionType.LongPolling)\n\t\t{\n\t\t\tclearTimeout(this.reconnectTimeout);\n\t\t\tclearTimeout(this.restoreWebSocketTimeout);\n\n\t\t\tthis.connectionAttempt = 0;\n\t\t\tthis.connectionType = ConnectionType.WebSocket;\n\t\t\tthis.scheduleReconnect(1);\n\t\t}\n\t}\n\n\tonLongPollingDisconnect(e = {})\n\t{\n\t\tif (this.connectionType === ConnectionType.LongPolling)\n\t\t{\n\t\t\tthis.status = PullStatus.Offline;\n\t\t}\n\n\t\tthis.logger?.log(`Pull: Long polling connection with push-server closed. Code: ${e.code}, reason: ${e.reason}`);\n\t\tif (!this.isManualDisconnect)\n\t\t{\n\t\t\tthis.scheduleReconnect();\n\t\t}\n\t\tthis.isManualDisconnect = false;\n\t\tthis.clearPingWaitTimeout();\n\t}\n\n\tonLongPollingError(e)\n\t{\n\t\tthis.starting = false;\n\t\tif (this.connectionType === ConnectionType.LongPolling)\n\t\t{\n\t\t\tthis.status = PullStatus.Offline;\n\t\t}\n\t\tconsole.error(`${getDateForLog()}: Pull: Long polling connection error`, e);\n\t\tthis.scheduleReconnect();\n\t\tthis.connectPromises.forEach((resolver) => {\n\t\t\tresolver.reject();\n\t\t});\n\t\tthis.connectPromises = [];\n\t\tthis.clearPingWaitTimeout();\n\t}\n\n\tonIncomingMessage(message)\n\t{\n\t\tif (this.isJsonRpc())\n\t\t{\n\t\t\tif (message === JSON_RPC_PING)\n\t\t\t{\n\t\t\t\tthis.onJsonRpcPing();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.jsonRpcAdapter.handleIncomingMessage(message);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst events = this.codec.extractMessages(message);\n\t\t\tthis.handleIncomingEvents(events);\n\t\t}\n\t}\n\n\thandleRpcIncomingMessage(messageFields): {}\n\t{\n\t\tthis.session.mid = messageFields.mid;\n\t\tconst body = messageFields.body;\n\n\t\tif (!messageFields.body.extra)\n\t\t{\n\t\t\tbody.extra = {};\n\t\t}\n\t\tbody.extra.sender = messageFields.sender;\n\n\t\tif ('user_params' in messageFields && isPlainObject(messageFields.user_params))\n\t\t{\n\t\t\tObject.assign(body.params, messageFields.user_params);\n\t\t}\n\n\t\tif ('dictionary' in messageFields && isPlainObject(messageFields.dictionary))\n\t\t{\n\t\t\tObject.assign(body.params, messageFields.dictionary);\n\t\t}\n\n\t\tif (this.checkDuplicate(messageFields.mid))\n\t\t{\n\t\t\tthis.addMessageToStat(body);\n\t\t\tthis.trimDuplicates();\n\t\t\tif (body.module_id === 'pull')\n\t\t\t{\n\t\t\t\tthis.handleInternalPullEvent(body.command, body);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.emitMessage(body);\n\t\t\t}\n\n\t\t\tif (body.extra && body.extra.revision_web)\n\t\t\t{\n\t\t\t\tthis.checkRevision(body.extra.revision_web);\n\t\t\t}\n\t\t}\n\n\t\tthis.connector.send(`mack:${messageFields.mid}`);\n\n\t\treturn {};\n\t}\n\n\tonRpcError(event)\n\t{\n\t\t// probably, fire event\n\t}\n\n\tonJsonRpcPing()\n\t{\n\t\tthis.updatePingWaitTimeout();\n\t\tthis.connector.send(JSON_RPC_PONG);\n\t}\n\n\thandleIncomingEvents(events)\n\t{\n\t\tconst messages = [];\n\t\tif (events.length === 0)\n\t\t{\n\t\t\tthis.session.mid = null;\n\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const event of events)\n\t\t{\n\t\t\tthis.updateSessionFromEvent(event);\n\t\t\tif (event.mid && !this.checkDuplicate(event.mid))\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.addMessageToStat(event.text);\n\t\t\tmessages.push(event.text);\n\t\t}\n\t\tthis.trimDuplicates();\n\t\tmessages.forEach((message) => {\n\t\t\tif (message.module_id === 'pull')\n\t\t\t{\n\t\t\t\tthis.handleInternalPullEvent(message.command, message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.emitMessage(message);\n\t\t\t}\n\n\t\t\tif (message.extra && message.extra.revision_web)\n\t\t\t{\n\t\t\t\tthis.checkRevision(message.extra.revision_web);\n\t\t\t}\n\t\t});\n\t}\n\n\tcheckRevision(serverRevision: number)\n\t{\n\t\tif (serverRevision > 0 && serverRevision !== REVISION)\n\t\t{\n\t\t\tthis.logger?.log(`Pull revision changed from ${REVISION} to ${serverRevision}. Reload required`);\n\n\t\t\tthis.dispatchEvent(new CustomEvent(ConnectorEvents.RevisionChanged, { detail: { revision: serverRevision } }));\n\t\t}\n\t}\n\n\tupdateSessionFromEvent(event)\n\t{\n\t\tthis.session.mid = event.mid || null;\n\t\tthis.session.tag = event.tag || null;\n\t\tthis.session.time = event.time || null;\n\t}\n\n\tcheckDuplicate(mid): boolean\n\t{\n\t\tif (this.session.lastMessageIds.includes(mid))\n\t\t{\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(`Duplicate message ${mid} skipped`);\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.session.lastMessageIds.push(mid);\n\n\t\treturn true;\n\t}\n\n\ttrimDuplicates()\n\t{\n\t\tif (this.session.lastMessageIds.length > MAX_IDS_TO_STORE)\n\t\t{\n\t\t\tthis.session.lastMessageIds = this.session.lastMessageIds.slice(-MAX_IDS_TO_STORE);\n\t\t}\n\t}\n\n\taddMessageToStat(message)\n\t{\n\t\tif (!this.session.history[message.module_id])\n\t\t{\n\t\t\tthis.session.history[message.module_id] = {};\n\t\t}\n\n\t\tif (!this.session.history[message.module_id][message.command])\n\t\t{\n\t\t\tthis.session.history[message.module_id][message.command] = 0;\n\t\t}\n\t\tthis.session.history[message.module_id][message.command]++;\n\n\t\tthis.session.messageCount++;\n\t}\n\n\tgetRevision(): number | null\n\t{\n\t\treturn (this.config && this.config.api) ? this.config.api.revision_web : null;\n\t}\n\n\tgetServerVersion(): number\n\t{\n\t\treturn (this.config && this.config.server) ? this.config.server.version : 0;\n\t}\n\n\tgetServerMode(): string | null\n\t{\n\t\treturn (this.config && this.config.server) ? this.config.server.mode : null;\n\t}\n\n\tisConnected(): boolean\n\t{\n\t\treturn this.connector.connected;\n\t}\n\n\tisWebSocketConnected(): boolean\n\t{\n\t\treturn this.connector.connected && this.connector.connectionType === ConnectionType.WebSocket;\n\t}\n\n\tisWebSocketAllowed(): boolean\n\t{\n\t\treturn !this.isWebsocketBlocked && this.isWebSocketEnabled();\n\t}\n\n\tisWebSocketEnabled(): boolean\n\t{\n\t\tif (!isWebSocketSupported())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (this.config && this.config.server && this.config.server.websocket_enabled === true);\n\t}\n\n\tisPublishingSupported(): boolean\n\t{\n\t\treturn this.getServerVersion() > 3;\n\t}\n\n\tisPublishingEnabled(): boolean\n\t{\n\t\tif (!this.isPublishingSupported())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (this.config && this.config.server && this.config.server.publish_enabled === true);\n\t}\n\n\tisProtobufSupported(): boolean\n\t{\n\t\treturn (this.getServerVersion() === 4 && !browser.IsIe());\n\t}\n\n\tisJsonRpc(): boolean\n\t{\n\t\treturn (this.getServerVersion() >= 5);\n\t}\n\n\tisSharedMode(): boolean\n\t{\n\t\treturn (this.getServerMode() === ServerMode.Shared);\n\t}\n\n\tsetPublicIds(publicIds)\n\t{\n\t\tthis.channelManager.setPublicIds(publicIds);\n\t}\n\n\t/**\n\t * Sends batch of messages to the multiple public channels.\n\t *\n\t * @param {object[]} messageBatch Array of messages to send.\n\t * @param {int[]} messageBatch.userList User ids the message receivers.\n\t * @param {string[]|object[]} messageBatch.channelList Public ids of the channels to send messages.\n\t * @param {string} messageBatch.moduleId Name of the module to receive message,\n\t * @param {string} messageBatch.command Command name.\n\t * @param {object} messageBatch.params Command parameters.\n\t * @param {integer} [messageBatch.expiry] Message expiry time in seconds.\n\t * @return void\n\t */\n\tasync sendMessageBatch(messageBatch)\n\t{\n\t\tif (!this.isPublishingEnabled())\n\t\t{\n\t\t\tthrow new Error('Client publishing is not supported or is disabled');\n\t\t}\n\n\t\ttry\n\t\t{\n\t\t\tconst packet = await this.codec.encodeMessageBatch(messageBatch);\n\t\t\tthis.connector.send(packet);\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tconsole.error('sendMessageBatch error:', e);\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\t/**\n\t * Send single message to the specified users.\n\t *\n\t * @param {integer[]} users User ids of the message receivers.\n\t * @param {string} moduleId Name of the module to receive message,\n\t * @param {string} command Command name.\n\t * @param {object} params Command parameters.\n\t * @param {integer} [expiry] Message expiry time in seconds.\n\t */\n\tasync sendMessage(users, moduleId, command, params, expiry): Promise<JsonRpcResponse> | void\n\t{\n\t\tconst message = {\n\t\t\tuserList: users,\n\t\t\tbody: {\n\t\t\t\tmodule_id: moduleId,\n\t\t\t\tcommand,\n\t\t\t\tparams,\n\t\t\t},\n\t\t\texpiry,\n\t\t};\n\n\t\tif (this.isJsonRpc())\n\t\t{\n\t\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.Publish, message);\n\t\t}\n\n\t\treturn this.sendMessageBatch([message]);\n\t}\n\n\t/**\n\t * Send single message to the specified public channels.\n\t *\n\t * @param {string[]} publicChannels Public ids of the channels to receive message.\n\t * @param {string} moduleId Name of the module to receive message,\n\t * @param {string} command Command name.\n\t * @param {object} params Command parameters.\n\t * @param {integer} [expiry] Message expiry time in seconds.\n\t * @return {Promise}\n\t */\n\tsendMessageToChannels(publicChannels, moduleId, command, params, expiry): Promise<JsonRpcResponse> | void\n\t{\n\t\tconst message = {\n\t\t\tchannelList: publicChannels,\n\t\t\tbody: {\n\t\t\t\tmodule_id: moduleId,\n\t\t\t\tcommand,\n\t\t\t\tparams,\n\t\t\t},\n\t\t\texpiry,\n\t\t};\n\n\t\tif (this.isJsonRpc())\n\t\t{\n\t\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.Publish, message);\n\t\t}\n\n\t\treturn this.sendMessageBatch([message]);\n\t}\n\n\t/**\n\t * @param userId {number}\n\t */\n\tasync subscribeUserStatusChange(userId): Promise<void>\n\t{\n\t\tif (typeof (userId) !== 'number')\n\t\t{\n\t\t\tthrow new TypeError('userId must be a number');\n\t\t}\n\n\t\tawait this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.SubscribeStatusChange, { userId });\n\t}\n\n\t/**\n\t * @param userId {number}\n\t * @returns {Promise}\n\t */\n\tasync unsubscribeUserStatusChange(userId): Promise<void>\n\t{\n\t\tif (typeof (userId) !== 'number')\n\t\t{\n\t\t\tthrow new TypeError('userId must be a number');\n\t\t}\n\n\t\tawait this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.UnsubscribeStatusChange, { userId });\n\t}\n\n\t/**\n\t * Returns \"last seen\" time in seconds for the users. Result format: Object{userId: int}\n\t * If the user is currently connected - will return 0.\n\t * If the user if offline - will return diff between current timestamp and last seen timestamp in seconds.\n\t * If the user was never online - the record for user will be missing from the result object.\n\t *\n\t * @param {integer[]} userList List of user ids.\n\t * @returns {Promise}\n\t */\n\tasync getUsersLastSeen(userList: number[]): Promise<{ [number]: number }>\n\t{\n\t\tif (!isArray(userList) || !userList.every((item) => typeof (item) === 'number'))\n\t\t{\n\t\t\tthrow new Error('userList must be an array of numbers');\n\t\t}\n\t\tconst result = {};\n\n\t\tconst response = await this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.GetUsersLastSeen, {\n\t\t\tuserList,\n\t\t});\n\t\tconst unresolved = [];\n\t\tfor (const userId of userList)\n\t\t{\n\t\t\tif (!(userId in response))\n\t\t\t{\n\t\t\t\tunresolved.push(userId);\n\t\t\t}\n\t\t\tresult[userId] = response[userId];\n\t\t}\n\n\t\tif (unresolved.length === 0)\n\t\t{\n\t\t\treturn result;\n\t\t}\n\n\t\tconst params = {\n\t\t\tuserIds: unresolved,\n\t\t\tsendToQueueSever: true,\n\t\t};\n\t\tconst restResponse = await this.restClient.callMethod('pull.api.user.getLastSeen', params);\n\t\tconst restData = restResponse.data();\n\t\tfor (const userId of Object.keys(restData))\n\t\t{\n\t\t\tresult[userId] = restData[userId];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Pings server. In case of success promise will be resolved, otherwise - rejected.\n\t *\n\t * @param {int} timeout Request timeout in seconds\n\t * @returns {Promise}\n\t */\n\tping(timeout): Promise<JsonRpcResponse>\n\t{\n\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.Ping, {}, timeout);\n\t}\n\n\t/**\n\t * Returns list channels that the connection is subscribed to.\n\t *\n\t * @returns {Promise}\n\t */\n\tlistChannels(): Promise<JsonRpcResponse>\n\t{\n\t\treturn this.jsonRpcAdapter.executeOutgoingRpcCommand(RpcMethod.ListChannels, {});\n\t}\n\n\tupdatePingWaitTimeout()\n\t{\n\t\tclearTimeout(this.pingWaitTimeout);\n\t\tthis.pingWaitTimeout = setTimeout(this.onPingTimeout.bind(this), PING_TIMEOUT * 2 * 1000);\n\t}\n\n\tclearPingWaitTimeout()\n\t{\n\t\tclearTimeout(this.pingWaitTimeout);\n\t\tthis.pingWaitTimeout = null;\n\t}\n\n\tonPingTimeout()\n\t{\n\t\tthis.pingWaitTimeout = null;\n\t\tif (!this.isConnected())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(`No pings are received in ${PING_TIMEOUT * 2} seconds. Reconnecting`);\n\t\tthis.disconnect(CloseReasons.STUCK, 'connection stuck');\n\t\tthis.scheduleReconnect();\n\t}\n}\n"],"names":["REVISION","ConnectionType","WebSocket","LongPolling","PullStatus","Online","Offline","Connecting","CloseReasons","NORMAL_CLOSURE","SERVER_DIE","CONFIG_REPLACED","CHANNEL_EXPIRED","SERVER_RESTARTED","CONFIG_EXPIRED","MANUAL","STUCK","BACKEND_ERROR","WRONG_CHANNEL_ID","SystemCommands","CHANNEL_EXPIRE","CONFIG_EXPIRE","SERVER_RESTART","ServerMode","Shared","Personal","RpcMethod","Publish","GetUsersLastSeen","Ping","ListChannels","SubscribeStatusChange","UnsubscribeStatusChange","browser","IsChrome","navigator","userAgent","toLowerCase","includes","IsFirefox","IsIe","match","getTimestamp","Date","now","isString","item","String","isArray","Object","prototype","toString","call","isFunction","Function","isPlainObject","Boolean","constructor","isNotEmptyString","length","isJsonRpcRequest","jsonrpc","method","isJsonRpcResponse","buildQueryString","params","result","key","keys","value","index","valueElement","entries","left","encodeURIComponent","right","slice","Math","max","getDateForLog","d","getFullYear","lpad","getMonth","getDate","getHours","getMinutes","str","chr","i","ErrorNotConnected","Error","message","name","ErrorTimeout","JSON_RPC_VERSION","RpcError","Parse","code","InvalidRequest","MethodNotFound","InvalidParams","Internal","JsonRpc","EventTarget","options","idCounter","handlers","rpcResponseAwaiters","Map","sender","handle","eventType","events","addEventListener","handler","executeOutgoingRpcCommand","timeout","Promise","resolve","reject","request","createRequest","send","JSON","stringify","t","setTimeout","delete","id","set","executeOutgoingRpcBatch","batch","requests","promises","forEach","push","processRpcResponse","response","has","awaiter","get","error","clearTimeout","dispatchEvent","CustomEvent","handleIncomingMessage","decoded","parse","e","Utils","executeIncomingRpcBatch","commandResult","executeIncomingRpcCommand","undefined","createErrorResponse","createResponse","command","nextId","createPublishRequest","messageBatch","map","ChannelManager","publicIds","restClient","BX","rest","getPublicListMethod","getPublicIds","users","unknownUsers","userId","end","callMethod","then","data","setPublicIds","values","catch","publicIdDescriptor","user_id","publicId","public_id","signature","start","AbstractConnector","config","_connected","connectionType","disconnectCode","disconnectReason","pathGetter","callbacks","onOpen","onDisconnect","onError","onMessage","connected","reason","path","WebSocketConnector","onSocketOpenHandler","onSocketOpen","bind","onSocketCloseHandler","onSocketClose","onSocketErrorHandler","onSocketError","onSocketMessageHandler","onSocketMessage","connect","socket","readyState","OPEN","CONNECTING","removeEventListener","close","createSocket","disconnect","binaryType","buffer","console","destroy","LONG_POLLING_TIMEOUT","LongPollingConnector","active","requestTimeout","failureTimeout","requestAborted","xhr","createXhr","isBinary","XMLHttpRequest","responseType","onXhrReadyStateChange","performRequest","abort","onRequestTimeout","open","status","onResponse","parent","getPublicationPath","ArrayBuffer","session","mid","getResponseHeader","lastMessageId","setLastMessageId","global","prelude","modules","cache","$require","$module","exports","protobuf","require","module","asPromise","fn","ctx","Array","arguments","offset","pending","executor","callback","err","apply","base64","string","p","n","charAt","ceil","b64","s64","encode","parts","chunk","j","b","fromCharCode","join","invalidEncoding","decode","c","charCodeAt","test","codegen","functionParams","functionName","body","Codegen","formatStringOrScope","source","verbose","log","scopeKeys","scopeParams","scopeValues","scopeOffset","formatParams","formatOffset","replace","$0","$1","Number","floor","functionNameOverride","EventEmitter","_listeners","on","evt","off","listeners","splice","emit","args","fetch","inquire","fs","filename","readFile","fetchReadFileCallback","contents","binary","fetch_xhr","onreadystatechange","fetchOnReadyStateChange","responseText","Uint8Array","overrideMimeType","factory","Float32Array","f32","f8b","le","writeFloat_f32_cpy","val","buf","pos","writeFloat_f32_rev","writeFloatLE","writeFloatBE","readFloat_f32_cpy","readFloat_f32_rev","readFloatLE","readFloatBE","writeFloat_ieee754","writeUint","sign","isNaN","round","exponent","LN2","mantissa","pow","writeUintLE","writeUintBE","readFloat_ieee754","readUint","uint","NaN","Infinity","readUintLE","readUintBE","Float64Array","f64","writeDouble_f64_cpy","writeDouble_f64_rev","writeDoubleLE","writeDoubleBE","readDouble_f64_cpy","readDouble_f64_rev","readDoubleLE","readDoubleBE","writeDouble_ieee754","off0","off1","readDouble_ieee754","lo","hi","moduleName","mod","eval","isAbsolute","normalize","split","absolute","prefix","shift","originPath","includePath","alreadyNormalized","pool","alloc","size","SIZE","MAX","slab","pool_alloc","utf8","utf8_length","len","read","utf8_read","write","utf8_write","c1","c2","common","commonRe","json","nested","google","Any","fields","type_url","type","timeType","Duration","seconds","nanos","Timestamp","Empty","Struct","keyType","Value","oneofs","kind","oneof","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","NULL_VALUE","ListValue","rule","DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue","FieldMask","paths","file","converter","Enum","util","genValuePartial_fromObject","gen","field","fieldIndex","prop","resolvedType","repeated","typeDefault","fullName","isUnsigned","fromObject","mtype","fieldsArray","safeProp","genValuePartial_toObject","toObject","sort","compareFieldsById","repeatedFields","mapFields","normalFields","partOf","valuesById","long","low","high","unsigned","toNumber","bytes","hasKs2","_fieldsArray","indexOf","decoder","types","missing","filter","group","ref","basic","packed","rfield","required","encoder","genTypePartial","wireType","mapKey","optional","ReflectionObject","create","className","Namespace","comment","comments","TypeError","reserved","fromJSON","enm","toJSON","toJSONOptions","keepComments","add","isInteger","isReservedId","isReservedName","allow_alias","remove","Field","Type","ruleRe","extend","isObject","defaultValue","Long","extensionField","declaringField","_packed","defineProperty","getOption","setOption","ifNotSet","resolved","defaults","lookupTypeOrEnum","fromNumber","freeze","newBuffer","emptyObject","emptyArray","ctor","decorateField","fieldId","fieldType","fieldRule","decorateType","decorateEnum","fieldDecorator","fieldName","_configure","configure","Type_","build","load","root","Root","loadSync","verifier","OneOf","MapField","Service","Method","Message","wrappers","Writer","BufferWriter","Reader","BufferReader","rpc","roots","tokenize","resolvedKeyType","decorateMapField","fieldKeyType","fieldValueType","mapFieldDecorator","properties","$type","writer","encodeDelimited","reader","decodeDelimited","verify","object","requestType","requestStream","responseStream","resolvedRequestType","resolvedResponseType","lookupType","addJSON","arrayToJSON","array","obj","_nestedArray","clearCache","namespace","toArray","nestedArray","nestedJson","ns","names","methods","getEnum","prev","setOptions","onAdd","onRemove","define","ptr","part","resolveAll","lookup","filterTypes","parentAlreadyChecked","found","lookupEnum","lookupService","Service_","defineProperties","unshift","_handleAdd","_handleRemove","Root_","fieldNames","addFieldsToParent","self","decorateOneOf","oneOfDecorator","oneofName","oneOfGetter","oneOfSetter","keepCase","base10Re","base10NegRe","base16Re","base16NegRe","base8Re","base8NegRe","numberRe","nameRe","typeRefRe","fqTypeRefRe","tn","alternateCommentMode","next","peek","skip","cmnt","head","pkg","imports","weakImports","syntax","isProto3","applyCase","camelCase","illegal","token","insideTryCatch","line","readString","readValue","acceptTypeRef","parseNumber","readRanges","target","acceptStrings","parseId","substring","parseInt","parseFloat","acceptNegative","parsePackage","parseImport","whichImports","parseSyntax","parseCommon","parseOption","parseType","parseEnum","parseService","parseExtension","ifBlock","fnIf","fnElse","trailingLine","parseType_block","parseMapField","parseField","parseOneOf","extensions","parseGroup","parseField_block","parseField_line","parseInlineOptions","lcFirst","ucFirst","parseGroup_block","valueType","parseMapField_block","parseMapField_line","parseOneOf_block","parseEnum_block","parseEnumValue","dummy","parseEnumValue_block","parseEnumValue_line","isCustom","parseOptionValue","service","parseService_block","parseMethod","parseMethod_block","reference","parseExtension_block","LongBits","indexOutOfRange","writeLength","RangeError","create_array","create_typed_array","Buffer","create_buffer_setup","create_buffer","isBuffer","_slice","subarray","uint32","read_uint32_setup","read_uint32","int32","read_int32","sint32","read_sint32","readLongVarint","bits","bool","read_bool","readFixed32_end","fixed32","read_fixed32","sfixed32","read_sfixed32","readFixed64","float","read_float","double","read_double","read_bytes","read_string","skipType","BufferReader_","merge","int64","read_int64","uint64","read_uint64","sint64","read_sint64","zzDecode","fixed64","read_fixed64","sfixed64","read_sfixed64","read_string_buffer","utf8Slice","min","deferred","files","resolvePath","SYNC","sync","finish","cb","process","parsed","queued","weak","idx","lastIndexOf","altname","readFileSync","isNode","exposeRe","tryHandleExtension","extendedType","sisterField","parse_","common_","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","rpcCallback","endedByRPC","_methodsArray","inherited","methodsArray","rpcService","methodName","isReserved","m","q","s","delimRe","stringDoubleRe","stringSingleRe","setCommentRe","setCommentAltRe","setCommentSplitRe","whitespaceRe","unescapeRe","unescapeMap","unescape","commentType","commentText","commentLine","commentLineEmpty","stack","stringDelim","subject","re","lastIndex","exec","setComment","lookback","commentOffset","lines","trim","isDoubleSlashCommentLine","startOffset","endOffset","findEndOfLine","lineText","isComment","cursor","repeat","curr","isDoc","delim","expected","actual","equals","ret","_fieldsById","_oneofsArray","_ctor","fieldsById","oneofsArray","generateConstructor","ctorProperties","setup","wrapper","originalThis","encode_setup","fork","ldelim","decode_setup","verify_setup","typeName","typeDecorator","bake","o","safePropBackslashRe","safePropQuoteRe","toUpperCase","camelCaseRe","a","decorateRoot","enumerable","decorateEnumIndex","zero","zzEncode","zeroHash","from","fromString","toLong","fromHash","hash","toHash","mask","part0","part1","part2","versions","node","isFinite","isset","isSet","hasOwnProperty","utf8Write","_Buffer_from","_Buffer_allocUnsafe","sizeOrArray","dcodeIO","key2Re","key32Re","key64Re","longToHash","longFromHash","fromBits","dst","src","newError","CustomError","captureStackTrace","ProtocolError","getOneOf","fieldMap","setOneOf","longs","enums","Buffer_from","encoding","allocUnsafe","Buffer_allocUnsafe","invalid","genVerifyValue","genVerifyKey","seenFirstField","oneofProp","substr","Op","noop","State","tail","states","_push","writeByte","writeVarint32","VarintOp","write_uint32","write_int32","writeVarint64","write_sint32","write_uint64","write_sint64","write_bool","writeFixed32","write_fixed32","write_fixed64","write_float","write_double","writeBytes","writeBytes_set","writeBytes_for","write_bytes","write_string","reset","BufferWriter_","alloc_buffer","writeBytesBuffer","writeBytesBuffer_set","writeBytesBuffer_copy","copy","write_bytes_buffer","writeStringBuffer","write_string_buffer","byteLength","window","this","$protobuf","$Reader","$Writer","$util","$root","RequestBatch","Request","tag","incomingMessages","channelStats","serverStats","$oneOfFields","IncomingMessagesRequest","ChannelStatsRequest","ServerStatsRequest","messages","IncomingMessage","receivers","expiry","Receiver","Sender","channels","ChannelId","isPrivate","SenderType","ResponseBatch","responses","Response","outgoingMessages","OutgoingMessagesResponse","ChannelStatsResponse","JsonResponse","OutgoingMessage","created","ChannelStats","isOnline","ProtobufCodec","channelManager","extractMessages","pullEvent","responseBatch","Models","messageFields","extra","decodeId","compatibleMessage","text","encodeMessageBatch","userIds","element","userList","encodeMessageBatchInternal","messageBody","createMessageReceivers","channelList","publicChannel","encodeId","requestBatch","encodedId","hexByte","LegacyCodec","dataArray","RESTORE_WEBSOCKET_TIMEOUT","MAX_IDS_TO_STORE","PING_TIMEOUT","JSON_RPC_PING","JSON_RPC_PONG","LS_SESSION","ConnectorEvents","RevisionChanged","ChannelReplaced","ConfigExpired","ConnectionStatus","ConnectionError","Connector","connectors","webSocket","longPolling","connectPromises","pingWaitTimeout","reconnectTimeout","isWebsocketBlocked","isLongPollingBlocked","isManualDisconnect","_status","connectionAttempt","logger","storage","isSecure","globalThis","location","protocol","getConnectionPathByType","onWebSocketOpen","onIncomingMessage","onWebSocketDisconnect","onWebSocketError","isProtobufSupported","isJsonRpc","onLongPollingOpen","onLongPollingDisconnect","onLongPollingError","isWebSocketAllowed","eventName","jsonRpcAdapter","createRpcAdapter","codec","createCodec","time","history","lastMessageIds","messageCount","restoreSession","oldSession","ttl","detail","connector","handleRpcIncomingMessage","onRpcError","stop","stopCheckConfig","resetSession","setConfig","wasConnected","isConnected","publicChannels","reconnect","delay","scheduleReconnect","restoreWebSocketConnection","connectionDelay","getConnectionAttemptDelay","scheduleRestoreWebSocketConnection","restoreWebSocketTimeout","handleInternalPullEvent","action","channel","newChannel","new_channel","getConnectionBasePath","server","websocket_secure","websocket","long_pooling_secure","long_polling","getConnectionChannels","channelType","getConnectionPath","jwt","CHANNEL_ID","jsonRpc","binaryMode","isSharedMode","clientId","hostname","revision","publish_secure","publish","emitMessage","server_time_unix","timeShift","timeAgo","server_time_ago","attemptNumber","random","unloading","starting","isWebSocketEnabled","resolver","logForce","clearPingWaitTimeout","onWebSocketBlockChanged","isWebSocketBlocked","onJsonRpcPing","handleIncomingEvents","user_params","assign","dictionary","checkDuplicate","addMessageToStat","trimDuplicates","module_id","revision_web","checkRevision","event","updatePingWaitTimeout","updateSessionFromEvent","serverRevision","warn","getRevision","api","getServerVersion","version","getServerMode","mode","isWebSocketConnected","websocket_enabled","isPublishingSupported","isPublishingEnabled","publish_enabled","sendMessageBatch","packet","sendMessage","moduleId","sendMessageToChannels","subscribeUserStatusChange","unsubscribeUserStatusChange","getUsersLastSeen","every","unresolved","sendToQueueSever","restResponse","restData","ping","listChannels","onPingTimeout"],"mappings":"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"}