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/worker/dist/ |
Upload File : |
{"version":3,"file":"pull.worker.bundle.js","sources":["../../util/src/util.js","../src/bufferedlogger.js","../../client/src/consts.js","../../configholder/src/configholder.js","../../jsonrpc/src/errors/notconnected.js","../../jsonrpc/src/errors/timeout.js","../../jsonrpc/src/jsonrpc.js","../../connector/src/codec/channelmanager.js","../../connector/src/transport/base.js","../../connector/src/transport/websocket.js","../../connector/src/transport/longpolling.js","../../protobuf/protobuf.js","../../protobuf/model.js","../../connector/src/codec/models.js","../../connector/src/codec/protobuf.js","../../connector/src/codec/legacy.js","../../connector/src/connector.js","../../minirest/src/minirest.js","../src/worker.js","../src/index.js"],"sourcesContent":["/* 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","import { CircularBuffer } from '../../util/src/util';\n\nexport class BufferedLogger\n{\n\tbuffer: CircularBuffer;\n\n\tconstructor(bufferSize: number)\n\t{\n\t\tthis.buffer = new CircularBuffer(bufferSize);\n\t}\n\n\tgetAll()\n\t{\n\t\treturn this.buffer.getAll();\n\t}\n\n\tlog(...params)\n\t{\n\t\tthis.buffer.push({\n\t\t\ttime: new Date(),\n\t\t\tlevel: 'info',\n\t\t\tdata: params,\n\t\t});\n\n\t\tconsole.log(...params);\n\t}\n\n\twarn(...params)\n\t{\n\t\tthis.buffer.push({\n\t\t\ttime: new Date(),\n\t\t\tlevel: 'warn',\n\t\t\tdata: params,\n\t\t});\n\n\t\tconsole.warn(...params);\n\t}\n\n\terror(...params)\n\t{\n\t\tthis.buffer.push({\n\t\t\ttime: new Date(),\n\t\t\tlevel: 'error',\n\t\t\tdata: params,\n\t\t});\n\n\t\tconsole.error(...params);\n\t}\n}\n","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-native-events-binding */\n// noinspection ES6PreferShortImport\n\nimport { getTimestamp, isNumber, isPlainObject } from '../../util/src/util';\nimport { REVISION } from '../../client/src/consts';\nimport type { RestCaller } from '../../minirest/src/restcaller';\n\ntype ConfigHolderOptions = {\n\tconfigGetMethod: ?string,\n\trestClient: RestCaller,\n\tevents: { [k: $Values<typeof ConfigHolderEvents>]: (e: CustomEvent) => void }\n}\n\ntype ChannelDescription = {\n\tid: string,\n\tpublic_id: ?string,\n\ttype: string,\n\tstart: string, // DATE_ATOM\n\tend: string, // DATE_ATOM\n}\n\ntype PublicChannelDescription = {\n\tuser_id: number,\n\tpublic_id: string,\n\tsignature: string,\n\tstart: string, // DATE_ATOM\n\tend: string, // DATE_ATOM\n}\n\nexport type PullConfig = {\n\tapi: {\n\t\trevision_mobile: number,\n\t\trevision_web: number,\n\t},\n\tchannels: {\n\t\tprivate: ?ChannelDescription,\n\t\tshared: ?ChannelDescription,\n\t},\n\tpublicChannels: { [user_id: number]: PublicChannelDescription },\n\tserver: {\n\t\tconfig_timestamp: number,\n\t\tlong_polling: string,\n\t\tlong_pooling_secure: string,\n\t\tmode: string,\n\t\tpublish: string,\n\t\tpublish_enabled: boolean,\n\t\tpublish_secure: string,\n\t\tserver_enabled: boolean,\n\t\ttimeShift: number,\n\t\tversion: number,\n\t\twebsocket: string,\n\t\twebsocket_enabled: boolean,\n\t\twebsocket_secure: string,\n\t},\n\tclientId: null,\n\tjwt: null,\n\texp: 0,\n}\n\nconst CONFIG_CHECK_INTERVAL = 60000;\n\nexport const ConfigHolderEvents = {\n\tConfigExpired: 'configExpired',\n\tRevisionChanged: 'revisionChanged',\n};\n\nexport class ConfigHolder extends EventTarget\n{\n\tconfigGetMethod = 'pull.config.get';\n\trestClient: RestCaller;\n\n\tconfig: ?PullConfig;\n\n\tcheckInterval: ?number;\n\n\tconstructor(options: ConfigHolderOptions = {})\n\t{\n\t\tsuper();\n\n\t\tif (options.configGetMethod)\n\t\t{\n\t\t\tthis.configGetMethod = options.configGetMethod;\n\t\t}\n\t\tthis.restClient = options.restClient;\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\t}\n\n\tloadConfig(logTag): Promise<Config>\n\t{\n\t\tthis.stopCheckConfig();\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.restClient.callMethod(this.configGetMethod, { CACHE: 'N' }, undefined, undefined, logTag).then((response) => {\n\t\t\t\tconst data = response.data();\n\t\t\t\tconst timeShift = Math.floor((getTimestamp() - new Date(data.serverTime).getTime()) / 1000);\n\t\t\t\tdelete data.serverTime;\n\n\t\t\t\tthis.config = { ...data };\n\t\t\t\tthis.config.server.timeShift = timeShift;\n\t\t\t\tthis.startCheckConfig();\n\n\t\t\t\tresolve(this.config);\n\t\t\t}).catch((response) => {\n\t\t\t\tthis.config = undefined;\n\n\t\t\t\tconst error = response.error();\n\t\t\t\tif (error.getError().error === 'AUTHORIZE_ERROR' || error.getError().error === 'WRONG_AUTH_TYPE')\n\t\t\t\t{\n\t\t\t\t\terror.status = 403;\n\t\t\t\t}\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\tstartCheckConfig()\n\t{\n\t\tif (this.checkInterval)\n\t\t{\n\t\t\tclearInterval(this.checkInterval);\n\t\t}\n\n\t\tthis.checkInterval = setInterval(() => this.checkConfig(), CONFIG_CHECK_INTERVAL);\n\t}\n\n\tstopCheckConfig()\n\t{\n\t\tif (this.checkInterval)\n\t\t{\n\t\t\tclearInterval(this.checkInterval);\n\t\t}\n\t\tthis.checkInterval = null;\n\t}\n\n\tcheckConfig()\n\t{\n\t\tif (!this.isConfigActual(this.config))\n\t\t{\n\t\t\tthis.dispatchEvent(new CustomEvent(ConfigHolderEvents.ConfigExpired));\n\t\t}\n\t\telse if (this.config.api.revision_web !== REVISION)\n\t\t{\n\t\t\tthis.dispatchEvent(new CustomEvent(ConfigHolderEvents.RevisionChanged, {\n\t\t\t\tdetail: { revision: this.config.api.revision_web },\n\t\t\t}));\n\t\t}\n\t}\n\n\tisConfigActual(config): boolean\n\t{\n\t\tif (!isPlainObject(config))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (config.server.config_timestamp < this.configTimestamp)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tconst now = new Date();\n\n\t\tif (isNumber(config.exp) && config.exp > 0 && config.exp < now.getTime() / 1000)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tconst channelTypes = Object.keys(config.channels || {});\n\t\tif (channelTypes.length === 0)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (const channelType of channelTypes)\n\t\t{\n\t\t\tconst channel = config.channels[channelType];\n\t\t\tconst channelEnd = new Date(channel.end);\n\n\t\t\tif (channelEnd < now)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tdispose()\n\t{\n\t\tthis.stopCheckConfig();\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","/* eslint-disable max-classes-per-file */\n\nimport { buildQueryString, isNotEmptyString, isPlainObject } from '../../util/src/util';\n\nexport class MiniRest\n{\n\tsessid = '';\n\tqueryParams = {};\n\n\tconstructor(options = {})\n\t{\n\t\tif (isNotEmptyString(options.sessid))\n\t\t{\n\t\t\tthis.sessid = options.sessid;\n\t\t}\n\n\t\tif (isPlainObject(options.queryParams))\n\t\t{\n\t\t\tthis.queryParams = options.queryParams;\n\t\t}\n\t}\n\n\tasync callMethod(method: string, params: ?Object = {}, _ = null, __ = null, logTag: string = ''): Promise\n\t{\n\t\tconst lt = logTag ? `?logTag=${logTag}` : '';\n\t\tconst url = `/rest/${method}.json${lt}`;\n\n\t\tlet decoded = null;\n\t\tlet responseStatus = 0;\n\t\ttry\n\t\t{\n\t\t\tconst response = await fetch(url, this.getFetchOptions({ ...this.queryParams, ...params }));\n\t\t\tresponseStatus = response.status;\n\t\t\tdecoded = await response.json();\n\t\t}\n\t\tcatch\n\t\t{\n\t\t\tthrow new RestCompatResult(0, { error: 'NETWORK_ERROR', error_description: 'Network error' });\n\t\t}\n\n\t\tif (decoded && 'error' in decoded && decoded.error === 'session_failed' && 'sessid' in decoded && isNotEmptyString(decoded.sessid))\n\t\t{\n\t\t\tthis.sessid = decoded.sessid;\n\t\t\t// after setting sessid fetch options should differ\n\t\t\ttry\n\t\t\t{\n\t\t\t\tconst fallbackResponse = await fetch(url, this.getFetchOptions({ ...this.queryParams, ...params }));\n\t\t\t\tresponseStatus = fallbackResponse.status;\n\t\t\t\tdecoded = await fallbackResponse.json();\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tthrow new RestCompatResult(0, { error: 'NETWORK_ERROR', error_description: 'Network error' });\n\t\t\t}\n\t\t}\n\n\t\tconst result = new RestCompatResult(responseStatus, decoded);\n\t\tif (result.isError)\n\t\t{\n\t\t\tthrow result;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tgetFetchOptions(params: ?Object = {}): Object\n\t{\n\t\tconst query = buildQueryString({\n\t\t\tsessid: this.getSessid(),\n\t\t\t...params,\n\t\t});\n\n\t\treturn {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t\t'X-Bitrix-Csrf-Token': this.getSessid(),\n\t\t\t},\n\t\t\tcredentials: 'same-origin',\n\t\t\tbody: query,\n\t\t};\n\t}\n\n\tgetSessid(): string\n\t{\n\t\tif (this.sessid !== '')\n\t\t{\n\t\t\treturn this.sessid;\n\t\t}\n\n\t\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-typeof\n\t\tif (typeof BX !== 'undefined' && BX.bitrix_sessid)\n\t\t{\n\t\t\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-bx\n\t\t\treturn BX.bitrix_sessid();\n\t\t}\n\n\t\treturn '';\n\t}\n}\n\nclass RestCompatResult\n{\n\tconstructor(status, answer)\n\t{\n\t\tthis.isError = false;\n\t\tthis.status = status;\n\t\tthis.answer = answer;\n\n\t\tif (typeof this.answer.error !== 'undefined')\n\t\t{\n\t\t\tthis.isError = true;\n\t\t\tthis.answer.ex = new RestCompatError(this.status, typeof this.answer.error === 'string' ? this.answer : this.answer.error)\n\t\t}\n\t}\n\n\tdata()\n\t{\n\t\treturn this.answer.result;\n\t}\n\n\ttime()\n\t{\n\t\treturn this.answer.time;\n\t}\n\n\terror()\n\t{\n\t\treturn this.answer.ex;\n\t}\n}\n\nclass RestCompatError\n{\n\tconstructor(status, ex)\n\t{\n\t\tthis.status = status;\n\t\tthis.ex = ex;\n\t}\n\n\tgetError()\n\t{\n\t\treturn this.ex;\n\t}\n\n\tgetStatus()\n\t{\n\t\treturn this.status;\n\t}\n\n\ttoString(): string\n\t{\n\t\tconst description = this.ex.error_description ? `: ${this.ex.error_description}` : '';\n\n\t\treturn `${this.ex.error}${description} (${this.status})`;\n\t}\n}\n","/* eslint-disable @bitrix24/bitrix24-rules/no-native-events-binding */\n// noinspection ES6PreferShortImport\n\nimport { BufferedLogger } from './bufferedlogger';\nimport { ConfigHolder, ConfigHolderEvents } from '../../configholder/src/configholder';\nimport { Connector } from '../../connector/src/connector';\nimport type { Logger } from '../../connector/src/connector';\nimport { JsonRpc } from '../../jsonrpc/src/jsonrpc';\nimport { MiniRest } from '../../minirest/src/minirest';\nimport { CloseReasons, PullStatus } from '../../client/src/consts';\nimport type { JsonRpcResponse, Sender } from '../../jsonrpc/src/jsonrpc';\n\ntype Consumer = {\n\tport: MessagePort,\n\trpcAdapter: JsonRpc,\n\tdisconnectTimeout: null,\n\tuserSubscriptions: Set<number>, // userId\n}\n\nexport class Worker\n{\n\tconsumers: Consumer[] = [];\n\tconfigHolder: ConfigHolder;\n\tconnector: Connector;\n\tuserSubscriptions: Map<number, Set<MessagePort>> = new Map(); // userId -> set of subscribed ports\n\tstatus: $Values<typeof PullStatus> = PullStatus.Online;\n\tlogger: BufferedLogger;\n\n\tconstructor()\n\t{\n\t\tthis.restClient = new MiniRest();\n\t\tthis.logger = new BufferedLogger(100);\n\n\t\tthis.bindEvents();\n\t\tthis.init();\n\t}\n\n\tbindEvents()\n\t{\n\t\t/* eslint-disable no-undef */\n\t\t// globalThis seem to exist in all browsers supporting SharedWorker\n\t\tglobalThis.addEventListener('connect', this.onConnect.bind(this));\n\t\tglobalThis.addEventListener('offline', this.onOffline.bind(this));\n\t\tglobalThis.addEventListener('online', this.onOnline.bind(this));\n\t}\n\n\tasync init()\n\t{\n\t\tthis.configHolder = new ConfigHolder({\n\t\t\trestClient: this.restClient,\n\t\t\tevents: {\n\t\t\t\t[ConfigHolderEvents.ConfigExpired]: () => {\n\t\t\t\t\tthis.logger.log('Stale config detected. Restarting');\n\t\t\t\t\tthis.restart(CloseReasons.CONFIG_EXPIRED, 'config expired');\n\t\t\t\t},\n\t\t\t\t[ConfigHolderEvents.RevisionChanged]: this.onRevisionChanged.bind(this),\n\t\t\t},\n\t\t});\n\t\ttry\n\t\t{\n\t\t\tconst config = await this.configHolder.loadConfig('client_start');\n\t\t\tthis.connector = this.createConnector(config, this.restClient);\n\t\t\tawait this.connector.connect();\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tthis.logger.error('load config', e);\n\t\t\tthis.scheduleRestart(CloseReasons.BACKEND_ERROR, 'backend error');\n\t\t}\n\t}\n\n\tcreateConnector(config, restClient): Connector\n\t{\n\t\treturn new Connector({\n\t\t\tconfig,\n\t\t\trestClient,\n\t\t\trestoreSession: true,\n\t\t\tgetPublicListMethod: 'pull.channel.public.list',\n\t\t\tlogger: this.getLogger(),\n\t\t\tevents: {\n\t\t\t\tmessage: this.onConnectorMessage.bind(this),\n\t\t\t\tconnectionStatus: this.onConnectionStatus.bind(this),\n\t\t\t\trevisionChanged: this.onRevisionChanged.bind(this),\n\t\t\t\tchannelExpire: this.onChannelExpired.bind(this),\n\t\t\t\tconnectionError: this.onConnectionError.bind(this),\n\t\t\t},\n\t\t});\n\t}\n\n\tcreateRpcAdapter(port: MessagePort): JsonRpc\n\t{\n\t\tconst rpcAdapter = new JsonRpc({\n\t\t\tsender: this.createSender(port),\n\t\t\thandlers: {\n\t\t\t\tnotifyConfigTimestamp: this.handleNotifyConfigTimestamp.bind(this),\n\t\t\t\tnotifyLogin: this.handleNotifyLogin.bind(this),\n\t\t\t\tnotifyOnline: this.handleNotifyOnline.bind(this),\n\t\t\t\tnotifyOffline: this.handleNotifyOffline.bind(this),\n\t\t\t\tsetPublicIds: this.handleSetPublicIds.bind(this),\n\t\t\t\tsendMessage: this.handleSendMessage.bind(this),\n\t\t\t\tsendMessageBatch: this.handleSendMessageBatch.bind(this),\n\t\t\t\tsendMessageToChannels: this.handleSendMessageToChannels.bind(this),\n\t\t\t\tgetUsersLastSeen: this.handleGetUsersLastSeen.bind(this),\n\t\t\t\tlistChannels: this.handleListChannels.bind(this),\n\t\t\t\tsubscribeUserStatusChange: this.createSubscribeUserStatusChangeHandler(port),\n\t\t\t\tunsubscribeUserStatusChange: this.createUnsubscribeUserStatusChangeHandler(port),\n\t\t\t\tbye: this.createByeHandler(port),\n\t\t\t\t// used for manual debug\n\t\t\t\tping: this.handlePing.bind(this),\n\t\t\t\tgetConfig: this.handleGetConfig.bind(this),\n\t\t\t\tgetLog: this.handleGetLog.bind(this),\n\t\t\t},\n\t\t\tevents: {},\n\t\t});\n\n\t\tport.addEventListener('message', (me: MessageEvent) => rpcAdapter.handleIncomingMessage(me.data));\n\n\t\treturn rpcAdapter;\n\t}\n\n\tcreateSender(port: MessagePort): Sender\n\t{\n\t\treturn {\n\t\t\tsend: (m: string): boolean => {\n\t\t\t\tport.postMessage(m);\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t};\n\t}\n\n\tgetLogger(): Logger\n\t{\n\t\treturn {\n\t\t\tlog: (message, ...params) => {\n\t\t\t\tthis.logger.log(message, ...params);\n\t\t\t},\n\t\t\tlogForce: (message, ...params) => {\n\t\t\t\tthis.logger.log(message, ...params);\n\t\t\t},\n\t\t};\n\t}\n\n\tscheduleRestart(disconnectCode, disconnectReason, restartDelay)\n\t{\n\t\tclearTimeout(this.restartTimeout);\n\t\tlet delay = restartDelay;\n\t\tif (!delay || delay < 1)\n\t\t{\n\t\t\tdelay = Math.ceil(Math.random() * 30) + 5;\n\t\t}\n\n\t\tthis.restartTimeout = setTimeout(\n\t\t\t() => this.restart(disconnectCode, disconnectReason),\n\t\t\tdelay * 1000,\n\t\t);\n\t}\n\n\tremoveConsumer(port: MessagePort)\n\t{\n\t\tconst consumerIndex = this.consumers.findIndex((consumer: Consumer) => consumer.port === port);\n\t\tif (consumerIndex !== -1)\n\t\t{\n\t\t\tconst consumer = this.consumers[consumerIndex];\n\t\t\tfor (const [userId] of consumer.userSubscriptions.entries())\n\t\t\t{\n\t\t\t\tthis.unsubscribeUserStatus(userId, port);\n\t\t\t}\n\t\t\tthis.consumers.splice(consumerIndex, 1);\n\t\t}\n\t}\n\n\tasync restart(disconnectCode = CloseReasons.NORMAL_CLOSURE, disconnectReason = 'manual restart')\n\t{\n\t\tconst loadConfigReason = `${disconnectCode}_${disconnectReason.replaceAll(' ', '_')}`;\n\t\tthis.connector?.disconnect(disconnectCode, disconnectReason);\n\t\ttry\n\t\t{\n\t\t\tconst config = await this.configHolder.loadConfig(loadConfigReason);\n\t\t\tif (this.connector)\n\t\t\t{\n\t\t\t\tthis.connector.setConfig(config);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.connector = this.createConnector(config, this.restClient);\n\t\t\t}\n\t\t\tawait this.connector.connect();\n\t\t}\n\t\tcatch (e)\n\t\t{\n\t\t\tthis.logger.error('load config', e);\n\t\t\tthis.scheduleRestart(CloseReasons.BACKEND_ERROR, 'backend error');\n\t\t}\n\t}\n\n\tasync handleSendMessage({ users, moduleId, command, params, expiry }): void\n\t{\n\t\treturn this.connector.sendMessage(users, moduleId, command, params, expiry);\n\t}\n\n\tasync handleSendMessageBatch({ messageBatch }): void\n\t{\n\t\treturn this.connector.sendMessageBatch(messageBatch);\n\t}\n\n\tasync handleSendMessageToChannels({ publicChannels, moduleId, command, params, expiry }): void\n\t{\n\t\treturn this.connector.sendMessageToChannels(publicChannels, moduleId, command, params, expiry);\n\t}\n\n\thandleNotifyConfigTimestamp({ configTimestamp })\n\t{\n\t\tconst config = this.configHolder?.config || {};\n\t\tif (config && config.server && config.server.config_timestamp !== configTimestamp)\n\t\t{\n\t\t\tthis.restart(CloseReasons.CONFIG_EXPIRED, 'config expired');\n\t\t}\n\t}\n\n\thandleNotifyLogin()\n\t{\n\t\tthis.restart(CloseReasons.NORMAL_CLOSURE, 'desktop login');\n\t}\n\n\thandleNotifyOnline()\n\t{\n\t\tif (this.connector && !this.connector.isConnected())\n\t\t{\n\t\t\tthis.connector.connect();\n\t\t}\n\t}\n\n\thandleNotifyOffline()\n\t{\n\t\tthis.connector?.disconnect('1000', 'offline');\n\t}\n\n\thandleSetPublicIds({ publicIds })\n\t{\n\t\tthis.connector.setPublicIds(publicIds);\n\t}\n\n\tasync handleGetUsersLastSeen({ userList }): Promise<{ [number]: number }>\n\t{\n\t\treturn this.connector.getUsersLastSeen(userList);\n\t}\n\n\tasync handleListChannels(): Promise<JsonRpcResponse>\n\t{\n\t\treturn this.connector.listChannels();\n\t}\n\n\thandlePing()\n\t{\n\t\treturn 'pong';\n\t}\n\n\thandleGetLog()\n\t{\n\t\treturn this.logger.getAll();\n\t}\n\n\thandleGetConfig()\n\t{\n\t\treturn { config: this.configHolder.config };\n\t}\n\n\tcreateSubscribeUserStatusChangeHandler(port: MessagePort): ({ userId: number }) => void\n\t{\n\t\treturn ({ userId }) => {\n\t\t\tif (this.userSubscriptions.has(userId))\n\t\t\t{\n\t\t\t\tthis.userSubscriptions.get(userId).add(port);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst newSet = new Set();\n\t\t\t\tnewSet.add(port);\n\t\t\t\tthis.userSubscriptions.set(userId, newSet);\n\t\t\t}\n\n\t\t\tthis.connector.subscribeUserStatusChange(userId);\n\t\t};\n\t}\n\n\tcreateUnsubscribeUserStatusChangeHandler(port: MessagePort): ({ userId: number }) => void\n\t{\n\t\treturn ({ userId }) => {\n\t\t\tthis.unsubscribeUserStatus(userId, port);\n\t\t};\n\t}\n\n\tcreateByeHandler(port: MessagePort): () => void\n\t{\n\t\treturn () => {\n\t\t\tthis.removeConsumer(port);\n\t\t};\n\t}\n\n\tunsubscribeUserStatus(userId: number, port: MessagePort)\n\t{\n\t\tif (!this.userSubscriptions.has(userId))\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tconst ports = this.userSubscriptions.get(userId);\n\t\tports.delete(port);\n\t\tif (ports.size === 0)\n\t\t{\n\t\t\tthis.userSubscriptions.delete(userId);\n\t\t\tthis.connector.unsubscribeUserStatusChange(userId);\n\t\t}\n\n\t\tconst consumerIndex = this.consumers.findIndex((consumer: Consumer) => consumer.port === port);\n\t\tif (consumerIndex !== -1)\n\t\t{\n\t\t\tthis.consumers[consumerIndex].userSubscriptions.delete(userId);\n\t\t}\n\t}\n\n\tsendConnectionStatus(rpcAdapter: JsonRpc)\n\t{\n\t\trpcAdapter.executeOutgoingRpcCommand(\n\t\t\t'connectionStatusChanged',\n\t\t\t{\n\t\t\t\tstatus: this.status,\n\t\t\t\tconnectionType: this.connector.connectionType,\n\t\t\t\tisJsonRpc: this.connector.isJsonRpc(),\n\t\t\t},\n\t\t\t0,\n\t\t);\n\t}\n\n\tonConnectorMessage(e: CustomEvent)\n\t{\n\t\tthis.consumers.forEach((consumer) => {\n\t\t\tconsumer.rpcAdapter.executeOutgoingRpcCommand('incomingMessage', { payload: e.detail }, 0);\n\t\t});\n\t}\n\n\tonConnectionStatus(e: CustomEvent)\n\t{\n\t\tthis.status = e.detail.status;\n\t\tthis.consumers.forEach((consumer) => {\n\t\t\tthis.sendConnectionStatus(consumer.rpcAdapter);\n\t\t});\n\t}\n\n\tonChannelExpired()\n\t{\n\t\tthis.restart();\n\t}\n\n\tonConnectionError(e: CustomEvent)\n\t{\n\t\tif (e.detail.code === CloseReasons.WRONG_CHANNEL_ID)\n\t\t{\n\t\t\tthis.scheduleRestart(CloseReasons.WRONG_CHANNEL_ID, 'wrong channel signature');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.restart(e.detail.code, e.detail.reason);\n\t\t}\n\t}\n\n\tonRevisionChanged = (e: CustomEvent) => {\n\t\tthis.consumers.forEach((consumer) => {\n\t\t\tconsumer.rpcAdapter.executeOutgoingRpcCommand('revisionChanged', { revision: e.detail.revision }, 0);\n\t\t});\n\t};\n\n\tonConnect(e: MessageEvent)\n\t{\n\t\tconst port = e.ports[0];\n\t\tport.start();\n\t\tconst rpcAdapter = this.createRpcAdapter(port);\n\t\tconst userSubscriptions = new Set();\n\n\t\tthis.consumers.push({ port, rpcAdapter, userSubscriptions });\n\t\trpcAdapter.executeOutgoingRpcCommand('ready');\n\t\tif (this.connector)\n\t\t{\n\t\t\tthis.sendConnectionStatus(rpcAdapter);\n\t\t}\n\t}\n\n\tonOffline()\n\t{\n\t\tthis.logger.log('offline');\n\t\tthis.connector?.disconnect('1000', 'offline');\n\t}\n\n\tonOnline()\n\t{\n\t\tthis.logger.log('online');\n\t\tthis.connector?.connect();\n\t}\n}\n","import { Worker } from './worker';\n\nexport const workerInstance = new Worker();\n"],"names":["browser","IsChrome","navigator","userAgent","toLowerCase","includes","IsFirefox","IsIe","match","getTimestamp","Date","now","isString","item","String","isArray","Object","prototype","toString","call","isFunction","Function","isNumber","Number","isFinite","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","CircularBuffer","capacity","pointer","Error","storage","push","element","getAll","BufferedLogger","bufferSize","buffer","log","time","level","data","console","warn","error","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","CONFIG_CHECK_INTERVAL","ConfigHolderEvents","ConfigExpired","RevisionChanged","ConfigHolder","EventTarget","options","configGetMethod","restClient","eventName","events","addEventListener","loadConfig","logTag","stopCheckConfig","Promise","resolve","reject","callMethod","CACHE","undefined","then","response","timeShift","floor","serverTime","getTime","config","server","startCheckConfig","catch","getError","status","checkInterval","clearInterval","setInterval","checkConfig","isConfigActual","dispatchEvent","CustomEvent","api","revision_web","detail","revision","config_timestamp","configTimestamp","exp","channelTypes","channels","channelType","channel","channelEnd","end","dispose","ErrorNotConnected","message","name","ErrorTimeout","JSON_RPC_VERSION","RpcError","Parse","code","InvalidRequest","MethodNotFound","InvalidParams","Internal","JsonRpc","idCounter","handlers","rpcResponseAwaiters","Map","sender","handle","eventType","handler","executeOutgoingRpcCommand","timeout","request","createRequest","send","JSON","stringify","t","setTimeout","delete","id","set","executeOutgoingRpcBatch","batch","requests","promises","forEach","processRpcResponse","has","awaiter","get","clearTimeout","handleIncomingMessage","decoded","parse","e","Utils","executeIncomingRpcBatch","commandResult","executeIncomingRpcCommand","createErrorResponse","createResponse","command","nextId","createPublishRequest","messageBatch","map","ChannelManager","publicIds","BX","rest","getPublicListMethod","getPublicIds","users","unknownUsers","userId","setPublicIds","values","publicIdDescriptor","user_id","publicId","public_id","signature","start","AbstractConnector","_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","destroy","LONG_POLLING_TIMEOUT","LongPollingConnector","active","requestTimeout","failureTimeout","requestAborted","xhr","createXhr","isBinary","XMLHttpRequest","responseType","onXhrReadyStateChange","performRequest","abort","onRequestTimeout","open","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","scopeKeys","scopeParams","scopeValues","scopeOffset","formatParams","formatOffset","replace","$0","$1","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","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","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","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","ChannelReplaced","ConnectionStatus","ConnectionError","Connector","connectors","webSocket","longPolling","connectPromises","pingWaitTimeout","reconnectTimeout","isWebsocketBlocked","isLongPollingBlocked","isManualDisconnect","_status","connectionAttempt","logger","isSecure","globalThis","location","protocol","getConnectionPathByType","onWebSocketOpen","onIncomingMessage","onWebSocketDisconnect","onWebSocketError","isProtobufSupported","isJsonRpc","onLongPollingOpen","onLongPollingDisconnect","onLongPollingError","isWebSocketAllowed","jsonRpcAdapter","createRpcAdapter","codec","createCodec","history","lastMessageIds","messageCount","restoreSession","oldSession","ttl","connector","handleRpcIncomingMessage","onRpcError","stop","resetSession","setConfig","wasConnected","isConnected","publicChannels","reconnect","delay","scheduleReconnect","restoreWebSocketConnection","connectionDelay","getConnectionAttemptDelay","scheduleRestoreWebSocketConnection","restoreWebSocketTimeout","handleInternalPullEvent","action","newChannel","new_channel","getConnectionBasePath","websocket_secure","websocket","long_pooling_secure","long_polling","getConnectionChannels","getConnectionPath","jwt","CHANNEL_ID","jsonRpc","binaryMode","isSharedMode","clientId","hostname","publish_secure","publish","emitMessage","server_time_unix","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","checkRevision","event","updatePingWaitTimeout","updateSessionFromEvent","serverRevision","getRevision","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","MiniRest","sessid","queryParams","_","__","lt","url","responseStatus","getFetchOptions","RestCompatResult","error_description","fallbackResponse","isError","query","getSessid","headers","credentials","bitrix_sessid","answer","ex","RestCompatError","getStatus","description","Worker","consumers","userSubscriptions","onRevisionChanged","consumer","rpcAdapter","bindEvents","init","onConnect","onOffline","onOnline","configHolder","restart","createConnector","scheduleRestart","getLogger","onConnectorMessage","connectionStatus","onConnectionStatus","revisionChanged","channelExpire","onChannelExpired","connectionError","onConnectionError","port","createSender","notifyConfigTimestamp","handleNotifyConfigTimestamp","notifyLogin","handleNotifyLogin","notifyOnline","handleNotifyOnline","notifyOffline","handleNotifyOffline","handleSetPublicIds","handleSendMessage","handleSendMessageBatch","handleSendMessageToChannels","handleGetUsersLastSeen","handleListChannels","createSubscribeUserStatusChangeHandler","createUnsubscribeUserStatusChangeHandler","bye","createByeHandler","handlePing","getConfig","handleGetConfig","getLog","handleGetLog","me","postMessage","restartDelay","restartTimeout","removeConsumer","consumerIndex","findIndex","unsubscribeUserStatus","loadConfigReason","replaceAll","newSet","Set","ports","sendConnectionStatus","payload","workerInstance"],"mappings":"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"}