@multiplayer-app/session-recorder-browser 1.2.7 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack://MultiplayerExporters/webpack/universalModuleDefinition","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/api/context.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/api/diag.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/api/trace.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/context-api.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/context/context.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/diag-api.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/diag/types.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/internal/global-utils.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/internal/semver.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace-api.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/context-utils.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/status.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/version.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/core/build/esm/ExportResult.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/core/build/esm/common/time.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/core/build/esm/platform/browser/performance.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/exporter-trace-otlp-http/build/esm/platform/browser/OTLPTraceExporter.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/OTLPExporterBase.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/bounded-queue-export-promise-handler.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/configuration/convert-legacy-browser-http-options.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/configuration/create-legacy-browser-delegate.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/configuration/otlp-http-configuration.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/configuration/shared-configuration.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/is-export-retryable.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/logging-response-handler.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/otlp-browser-http-export-delegate.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/otlp-export-delegate.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/otlp-network-export-delegate.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/retrying-transport.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/transport/send-beacon-transport.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/transport/xhr-transport.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/types.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/util.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/common/hex-to-binary.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/common/internal.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/common/utils.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/trace/internal.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/trace/json/trace.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.js","webpack://MultiplayerExporters/../../node_modules/events/events.js","webpack://MultiplayerExporters/../../node_modules/lodash.isequal/index.js","webpack://MultiplayerExporters/../../node_modules/lodash.keys/index.js","webpack://MultiplayerExporters/../../node_modules/lodash.merge/index.js","webpack://MultiplayerExporters/../../node_modules/lodash.xor/index.js","webpack://MultiplayerExporters/../../node_modules/to-json-schema/lib/helpers.js","webpack://MultiplayerExporters/../../node_modules/to-json-schema/lib/index.js","webpack://MultiplayerExporters/../../node_modules/to-json-schema/lib/jsonSchemaHelpers.js","webpack://MultiplayerExporters/./src/config/constants.ts","webpack://MultiplayerExporters/./src/config/defaults.ts","webpack://MultiplayerExporters/./src/config/masking.ts","webpack://MultiplayerExporters/./src/config/validators.ts","webpack://MultiplayerExporters/./src/eventBus.ts","webpack://MultiplayerExporters/./src/rrweb/exporter.ts","webpack://MultiplayerExporters/./src/services/messaging.service.ts","webpack://MultiplayerExporters/./src/types/session.ts","webpack://MultiplayerExporters/./src/types/sessionRecorder.ts","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/SessionRecorderIdGenerator.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/SessionRecorderTraceIdRatioBasedSampler.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/constants/constants.base.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/exporters/SessionRecorderBrowserTraceExporter.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/sdk/id-generator.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/sdk/mask.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/sdk/schemify.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/type/session-type.enum.js","webpack://MultiplayerExporters/../../node_modules/@socket.io/component-emitter/lib/esm/index.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/contrib/has-cors.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/contrib/parseqs.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/contrib/parseuri.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/contrib/yeast.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/globalThis.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/index.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/socket.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transport.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/index.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/polling.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/websocket.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/webtransport.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/util.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/commons.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/index.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/contrib/backo2.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/index.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/manager.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/on.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/socket.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/url.js","webpack://MultiplayerExporters/../../node_modules/socket.io-parser/build/esm/binary.js","webpack://MultiplayerExporters/../../node_modules/socket.io-parser/build/esm/index.js","webpack://MultiplayerExporters/../../node_modules/socket.io-parser/build/esm/is-binary.js","webpack://MultiplayerExporters/webpack/bootstrap","webpack://MultiplayerExporters/webpack/runtime/compat get default export","webpack://MultiplayerExporters/webpack/runtime/define property getters","webpack://MultiplayerExporters/webpack/runtime/global","webpack://MultiplayerExporters/webpack/runtime/hasOwnProperty shorthand","webpack://MultiplayerExporters/webpack/runtime/make namespace object","webpack://MultiplayerExporters/webpack/runtime/node module decorator","webpack://MultiplayerExporters/./src/exporters.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MultiplayerExporters\"] = factory();\n\telse\n\t\troot[\"MultiplayerExporters\"] = factory();\n})(this, () => {\nreturn ","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nimport { DiagAPI } from './diag';\nvar API_NAME = 'context';\nvar NOOP_CONTEXT_MANAGER = new NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nvar ContextAPI = /** @class */ (function () {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n function ContextAPI() {\n }\n /** Get the singleton instance of the Context API */\n ContextAPI.getInstance = function () {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n return this._instance;\n };\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n ContextAPI.prototype.setGlobalContextManager = function (contextManager) {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n };\n /**\n * Get the currently active context\n */\n ContextAPI.prototype.active = function () {\n return this._getContextManager().active();\n };\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n ContextAPI.prototype.with = function (context, fn, thisArg) {\n var _a;\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], __read(args), false));\n };\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n ContextAPI.prototype.bind = function (context, target) {\n return this._getContextManager().bind(context, target);\n };\n ContextAPI.prototype._getContextManager = function () {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n };\n /** Disable and remove the global context manager */\n ContextAPI.prototype.disable = function () {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n };\n return ContextAPI;\n}());\nexport { ContextAPI };\n//# sourceMappingURL=context.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport { DiagLogLevel, } from '../diag/types';\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nvar API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nvar DiagAPI = /** @class */ (function () {\n /**\n * Private internal constructor\n * @private\n */\n function DiagAPI() {\n function _logProxy(funcName) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger)\n return;\n return logger[funcName].apply(logger, __spreadArray([], __read(args), false));\n };\n }\n // Using self local variable for minification purposes as 'this' cannot be minified\n var self = this;\n // DiagAPI specific functions\n var setLogger = function (logger, optionsOrLogLevel) {\n var _a, _b, _c;\n if (optionsOrLogLevel === void 0) { optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }; }\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n return false;\n }\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n var oldLogger = getGlobal('diag');\n var newLogger = createLogLevelDiagLogger((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : DiagLogLevel.INFO, logger);\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n var stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '<failed to generate stacktrace>';\n oldLogger.warn(\"Current logger will be overwritten from \" + stack);\n newLogger.warn(\"Current logger will overwrite one already registered from \" + stack);\n }\n return registerGlobal('diag', newLogger, self, true);\n };\n self.setLogger = setLogger;\n self.disable = function () {\n unregisterGlobal(API_NAME, self);\n };\n self.createComponentLogger = function (options) {\n return new DiagComponentLogger(options);\n };\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n /** Get the singleton instance of the DiagAPI API */\n DiagAPI.instance = function () {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n return this._instance;\n };\n return DiagAPI;\n}());\nexport { DiagAPI };\n//# sourceMappingURL=diag.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport { isSpanContextValid, wrapSpanContext, } from '../trace/spancontext-utils';\nimport { deleteSpan, getActiveSpan, getSpan, getSpanContext, setSpan, setSpanContext, } from '../trace/context-utils';\nimport { DiagAPI } from './diag';\nvar API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nvar TraceAPI = /** @class */ (function () {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n function TraceAPI() {\n this._proxyTracerProvider = new ProxyTracerProvider();\n this.wrapSpanContext = wrapSpanContext;\n this.isSpanContextValid = isSpanContextValid;\n this.deleteSpan = deleteSpan;\n this.getSpan = getSpan;\n this.getActiveSpan = getActiveSpan;\n this.getSpanContext = getSpanContext;\n this.setSpan = setSpan;\n this.setSpanContext = setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n TraceAPI.getInstance = function () {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n };\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n TraceAPI.prototype.setGlobalTracerProvider = function (provider) {\n var success = registerGlobal(API_NAME, this._proxyTracerProvider, DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n };\n /**\n * Returns the global tracer provider.\n */\n TraceAPI.prototype.getTracerProvider = function () {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n };\n /**\n * Returns a tracer from the global tracer provider.\n */\n TraceAPI.prototype.getTracer = function (name, version) {\n return this.getTracerProvider().getTracer(name, version);\n };\n /** Remove the global tracer provider */\n TraceAPI.prototype.disable = function () {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n };\n return TraceAPI;\n}());\nexport { TraceAPI };\n//# sourceMappingURL=trace.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport var context = ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ROOT_CONTEXT } from './context';\nvar NoopContextManager = /** @class */ (function () {\n function NoopContextManager() {\n }\n NoopContextManager.prototype.active = function () {\n return ROOT_CONTEXT;\n };\n NoopContextManager.prototype.with = function (_context, fn, thisArg) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n return fn.call.apply(fn, __spreadArray([thisArg], __read(args), false));\n };\n NoopContextManager.prototype.bind = function (_context, target) {\n return target;\n };\n NoopContextManager.prototype.enable = function () {\n return this;\n };\n NoopContextManager.prototype.disable = function () {\n return this;\n };\n return NoopContextManager;\n}());\nexport { NoopContextManager };\n//# sourceMappingURL=NoopContextManager.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\nvar BaseContext = /** @class */ (function () {\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n function BaseContext(parentContext) {\n // for minification\n var self = this;\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n self.getValue = function (key) { return self._currentContext.get(key); };\n self.setValue = function (key, value) {\n var context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n self.deleteValue = function (key) {\n var context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n return BaseContext;\n}());\n/** The root context is used as the default parent context when there is no active context */\nexport var ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './api/diag';\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n */\nexport var diag = DiagAPI.instance();\n//# sourceMappingURL=diag-api.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getGlobal } from '../internal/global-utils';\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nvar DiagComponentLogger = /** @class */ (function () {\n function DiagComponentLogger(props) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n DiagComponentLogger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('debug', this._namespace, args);\n };\n DiagComponentLogger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('error', this._namespace, args);\n };\n DiagComponentLogger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('info', this._namespace, args);\n };\n DiagComponentLogger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('warn', this._namespace, args);\n };\n DiagComponentLogger.prototype.verbose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('verbose', this._namespace, args);\n };\n return DiagComponentLogger;\n}());\nexport { DiagComponentLogger };\nfunction logProxy(funcName, namespace, args) {\n var logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n args.unshift(namespace);\n return logger[funcName].apply(logger, __spreadArray([], __read(args), false));\n}\n//# sourceMappingURL=ComponentLogger.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DiagLogLevel } from '../types';\nexport function createLogLevelDiagLogger(maxLevel, logger) {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n }\n else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n // In case the logger is null or undefined\n logger = logger || {};\n function _filterFunc(funcName, theLevel) {\n var theFunc = logger[funcName];\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () { };\n }\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n//# sourceMappingURL=logLevelLogger.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nexport var DiagLogLevel;\n(function (DiagLogLevel) {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n /** Identifies an error scenario */\n DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n /** Identifies a warning scenario */\n DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n /** General informational log message */\n DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n /** General debug log message */\n DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n /** Used to set the logging level to include all logging */\n DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel || (DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { _globalThis } from '../platform';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\nvar major = VERSION.split('.')[0];\nvar GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\"opentelemetry.js.api.\" + major);\nvar _global = _globalThis;\nexport function registerGlobal(type, instance, diag, allowOverride) {\n var _a;\n if (allowOverride === void 0) { allowOverride = false; }\n var api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n version: VERSION,\n });\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n var err = new Error(\"@opentelemetry/api: Attempted duplicate registration of API: \" + type);\n diag.error(err.stack || err.message);\n return false;\n }\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n var err = new Error(\"@opentelemetry/api: Registration of version v\" + api.version + \" for \" + type + \" does not match previously registered API v\" + VERSION);\n diag.error(err.stack || err.message);\n return false;\n }\n api[type] = instance;\n diag.debug(\"@opentelemetry/api: Registered a global for \" + type + \" v\" + VERSION + \".\");\n return true;\n}\nexport function getGlobal(type) {\n var _a, _b;\n var globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexport function unregisterGlobal(type, diag) {\n diag.debug(\"@opentelemetry/api: Unregistering a global for \" + type + \" v\" + VERSION + \".\");\n var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n if (api) {\n delete api[type];\n }\n}\n//# sourceMappingURL=global-utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { VERSION } from '../version';\nvar re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nexport function _makeCompatibilityCheck(ownVersion) {\n var acceptedVersions = new Set([ownVersion]);\n var rejectedVersions = new Set();\n var myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return function () { return false; };\n }\n var ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion) {\n return globalVersion === ownVersion;\n };\n }\n function _reject(v) {\n rejectedVersions.add(v);\n return false;\n }\n function _accept(v) {\n acceptedVersions.add(v);\n return true;\n }\n return function isCompatible(globalVersion) {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n var globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n var globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n if (ownVersionParsed.major === 0) {\n if (ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n }\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n };\n}\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexport var isCompatible = _makeCompatibilityCheck(VERSION);\n//# sourceMappingURL=semver.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Updates to this file should also be replicated to @opentelemetry/core too.\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - <object> (When all else fails)\n */\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport var _globalThis = typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : {};\n//# sourceMappingURL=globalThis.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport var trace = TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nvar NonRecordingSpan = /** @class */ (function () {\n function NonRecordingSpan(_spanContext) {\n if (_spanContext === void 0) { _spanContext = INVALID_SPAN_CONTEXT; }\n this._spanContext = _spanContext;\n }\n // Returns a SpanContext.\n NonRecordingSpan.prototype.spanContext = function () {\n return this._spanContext;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setAttribute = function (_key, _value) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setAttributes = function (_attributes) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.addEvent = function (_name, _attributes) {\n return this;\n };\n NonRecordingSpan.prototype.addLink = function (_link) {\n return this;\n };\n NonRecordingSpan.prototype.addLinks = function (_links) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setStatus = function (_status) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.updateName = function (_name) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.end = function (_endTime) { };\n // isRecording always returns false for NonRecordingSpan.\n NonRecordingSpan.prototype.isRecording = function () {\n return false;\n };\n // By default does nothing\n NonRecordingSpan.prototype.recordException = function (_exception, _time) { };\n return NonRecordingSpan;\n}());\nexport { NonRecordingSpan };\n//# sourceMappingURL=NonRecordingSpan.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ContextAPI } from '../api/context';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { isSpanContextValid } from './spancontext-utils';\nvar contextApi = ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nvar NoopTracer = /** @class */ (function () {\n function NoopTracer() {\n }\n // startSpan starts a noop span.\n NoopTracer.prototype.startSpan = function (name, options, context) {\n if (context === void 0) { context = contextApi.active(); }\n var root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n if (root) {\n return new NonRecordingSpan();\n }\n var parentFromContext = context && getSpanContext(context);\n if (isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)) {\n return new NonRecordingSpan(parentFromContext);\n }\n else {\n return new NonRecordingSpan();\n }\n };\n NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) {\n var opts;\n var ctx;\n var fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n var parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n var span = this.startSpan(name, opts, parentContext);\n var contextWithSpanSet = setSpan(parentContext, span);\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n };\n return NoopTracer;\n}());\nexport { NoopTracer };\nfunction isSpanContext(spanContext) {\n return (typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NoopTracer } from './NoopTracer';\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nvar NoopTracerProvider = /** @class */ (function () {\n function NoopTracerProvider() {\n }\n NoopTracerProvider.prototype.getTracer = function (_name, _version, _options) {\n return new NoopTracer();\n };\n return NoopTracerProvider;\n}());\nexport { NoopTracerProvider };\n//# sourceMappingURL=NoopTracerProvider.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NoopTracer } from './NoopTracer';\nvar NOOP_TRACER = new NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nvar ProxyTracer = /** @class */ (function () {\n function ProxyTracer(_provider, name, version, options) {\n this._provider = _provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n ProxyTracer.prototype.startSpan = function (name, options, context) {\n return this._getTracer().startSpan(name, options, context);\n };\n ProxyTracer.prototype.startActiveSpan = function (_name, _options, _context, _fn) {\n var tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n };\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n ProxyTracer.prototype._getTracer = function () {\n if (this._delegate) {\n return this._delegate;\n }\n var tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!tracer) {\n return NOOP_TRACER;\n }\n this._delegate = tracer;\n return this._delegate;\n };\n return ProxyTracer;\n}());\nexport { ProxyTracer };\n//# sourceMappingURL=ProxyTracer.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nvar NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n */\nvar ProxyTracerProvider = /** @class */ (function () {\n function ProxyTracerProvider() {\n }\n /**\n * Get a {@link ProxyTracer}\n */\n ProxyTracerProvider.prototype.getTracer = function (name, version, options) {\n var _a;\n return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer(this, name, version, options));\n };\n ProxyTracerProvider.prototype.getDelegate = function () {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n };\n /**\n * Set the delegate tracer provider\n */\n ProxyTracerProvider.prototype.setDelegate = function (delegate) {\n this._delegate = delegate;\n };\n ProxyTracerProvider.prototype.getDelegateTracer = function (name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n };\n return ProxyTracerProvider;\n}());\nexport { ProxyTracerProvider };\n//# sourceMappingURL=ProxyTracerProvider.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContextKey } from '../context/context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n/**\n * span key\n */\nvar SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context) {\n return context.getValue(SPAN_KEY) || undefined;\n}\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan() {\n return getSpan(ContextAPI.getInstance().active());\n}\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context, span) {\n return context.setValue(SPAN_KEY, span);\n}\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context) {\n return context.deleteValue(SPAN_KEY);\n}\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(context, spanContext) {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context) {\n var _a;\n return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\n//# sourceMappingURL=context-utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TraceFlags } from './trace_flags';\nexport var INVALID_SPANID = '0000000000000000';\nexport var INVALID_TRACEID = '00000000000000000000000000000000';\nexport var INVALID_SPAN_CONTEXT = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nvar VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nvar VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\nexport function isValidTraceId(traceId) {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\nexport function isValidSpanId(spanId) {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext) {\n return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext) {\n return new NonRecordingSpan(spanContext);\n}\n//# sourceMappingURL=spancontext-utils.js.map","/**\n * An enumeration of status codes.\n */\nexport var SpanStatusCode;\n(function (SpanStatusCode) {\n /**\n * The default status.\n */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /**\n * The operation contains an error.\n */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode || (SpanStatusCode = {}));\n//# sourceMappingURL=status.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var TraceFlags;\n(function (TraceFlags) {\n /** Represents no flag set. */\n TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n /** Bit to represent whether trace is sampled in trace flags. */\n TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags || (TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// this is autogenerated file, see scripts/version-update.js\nexport var VERSION = '1.9.0';\n//# sourceMappingURL=version.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var ExportResultCode;\n(function (ExportResultCode) {\n ExportResultCode[ExportResultCode[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExportResultCode[ExportResultCode[\"FAILED\"] = 1] = \"FAILED\";\n})(ExportResultCode || (ExportResultCode = {}));\n//# sourceMappingURL=ExportResult.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { otperformance as performance } from '../platform';\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis) {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\nexport function getTimeOrigin() {\n let timeOrigin = performance.timeOrigin;\n if (typeof timeOrigin !== 'number') {\n const perf = performance;\n timeOrigin = perf.timing && perf.timing.fetchStart;\n }\n return timeOrigin;\n}\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow) {\n const timeOrigin = millisToHrTime(getTimeOrigin());\n const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : performance.now());\n return addHrTimes(timeOrigin, now);\n}\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time) {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time;\n }\n else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < getTimeOrigin()) {\n return hrTime(time);\n }\n else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n }\n else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n }\n else {\n throw TypeError('Invalid input type');\n }\n}\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(startTime, endTime) {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n return [seconds, nanos];\n}\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time) {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time) {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time) {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time) {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value) {\n return (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number');\n}\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(value) {\n return (isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date);\n}\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1, time2) {\n const out = [time1[0] + time2[0], time1[1] + time2[1]];\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n return out;\n}\n//# sourceMappingURL=time.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const otperformance = performance;\n//# sourceMappingURL=performance.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { OTLPExporterBase, } from '@opentelemetry/otlp-exporter-base';\nimport { JsonTraceSerializer } from '@opentelemetry/otlp-transformer';\nimport { createLegacyOtlpBrowserExportDelegate } from '@opentelemetry/otlp-exporter-base/browser-http';\n/**\n * Collector Trace Exporter for Web\n */\nexport class OTLPTraceExporter extends OTLPExporterBase {\n constructor(config = {}) {\n super(createLegacyOtlpBrowserExportDelegate(config, JsonTraceSerializer, 'v1/traces', { 'Content-Type': 'application/json' }));\n }\n}\n//# sourceMappingURL=OTLPTraceExporter.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class OTLPExporterBase {\n _delegate;\n constructor(_delegate) {\n this._delegate = _delegate;\n }\n /**\n * Export items.\n * @param items\n * @param resultCallback\n */\n export(items, resultCallback) {\n this._delegate.export(items, resultCallback);\n }\n forceFlush() {\n return this._delegate.forceFlush();\n }\n shutdown() {\n return this._delegate.shutdown();\n }\n}\n//# sourceMappingURL=OTLPExporterBase.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass BoundedQueueExportPromiseHandler {\n _concurrencyLimit;\n _sendingPromises = [];\n /**\n * @param concurrencyLimit maximum promises allowed in a queue at the same time.\n */\n constructor(concurrencyLimit) {\n this._concurrencyLimit = concurrencyLimit;\n }\n pushPromise(promise) {\n if (this.hasReachedLimit()) {\n throw new Error('Concurrency Limit reached');\n }\n this._sendingPromises.push(promise);\n const popPromise = () => {\n const index = this._sendingPromises.indexOf(promise);\n void this._sendingPromises.splice(index, 1);\n };\n promise.then(popPromise, popPromise);\n }\n hasReachedLimit() {\n return this._sendingPromises.length >= this._concurrencyLimit;\n }\n async awaitAll() {\n await Promise.all(this._sendingPromises);\n }\n}\n/**\n * Promise queue for keeping track of export promises. Finished promises will be auto-dequeued.\n * Allows for awaiting all promises in the queue.\n */\nexport function createBoundedQueueExportPromiseHandler(options) {\n return new BoundedQueueExportPromiseHandler(options.concurrencyLimit);\n}\n//# sourceMappingURL=bounded-queue-export-promise-handler.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getHttpConfigurationDefaults, mergeOtlpHttpConfigurationWithDefaults, } from './otlp-http-configuration';\nimport { wrapStaticHeadersInFunction } from './shared-configuration';\n/**\n * @deprecated this will be removed in 2.0\n *\n * @param config\n * @param signalResourcePath\n * @param requiredHeaders\n */\nexport function convertLegacyBrowserHttpOptions(config, signalResourcePath, requiredHeaders) {\n return mergeOtlpHttpConfigurationWithDefaults({\n url: config.url,\n timeoutMillis: config.timeoutMillis,\n headers: wrapStaticHeadersInFunction(config.headers),\n concurrencyLimit: config.concurrencyLimit,\n }, {}, // no fallback for browser case\n getHttpConfigurationDefaults(requiredHeaders, signalResourcePath));\n}\n//# sourceMappingURL=convert-legacy-browser-http-options.js.map","import { createOtlpSendBeaconExportDelegate, createOtlpXhrExportDelegate, } from '../otlp-browser-http-export-delegate';\nimport { convertLegacyBrowserHttpOptions } from './convert-legacy-browser-http-options';\n/**\n * @deprecated\n * @param config\n * @param serializer\n * @param signalResourcePath\n * @param requiredHeaders\n */\nexport function createLegacyOtlpBrowserExportDelegate(config, serializer, signalResourcePath, requiredHeaders) {\n const useXhr = !!config.headers || typeof navigator.sendBeacon !== 'function';\n const options = convertLegacyBrowserHttpOptions(config, signalResourcePath, requiredHeaders);\n if (useXhr) {\n return createOtlpXhrExportDelegate(options, serializer);\n }\n else {\n return createOtlpSendBeaconExportDelegate(options, serializer);\n }\n}\n//# sourceMappingURL=create-legacy-browser-delegate.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getSharedConfigurationDefaults, mergeOtlpSharedConfigurationWithDefaults, } from './shared-configuration';\nimport { validateAndNormalizeHeaders } from '../util';\nfunction mergeHeaders(userProvidedHeaders, fallbackHeaders, defaultHeaders) {\n const requiredHeaders = {\n ...defaultHeaders(),\n };\n const headers = {};\n return () => {\n // add fallback ones first\n if (fallbackHeaders != null) {\n Object.assign(headers, fallbackHeaders());\n }\n // override with user-provided ones\n if (userProvidedHeaders != null) {\n Object.assign(headers, userProvidedHeaders());\n }\n // override required ones.\n return Object.assign(headers, requiredHeaders);\n };\n}\nfunction validateUserProvidedUrl(url) {\n if (url == null) {\n return undefined;\n }\n try {\n new URL(url);\n return url;\n }\n catch {\n throw new Error(`Configuration: Could not parse user-provided export URL: '${url}'`);\n }\n}\n/**\n * @param userProvidedConfiguration Configuration options provided by the user in code.\n * @param fallbackConfiguration Fallback to use when the {@link userProvidedConfiguration} does not specify an option.\n * @param defaultConfiguration The defaults as defined by the exporter specification\n */\nexport function mergeOtlpHttpConfigurationWithDefaults(userProvidedConfiguration, fallbackConfiguration, defaultConfiguration) {\n return {\n ...mergeOtlpSharedConfigurationWithDefaults(userProvidedConfiguration, fallbackConfiguration, defaultConfiguration),\n headers: mergeHeaders(validateAndNormalizeHeaders(userProvidedConfiguration.headers), fallbackConfiguration.headers, defaultConfiguration.headers),\n url: validateUserProvidedUrl(userProvidedConfiguration.url) ??\n fallbackConfiguration.url ??\n defaultConfiguration.url,\n agentOptions: userProvidedConfiguration.agentOptions ??\n fallbackConfiguration.agentOptions ??\n defaultConfiguration.agentOptions,\n };\n}\nexport function getHttpConfigurationDefaults(requiredHeaders, signalResourcePath) {\n return {\n ...getSharedConfigurationDefaults(),\n headers: () => requiredHeaders,\n url: 'http://localhost:4318/' + signalResourcePath,\n agentOptions: { keepAlive: true },\n };\n}\n//# sourceMappingURL=otlp-http-configuration.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function validateTimeoutMillis(timeoutMillis) {\n if (Number.isFinite(timeoutMillis) && timeoutMillis > 0) {\n return timeoutMillis;\n }\n throw new Error(`Configuration: timeoutMillis is invalid, expected number greater than 0 (actual: '${timeoutMillis}')`);\n}\nexport function wrapStaticHeadersInFunction(headers) {\n if (headers == null) {\n return undefined;\n }\n return () => headers;\n}\n/**\n * @param userProvidedConfiguration Configuration options provided by the user in code.\n * @param fallbackConfiguration Fallback to use when the {@link userProvidedConfiguration} does not specify an option.\n * @param defaultConfiguration The defaults as defined by the exporter specification\n */\nexport function mergeOtlpSharedConfigurationWithDefaults(userProvidedConfiguration, fallbackConfiguration, defaultConfiguration) {\n return {\n timeoutMillis: validateTimeoutMillis(userProvidedConfiguration.timeoutMillis ??\n fallbackConfiguration.timeoutMillis ??\n defaultConfiguration.timeoutMillis),\n concurrencyLimit: userProvidedConfiguration.concurrencyLimit ??\n fallbackConfiguration.concurrencyLimit ??\n defaultConfiguration.concurrencyLimit,\n compression: userProvidedConfiguration.compression ??\n fallbackConfiguration.compression ??\n defaultConfiguration.compression,\n };\n}\nexport function getSharedConfigurationDefaults() {\n return {\n timeoutMillis: 10000,\n concurrencyLimit: 30,\n compression: 'none',\n };\n}\n//# sourceMappingURL=shared-configuration.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function isExportRetryable(statusCode) {\n const retryCodes = [429, 502, 503, 504];\n return retryCodes.includes(statusCode);\n}\nexport function parseRetryAfterToMills(retryAfter) {\n if (retryAfter == null) {\n return undefined;\n }\n const seconds = Number.parseInt(retryAfter, 10);\n if (Number.isInteger(seconds)) {\n return seconds > 0 ? seconds * 1000 : -1;\n }\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After#directives\n const delay = new Date(retryAfter).getTime() - Date.now();\n if (delay >= 0) {\n return delay;\n }\n return 0;\n}\n//# sourceMappingURL=is-export-retryable.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\nfunction isPartialSuccessResponse(response) {\n return Object.prototype.hasOwnProperty.call(response, 'partialSuccess');\n}\n/**\n * Default response handler that logs a partial success to the console.\n */\nexport function createLoggingPartialSuccessResponseHandler() {\n return {\n handleResponse(response) {\n // Partial success MUST never be an empty object according the specification\n // see https://opentelemetry.io/docs/specs/otlp/#partial-success\n if (response == null ||\n !isPartialSuccessResponse(response) ||\n response.partialSuccess == null ||\n Object.keys(response.partialSuccess).length === 0) {\n return;\n }\n diag.warn('Received Partial Success response:', JSON.stringify(response.partialSuccess));\n },\n };\n}\n//# sourceMappingURL=logging-response-handler.js.map","import { createRetryingTransport } from './retrying-transport';\nimport { createXhrTransport } from './transport/xhr-transport';\nimport { createSendBeaconTransport } from './transport/send-beacon-transport';\nimport { createOtlpNetworkExportDelegate } from './otlp-network-export-delegate';\nexport function createOtlpXhrExportDelegate(options, serializer) {\n return createOtlpNetworkExportDelegate(options, serializer, createRetryingTransport({\n transport: createXhrTransport(options),\n }));\n}\nexport function createOtlpSendBeaconExportDelegate(options, serializer) {\n return createOtlpNetworkExportDelegate(options, serializer, createRetryingTransport({\n transport: createSendBeaconTransport({\n url: options.url,\n blobType: options.headers()['Content-Type'],\n }),\n }));\n}\n//# sourceMappingURL=otlp-browser-http-export-delegate.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ExportResultCode } from '@opentelemetry/core';\nimport { OTLPExporterError } from './types';\nimport { createLoggingPartialSuccessResponseHandler } from './logging-response-handler';\nimport { diag } from '@opentelemetry/api';\nclass OTLPExportDelegate {\n _transport;\n _serializer;\n _responseHandler;\n _promiseQueue;\n _timeout;\n _diagLogger;\n constructor(_transport, _serializer, _responseHandler, _promiseQueue, _timeout) {\n this._transport = _transport;\n this._serializer = _serializer;\n this._responseHandler = _responseHandler;\n this._promiseQueue = _promiseQueue;\n this._timeout = _timeout;\n this._diagLogger = diag.createComponentLogger({\n namespace: 'OTLPExportDelegate',\n });\n }\n export(internalRepresentation, resultCallback) {\n this._diagLogger.debug('items to be sent', internalRepresentation);\n // don't do any work if too many exports are in progress.\n if (this._promiseQueue.hasReachedLimit()) {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Concurrent export limit reached'),\n });\n return;\n }\n const serializedRequest = this._serializer.serializeRequest(internalRepresentation);\n if (serializedRequest == null) {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Nothing to send'),\n });\n return;\n }\n this._promiseQueue.pushPromise(this._transport.send(serializedRequest, this._timeout).then(response => {\n if (response.status === 'success') {\n if (response.data != null) {\n try {\n this._responseHandler.handleResponse(this._serializer.deserializeResponse(response.data));\n }\n catch (e) {\n this._diagLogger.warn('Export succeeded but could not deserialize response - is the response specification compliant?', e, response.data);\n }\n }\n // No matter the response, we can consider the export still successful.\n resultCallback({\n code: ExportResultCode.SUCCESS,\n });\n return;\n }\n else if (response.status === 'failure' && response.error) {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: response.error,\n });\n return;\n }\n else if (response.status === 'retryable') {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new OTLPExporterError('Export failed with retryable status'),\n });\n }\n else {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new OTLPExporterError('Export failed with unknown error'),\n });\n }\n }, reason => resultCallback({\n code: ExportResultCode.FAILED,\n error: reason,\n })));\n }\n forceFlush() {\n return this._promiseQueue.awaitAll();\n }\n async shutdown() {\n this._diagLogger.debug('shutdown started');\n await this.forceFlush();\n this._transport.shutdown();\n }\n}\n/**\n * Creates a generic delegate for OTLP exports which only contains parts of the OTLP export that are shared across all\n * signals.\n */\nexport function createOtlpExportDelegate(components, settings) {\n return new OTLPExportDelegate(components.transport, components.serializer, createLoggingPartialSuccessResponseHandler(), components.promiseHandler, settings.timeout);\n}\n//# sourceMappingURL=otlp-export-delegate.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createBoundedQueueExportPromiseHandler } from './bounded-queue-export-promise-handler';\nimport { createOtlpExportDelegate, } from './otlp-export-delegate';\nexport function createOtlpNetworkExportDelegate(options, serializer, transport) {\n return createOtlpExportDelegate({\n transport: transport,\n serializer,\n promiseHandler: createBoundedQueueExportPromiseHandler(options),\n }, { timeout: options.timeoutMillis });\n}\n//# sourceMappingURL=otlp-network-export-delegate.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst MAX_ATTEMPTS = 5;\nconst INITIAL_BACKOFF = 1000;\nconst MAX_BACKOFF = 5000;\nconst BACKOFF_MULTIPLIER = 1.5;\nconst JITTER = 0.2;\n/**\n * Get a pseudo-random jitter that falls in the range of [-JITTER, +JITTER]\n */\nfunction getJitter() {\n return Math.random() * (2 * JITTER) - JITTER;\n}\nclass RetryingTransport {\n _transport;\n constructor(_transport) {\n this._transport = _transport;\n }\n retry(data, timeoutMillis, inMillis) {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this._transport.send(data, timeoutMillis).then(resolve, reject);\n }, inMillis);\n });\n }\n async send(data, timeoutMillis) {\n const deadline = Date.now() + timeoutMillis;\n let result = await this._transport.send(data, timeoutMillis);\n let attempts = MAX_ATTEMPTS;\n let nextBackoff = INITIAL_BACKOFF;\n while (result.status === 'retryable' && attempts > 0) {\n attempts--;\n // use maximum of computed backoff and 0 to avoid negative timeouts\n const backoff = Math.max(Math.min(nextBackoff, MAX_BACKOFF) + getJitter(), 0);\n nextBackoff = nextBackoff * BACKOFF_MULTIPLIER;\n const retryInMillis = result.retryInMillis ?? backoff;\n // return when expected retry time is after the export deadline.\n const remainingTimeoutMillis = deadline - Date.now();\n if (retryInMillis > remainingTimeoutMillis) {\n return result;\n }\n result = await this.retry(data, remainingTimeoutMillis, retryInMillis);\n }\n return result;\n }\n shutdown() {\n return this._transport.shutdown();\n }\n}\n/**\n * Creates an Exporter Transport that retries on 'retryable' response.\n */\nexport function createRetryingTransport(options) {\n return new RetryingTransport(options.transport);\n}\n//# sourceMappingURL=retrying-transport.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\nclass SendBeaconTransport {\n _params;\n constructor(_params) {\n this._params = _params;\n }\n send(data) {\n return new Promise(resolve => {\n if (navigator.sendBeacon(this._params.url, new Blob([data], { type: this._params.blobType }))) {\n // no way to signal retry, treat everything as success\n diag.debug('SendBeacon success');\n resolve({\n status: 'success',\n });\n }\n else {\n resolve({\n status: 'failure',\n error: new Error('SendBeacon failed'),\n });\n }\n });\n }\n shutdown() {\n // Intentionally left empty, nothing to do.\n }\n}\nexport function createSendBeaconTransport(parameters) {\n return new SendBeaconTransport(parameters);\n}\n//# sourceMappingURL=send-beacon-transport.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\nimport { isExportRetryable, parseRetryAfterToMills, } from '../is-export-retryable';\nclass XhrTransport {\n _parameters;\n constructor(_parameters) {\n this._parameters = _parameters;\n }\n send(data, timeoutMillis) {\n return new Promise(resolve => {\n const xhr = new XMLHttpRequest();\n xhr.timeout = timeoutMillis;\n xhr.open('POST', this._parameters.url);\n const headers = this._parameters.headers();\n Object.entries(headers).forEach(([k, v]) => {\n xhr.setRequestHeader(k, v);\n });\n xhr.ontimeout = _ => {\n resolve({\n status: 'failure',\n error: new Error('XHR request timed out'),\n });\n };\n xhr.onreadystatechange = () => {\n if (xhr.status >= 200 && xhr.status <= 299) {\n diag.debug('XHR success');\n resolve({\n status: 'success',\n });\n }\n else if (xhr.status && isExportRetryable(xhr.status)) {\n resolve({\n status: 'retryable',\n retryInMillis: parseRetryAfterToMills(xhr.getResponseHeader('Retry-After')),\n });\n }\n else if (xhr.status !== 0) {\n resolve({\n status: 'failure',\n error: new Error('XHR request failed with non-retryable status'),\n });\n }\n };\n xhr.onabort = () => {\n resolve({\n status: 'failure',\n error: new Error('XHR request aborted'),\n });\n };\n xhr.onerror = () => {\n resolve({\n status: 'failure',\n error: new Error('XHR request errored'),\n });\n };\n xhr.send(data);\n });\n }\n shutdown() {\n // Intentionally left empty, nothing to do.\n }\n}\n/**\n * Creates an exporter transport that uses XHR to send the data\n * @param parameters applied to each request made by transport\n */\nexport function createXhrTransport(parameters) {\n return new XhrTransport(parameters);\n}\n//# sourceMappingURL=xhr-transport.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Interface for handling error\n */\nexport class OTLPExporterError extends Error {\n code;\n name = 'OTLPExporterError';\n data;\n constructor(message, code, data) {\n super(message);\n this.data = data;\n this.code = code;\n }\n}\n//# sourceMappingURL=types.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\n/**\n * Parses headers from config leaving only those that have defined values\n * @param partialHeaders\n */\nexport function validateAndNormalizeHeaders(partialHeaders) {\n return () => {\n const headers = {};\n Object.entries(partialHeaders?.() ?? {}).forEach(([key, value]) => {\n if (typeof value !== 'undefined') {\n headers[key] = String(value);\n }\n else {\n diag.warn(`Header \"${key}\" has invalid value (${value}) and will be ignored`);\n }\n });\n return headers;\n };\n}\n//# sourceMappingURL=util.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction intValue(charCode) {\n // 0-9\n if (charCode >= 48 && charCode <= 57) {\n return charCode - 48;\n }\n // a-f\n if (charCode >= 97 && charCode <= 102) {\n return charCode - 87;\n }\n // A-F\n return charCode - 55;\n}\nexport function hexToBinary(hexStr) {\n const buf = new Uint8Array(hexStr.length / 2);\n let offset = 0;\n for (let i = 0; i < hexStr.length; i += 2) {\n const hi = intValue(hexStr.charCodeAt(i));\n const lo = intValue(hexStr.charCodeAt(i + 1));\n buf[offset++] = (hi << 4) | lo;\n }\n return buf;\n}\n//# sourceMappingURL=hex-to-binary.js.map","export function createResource(resource) {\n return {\n attributes: toAttributes(resource.attributes),\n droppedAttributesCount: 0,\n };\n}\nexport function createInstrumentationScope(scope) {\n return {\n name: scope.name,\n version: scope.version,\n };\n}\nexport function toAttributes(attributes) {\n return Object.keys(attributes).map(key => toKeyValue(key, attributes[key]));\n}\nexport function toKeyValue(key, value) {\n return {\n key: key,\n value: toAnyValue(value),\n };\n}\nexport function toAnyValue(value) {\n const t = typeof value;\n if (t === 'string')\n return { stringValue: value };\n if (t === 'number') {\n if (!Number.isInteger(value))\n return { doubleValue: value };\n return { intValue: value };\n }\n if (t === 'boolean')\n return { boolValue: value };\n if (value instanceof Uint8Array)\n return { bytesValue: value };\n if (Array.isArray(value))\n return { arrayValue: { values: value.map(toAnyValue) } };\n if (t === 'object' && value != null)\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => toKeyValue(k, v)),\n },\n };\n return {};\n}\n//# sourceMappingURL=internal.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { hrTimeToNanoseconds } from '@opentelemetry/core';\nimport { hexToBinary } from './hex-to-binary';\nexport function hrTimeToNanos(hrTime) {\n const NANOSECONDS = BigInt(1000000000);\n return BigInt(hrTime[0]) * NANOSECONDS + BigInt(hrTime[1]);\n}\nexport function toLongBits(value) {\n const low = Number(BigInt.asUintN(32, value));\n const high = Number(BigInt.asUintN(32, value >> BigInt(32)));\n return { low, high };\n}\nexport function encodeAsLongBits(hrTime) {\n const nanos = hrTimeToNanos(hrTime);\n return toLongBits(nanos);\n}\nexport function encodeAsString(hrTime) {\n const nanos = hrTimeToNanos(hrTime);\n return nanos.toString();\n}\nconst encodeTimestamp = typeof BigInt !== 'undefined' ? encodeAsString : hrTimeToNanoseconds;\nfunction identity(value) {\n return value;\n}\nfunction optionalHexToBinary(str) {\n if (str === undefined)\n return undefined;\n return hexToBinary(str);\n}\nconst DEFAULT_ENCODER = {\n encodeHrTime: encodeAsLongBits,\n encodeSpanContext: hexToBinary,\n encodeOptionalSpanContext: optionalHexToBinary,\n};\nexport function getOtlpEncoder(options) {\n if (options === undefined) {\n return DEFAULT_ENCODER;\n }\n const useLongBits = options.useLongBits ?? true;\n const useHex = options.useHex ?? false;\n return {\n encodeHrTime: useLongBits ? encodeAsLongBits : encodeTimestamp,\n encodeSpanContext: useHex ? identity : hexToBinary,\n encodeOptionalSpanContext: useHex ? identity : optionalHexToBinary,\n };\n}\n//# sourceMappingURL=utils.js.map","import { createInstrumentationScope, createResource, toAttributes, } from '../common/internal';\nimport { getOtlpEncoder } from '../common/utils';\nexport function sdkSpanToOtlpSpan(span, encoder) {\n const ctx = span.spanContext();\n const status = span.status;\n const parentSpanId = span.parentSpanContext?.spanId\n ? encoder.encodeSpanContext(span.parentSpanContext?.spanId)\n : undefined;\n return {\n traceId: encoder.encodeSpanContext(ctx.traceId),\n spanId: encoder.encodeSpanContext(ctx.spanId),\n parentSpanId: parentSpanId,\n traceState: ctx.traceState?.serialize(),\n name: span.name,\n // Span kind is offset by 1 because the API does not define a value for unset\n kind: span.kind == null ? 0 : span.kind + 1,\n startTimeUnixNano: encoder.encodeHrTime(span.startTime),\n endTimeUnixNano: encoder.encodeHrTime(span.endTime),\n attributes: toAttributes(span.attributes),\n droppedAttributesCount: span.droppedAttributesCount,\n events: span.events.map(event => toOtlpSpanEvent(event, encoder)),\n droppedEventsCount: span.droppedEventsCount,\n status: {\n // API and proto enums share the same values\n code: status.code,\n message: status.message,\n },\n links: span.links.map(link => toOtlpLink(link, encoder)),\n droppedLinksCount: span.droppedLinksCount,\n };\n}\nexport function toOtlpLink(link, encoder) {\n return {\n attributes: link.attributes ? toAttributes(link.attributes) : [],\n spanId: encoder.encodeSpanContext(link.context.spanId),\n traceId: encoder.encodeSpanContext(link.context.traceId),\n traceState: link.context.traceState?.serialize(),\n droppedAttributesCount: link.droppedAttributesCount || 0,\n };\n}\nexport function toOtlpSpanEvent(timedEvent, encoder) {\n return {\n attributes: timedEvent.attributes\n ? toAttributes(timedEvent.attributes)\n : [],\n name: timedEvent.name,\n timeUnixNano: encoder.encodeHrTime(timedEvent.time),\n droppedAttributesCount: timedEvent.droppedAttributesCount || 0,\n };\n}\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function createExportTraceServiceRequest(spans, options) {\n const encoder = getOtlpEncoder(options);\n return {\n resourceSpans: spanRecordsToResourceSpans(spans, encoder),\n };\n}\nfunction createResourceMap(readableSpans) {\n const resourceMap = new Map();\n for (const record of readableSpans) {\n let ilsMap = resourceMap.get(record.resource);\n if (!ilsMap) {\n ilsMap = new Map();\n resourceMap.set(record.resource, ilsMap);\n }\n // TODO this is duplicated in basic tracer. Consolidate on a common helper in core\n const instrumentationScopeKey = `${record.instrumentationScope.name}@${record.instrumentationScope.version || ''}:${record.instrumentationScope.schemaUrl || ''}`;\n let records = ilsMap.get(instrumentationScopeKey);\n if (!records) {\n records = [];\n ilsMap.set(instrumentationScopeKey, records);\n }\n records.push(record);\n }\n return resourceMap;\n}\nfunction spanRecordsToResourceSpans(readableSpans, encoder) {\n const resourceMap = createResourceMap(readableSpans);\n const out = [];\n const entryIterator = resourceMap.entries();\n let entry = entryIterator.next();\n while (!entry.done) {\n const [resource, ilmMap] = entry.value;\n const scopeResourceSpans = [];\n const ilmIterator = ilmMap.values();\n let ilmEntry = ilmIterator.next();\n while (!ilmEntry.done) {\n const scopeSpans = ilmEntry.value;\n if (scopeSpans.length > 0) {\n const spans = scopeSpans.map(readableSpan => sdkSpanToOtlpSpan(readableSpan, encoder));\n scopeResourceSpans.push({\n scope: createInstrumentationScope(scopeSpans[0].instrumentationScope),\n spans: spans,\n schemaUrl: scopeSpans[0].instrumentationScope.schemaUrl,\n });\n }\n ilmEntry = ilmIterator.next();\n }\n // TODO SDK types don't provide resource schema URL at this time\n const transformedSpans = {\n resource: createResource(resource),\n scopeSpans: scopeResourceSpans,\n schemaUrl: undefined,\n };\n out.push(transformedSpans);\n entry = entryIterator.next();\n }\n return out;\n}\n//# sourceMappingURL=internal.js.map","import { createExportTraceServiceRequest } from '../internal';\nexport const JsonTraceSerializer = {\n serializeRequest: (arg) => {\n const request = createExportTraceServiceRequest(arg, {\n useHex: true,\n useLongBits: false,\n });\n const encoder = new TextEncoder();\n return encoder.encode(JSON.stringify(request));\n },\n deserializeResponse: (arg) => {\n if (arg.length === 0) {\n return {};\n }\n const decoder = new TextDecoder();\n return JSON.parse(decoder.decode(arg));\n },\n};\n//# sourceMappingURL=trace.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport var SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision || (SamplingDecision = {}));\n//# sourceMappingURL=Sampler.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array ? array.length : 0,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n Set = getNative(root, 'Set'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var index = -1,\n length = arrays.length;\n\n while (++index < length) {\n var result = result\n ? arrayPush(\n baseDifference(result, arrays[index], iteratee, comparator),\n baseDifference(arrays[index], result, iteratee, comparator)\n )\n : arrays[index];\n }\n return (result && result.length) ? baseUniq(result, iteratee, comparator) : [];\n}\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = xor;\n","'use strict';\n\nvar isEqual = require('lodash.isequal');\n\nvar xor = require('lodash.xor');\n\nvar keys = require('lodash.keys');\n\nvar _require = require('./jsonSchemaHelpers'),\n types = _require.types,\n FORMAT_REGEXPS = _require.FORMAT_REGEXPS,\n isFormat = _require.isFormat;\n\nvar helpers = {\n stringFormats: keys(FORMAT_REGEXPS),\n isFormat: isFormat,\n typeNames: ['integer', 'number', // make sure number is after integer (for proper type detection)\n 'string', 'array', 'object', 'boolean', 'null', 'date'],\n getType: function getType(val) {\n return helpers.typeNames.find(function (typeName) {\n return types[typeName](val);\n });\n },\n\n /**\n * Tries to find the least common schema from two supplied JSON schemas. If it is unable to find\n * such a schema, it returns null. Incompatibility in structure/types leads to returning null,\n * except when the difference is only integer/number. Than the 'number' is used instead 'int'.\n * Types/Structure incompatibility in array items only leads to schema that doesn't specify\n * items structure/type.\n * @param {object} schema1 - JSON schema\n * @param {object} schema2 - JSON schema\n * @returns {object|null}\n */\n mergeSchemaObjs: function mergeSchemaObjs(schema1, schema2) {\n var schema1Keys = keys(schema1);\n var schema2Keys = keys(schema2);\n\n if (!isEqual(schema1Keys, schema2Keys)) {\n if (schema1.type === 'array' && schema2.type === 'array') {\n // TODO optimize???\n if (isEqual(xor(schema1Keys, schema2Keys), ['items'])) {\n var schemaWithoutItems = schema1Keys.length > schema2Keys.length ? schema2 : schema1;\n var schemaWithItems = schema1Keys.length > schema2Keys.length ? schema1 : schema2;\n var isSame = keys(schemaWithoutItems).reduce(function (acc, current) {\n return isEqual(schemaWithoutItems[current], schemaWithItems[current]) && acc;\n }, true);\n\n if (isSame) {\n return schemaWithoutItems;\n }\n }\n }\n\n if (schema1.type !== 'object' || schema2.type !== 'object') {\n return null;\n }\n }\n\n var retObj = {};\n\n for (var i = 0, length = schema1Keys.length; i < length; i++) {\n var key = schema1Keys[i];\n\n if (helpers.getType(schema1[key]) === 'object') {\n var x = helpers.mergeSchemaObjs(schema1[key], schema2[key]);\n\n if (!x) {\n if (schema1.type === 'object' || schema2.type === 'object') {\n return {\n type: 'object'\n };\n } // special treatment for array items. If not mergeable, we can do without them\n\n\n if (key !== 'items' || schema1.type !== 'array' || schema2.type !== 'array') {\n return null;\n }\n } else {\n retObj[key] = x;\n }\n } else {\n // simple value schema properties (not defined by object)\n if (key === 'type') {\n // eslint-disable-line no-lonely-if\n if (schema1[key] !== schema2[key]) {\n if (schema1[key] === 'integer' && schema2[key] === 'number' || schema1[key] === 'number' && schema2[key] === 'integer') {\n retObj[key] = 'number';\n } else {\n return null;\n }\n } else {\n retObj[key] = schema1[key];\n }\n } else {\n if (!isEqual(schema1[key], schema2[key])) {\n // TODO Is it even possible to take this path?\n return null;\n }\n\n retObj[key] = schema1[key];\n }\n }\n }\n\n return retObj;\n }\n};\nmodule.exports = helpers;","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar merge = require('lodash.merge');\n\nvar isEqual = require('lodash.isequal');\n\nvar helpers = require('./helpers');\n\nvar defaultOptions = {\n required: false,\n postProcessFnc: null,\n strings: {\n detectFormat: true,\n preProcessFnc: null\n },\n arrays: {\n mode: 'all'\n },\n objects: {\n preProcessFnc: null,\n postProcessFnc: null,\n additionalProperties: true\n }\n};\nvar skipReverseFind = ['hostname', 'host-name', 'alpha', 'alphanumeric', 'regex', 'regexp', 'pattern'];\nvar filteredFormats = helpers.stringFormats.filter(function (item) {\n return skipReverseFind.indexOf(item) < 0;\n});\n\nfunction getCommonTypeFromArrayOfTypes(arrOfTypes) {\n var lastVal;\n\n for (var i = 0, length = arrOfTypes.length; i < length; i++) {\n var currentType = arrOfTypes[i];\n\n if (i > 0) {\n if (currentType === 'integer' && lastVal === 'number') {\n currentType = 'number';\n } else if (currentType === 'number' && lastVal === 'integer') {\n lastVal = 'number';\n }\n\n if (lastVal !== currentType) return null;\n }\n\n lastVal = currentType;\n }\n\n return lastVal;\n}\n\nfunction getCommonArrayItemsType(arr) {\n return getCommonTypeFromArrayOfTypes(arr.map(function (item) {\n return helpers.getType(item);\n }));\n}\n\nvar ToJsonSchema = /*#__PURE__*/function () {\n function ToJsonSchema(options) {\n _classCallCheck(this, ToJsonSchema);\n\n this.options = merge({}, defaultOptions, options);\n this.getObjectSchemaDefault = this.getObjectSchemaDefault.bind(this);\n this.getStringSchemaDefault = this.getStringSchemaDefault.bind(this);\n this.objectPostProcessDefault = this.objectPostProcessDefault.bind(this);\n this.commmonPostProcessDefault = this.commmonPostProcessDefault.bind(this);\n this.objectPostProcessDefault = this.objectPostProcessDefault.bind(this);\n }\n /**\n * Tries to find the least common schema that would validate all items in the array. More details\n * helpers.mergeSchemaObjs description\n * @param {array} arr\n * @returns {object|null}\n */\n\n\n _createClass(ToJsonSchema, [{\n key: \"getCommonArrayItemSchema\",\n value: function getCommonArrayItemSchema(arr) {\n var _this = this;\n\n var schemas = arr.map(function (item) {\n return _this.getSchema(item);\n }); // schemas.forEach(schema => console.log(JSON.stringify(schema, '\\t')))\n\n return schemas.reduce(function (acc, current) {\n return helpers.mergeSchemaObjs(acc, current);\n }, schemas.pop());\n }\n }, {\n key: \"getObjectSchemaDefault\",\n value: function getObjectSchemaDefault(obj) {\n var _this2 = this;\n\n var schema = {\n type: 'object'\n };\n var objKeys = Object.keys(obj);\n\n if (objKeys.length > 0) {\n schema.properties = objKeys.reduce(function (acc, propertyName) {\n acc[propertyName] = _this2.getSchema(obj[propertyName]); // eslint-disable-line no-param-reassign\n\n return acc;\n }, {});\n }\n\n return schema;\n }\n }, {\n key: \"getObjectSchema\",\n value: function getObjectSchema(obj) {\n if (this.options.objects.preProcessFnc) {\n return this.options.objects.preProcessFnc(obj, this.getObjectSchemaDefault);\n }\n\n return this.getObjectSchemaDefault(obj);\n }\n }, {\n key: \"getArraySchemaMerging\",\n value: function getArraySchemaMerging(arr) {\n var schema = {\n type: 'array'\n };\n var commonType = getCommonArrayItemsType(arr);\n\n if (commonType) {\n schema.items = {\n type: commonType\n };\n\n if (commonType !== 'integer' && commonType !== 'number') {\n var itemSchema = this.getCommonArrayItemSchema(arr);\n\n if (itemSchema) {\n schema.items = itemSchema;\n }\n } else if (this.options.required) {\n schema.items.required = true;\n }\n }\n\n return schema;\n }\n }, {\n key: \"getArraySchemaNoMerging\",\n value: function getArraySchemaNoMerging(arr) {\n var schema = {\n type: 'array'\n };\n\n if (arr.length > 0) {\n schema.items = this.getSchema(arr[0]);\n }\n\n return schema;\n }\n }, {\n key: \"getArraySchemaTuple\",\n value: function getArraySchemaTuple(arr) {\n var _this3 = this;\n\n var schema = {\n type: 'array'\n };\n\n if (arr.length > 0) {\n schema.items = arr.map(function (item) {\n return _this3.getSchema(item);\n });\n }\n\n return schema;\n }\n }, {\n key: \"getArraySchemaUniform\",\n value: function getArraySchemaUniform(arr) {\n var schema = this.getArraySchemaNoMerging(arr);\n\n if (arr.length > 1) {\n for (var i = 1; i < arr.length; i++) {\n if (!isEqual(schema.items, this.getSchema(arr[i]))) {\n throw new Error('Invalid schema, incompatible array items');\n }\n }\n }\n\n return schema;\n }\n }, {\n key: \"getArraySchema\",\n value: function getArraySchema(arr) {\n if (arr.length === 0) {\n return {\n type: 'array'\n };\n }\n\n switch (this.options.arrays.mode) {\n case 'all':\n return this.getArraySchemaMerging(arr);\n\n case 'first':\n return this.getArraySchemaNoMerging(arr);\n\n case 'uniform':\n return this.getArraySchemaUniform(arr);\n\n case 'tuple':\n return this.getArraySchemaTuple(arr);\n\n default:\n throw new Error(\"Unknown array mode option '\".concat(this.options.arrays.mode, \"'\"));\n }\n }\n }, {\n key: \"getStringSchemaDefault\",\n value: function getStringSchemaDefault(value) {\n var schema = {\n type: 'string'\n };\n\n if (!this.options.strings.detectFormat) {\n return schema;\n }\n\n var index = filteredFormats.findIndex(function (item) {\n return helpers.isFormat(value, item);\n });\n\n if (index >= 0) {\n schema.format = filteredFormats[index];\n }\n\n return schema;\n }\n }, {\n key: \"getStringSchema\",\n value: function getStringSchema(value) {\n if (this.options.strings.preProcessFnc) {\n return this.options.strings.preProcessFnc(value, this.getStringSchemaDefault);\n }\n\n return this.getStringSchemaDefault(value);\n }\n }, {\n key: \"commmonPostProcessDefault\",\n value: function commmonPostProcessDefault(type, schema, value) {\n // eslint-disable-line no-unused-vars\n if (this.options.required) {\n return merge({}, schema, {\n required: true\n });\n }\n\n return schema;\n }\n }, {\n key: \"objectPostProcessDefault\",\n value: function objectPostProcessDefault(schema, obj) {\n if (this.options.objects.additionalProperties === false && Object.getOwnPropertyNames(obj).length > 0) {\n return merge({}, schema, {\n additionalProperties: false\n });\n }\n\n return schema;\n }\n /**\n * Gets JSON schema for provided value\n * @param value\n * @returns {object}\n */\n\n }, {\n key: \"getSchema\",\n value: function getSchema(value) {\n var type = helpers.getType(value);\n\n if (!type) {\n throw new Error(\"Type of value couldn't be determined\");\n }\n\n var schema;\n\n switch (type) {\n case 'object':\n schema = this.getObjectSchema(value);\n break;\n\n case 'array':\n schema = this.getArraySchema(value);\n break;\n\n case 'string':\n schema = this.getStringSchema(value);\n break;\n\n default:\n schema = {\n type: type\n };\n }\n\n if (this.options.postProcessFnc) {\n schema = this.options.postProcessFnc(type, schema, value, this.commmonPostProcessDefault);\n } else {\n schema = this.commmonPostProcessDefault(type, schema, value);\n }\n\n if (type === 'object') {\n if (this.options.objects.postProcessFnc) {\n schema = this.options.objects.postProcessFnc(schema, value, this.objectPostProcessDefault);\n } else {\n schema = this.objectPostProcessDefault(schema, value);\n }\n }\n\n return schema;\n }\n }]);\n\n return ToJsonSchema;\n}();\n\nfunction toJsonSchema(value, options) {\n var tjs = new ToJsonSchema(options);\n return tjs.getSchema(value);\n}\n\nmodule.exports = toJsonSchema;","'use strict'; // content of this file is extracted from jsonschema source\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar types = {\n string: function testString(instance) {\n return typeof instance === 'string';\n },\n number: function testNumber(instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance === 'number' && isFinite(instance); // eslint-disable-line no-restricted-globals\n },\n integer: function testInteger(instance) {\n return typeof instance === 'number' && instance % 1 === 0;\n },\n \"boolean\": function testBoolean(instance) {\n return typeof instance === 'boolean';\n },\n array: function testArray(instance) {\n return instance instanceof Array;\n },\n \"null\": function testNull(instance) {\n return instance === null;\n },\n date: function testDate(instance) {\n return instance instanceof Date;\n },\n any:\n /* istanbul ignore next: not using this but keeping it here for sake of completeness */\n function testAny(instance) {\n // eslint-disable-line no-unused-vars\n return true;\n },\n object: function testObject(instance) {\n return instance && _typeof(instance) === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n }\n};\nvar FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n date: /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n time: /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n email: /^(?:[\\w!#$%&'*+-/=?^`{|}~]+\\.)*[\\w!#$%&'*+-/=?^`{|}~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n ipv6: /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n uri: /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n color: /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n hostname: /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n alpha: /^[a-zA-Z]+$/,\n alphanumeric: /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function utcMillisec(input) {\n return typeof input === 'string' && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n // eslint-disable-line no-restricted-globals\n regex\n /* istanbul ignore next: not supporting regex right now */\n : function regex(input) {\n // eslint-disable-line space-before-function-paren\n var result = true;\n\n try {\n new RegExp(input); // eslint-disable-line no-new\n } catch (e) {\n result = false;\n }\n\n return result;\n },\n style: /\\s*(.+?):\\s*([^;]+);?/g,\n phone: /^\\+(?:[0-9] ?){6,14}[0-9]$/\n};\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nvar isFormat = function isFormat(input, format) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n }\n\n return true;\n};\n\nmodule.exports = {\n types: types,\n isFormat: isFormat,\n FORMAT_REGEXPS: FORMAT_REGEXPS\n};","\nexport const OTEL_MP_SAMPLE_TRACE_RATIO = 0.15\n\nexport const SESSION_ID_PROP_NAME = 'multiplayer-session-id'\n\nexport const SESSION_SHORT_ID_PROP_NAME = 'multiplayer-session-short-id'\n\nexport const SESSION_CONTINUOUS_DEBUGGING_PROP_NAME = 'multiplayer-session-continuous-debugging'\n\nexport const SESSION_STATE_PROP_NAME = 'multiplayer-session-state'\n\nexport const SESSION_TYPE_PROP_NAME = 'multiplayer-session-type'\n\nexport const SESSION_PROP_NAME = 'multiplayer-session-data'\n\nexport const SESSION_STARTED_EVENT = 'debug-session:started'\n\nexport const SESSION_STOPPED_EVENT = 'debug-session:stopped'\n\nexport const SESSION_SUBSCRIBE_EVENT = 'debug-session:subscribe'\n\nexport const SESSION_UNSUBSCRIBE_EVENT = 'debug-session:unsubscribe'\n\nexport const SESSION_AUTO_CREATED = 'debug-session:auto-created'\n\nexport const SESSION_ADD_EVENT = 'debug-session:rrweb:add-event'\n\nexport const DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE = 100000\n\nexport const SESSION_RESPONSE = 'multiplayer-debug-session-response'\n\nexport const CONTINUOUS_DEBUGGING_TIMEOUT = 60000 // 1 minutes\n\nexport const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30 // TODO: move to shared config otel core\n\n// Package version - injected by webpack during build\ndeclare const PACKAGE_VERSION: string\nexport const PACKAGE_VERSION_EXPORT = PACKAGE_VERSION || '1.0.0'\n\n\n// Regex patterns for OpenTelemetry ignore URLs\nexport const OTEL_IGNORE_URLS = [\n // Traces endpoint\n /.*\\/v1\\/traces/,\n // Debug sessions endpoints\n /.*\\/v0\\/radar\\/debug-sessions\\/start$/,\n /.*\\/v0\\/radar\\/debug-sessions\\/[^/]+\\/stop$/,\n /.*\\/v0\\/radar\\/debug-sessions\\/[^/]+\\/cancel$/,\n\n // Continuous debug sessions endpoints\n /.*\\/v0\\/radar\\/continuous-debug-sessions\\/start$/,\n /.*\\/v0\\/radar\\/continuous-debug-sessions\\/[^/]+\\/save$/,\n /.*\\/v0\\/radar\\/continuous-debug-sessions\\/[^/]+\\/cancel$/,\n\n // Remote debug session endpoint\n /.*\\/v0\\/radar\\/remote-debug-session\\/check$/,\n\n // Or use a more general pattern to catch all radar API endpoints\n // /.*\\/v0\\/radar\\/.*/\n]","import {\n SessionRecorderSdk,\n MULTIPLAYER_BASE_API_URL,\n MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL,\n} from '@multiplayer-app/session-recorder-common'\nimport {\n MaskingConfig,\n SessionRecorderConfigs,\n WidgetButtonPlacement,\n WidgetTextOverridesConfig,\n} from '../types'\nimport {\n OTEL_MP_SAMPLE_TRACE_RATIO,\n DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE,\n} from './constants'\nconst { mask, sensitiveFields, sensitiveHeaders } = SessionRecorderSdk\n\nexport const DEFAULT_MASKING_CONFIG: MaskingConfig = {\n maskAllInputs: true,\n isContentMaskingEnabled: true,\n maskBody: mask(sensitiveFields),\n maskHeaders: mask(sensitiveHeaders),\n maskBodyFieldsList: sensitiveFields,\n maskHeadersList: sensitiveHeaders,\n headersToInclude: [],\n headersToExclude: [],\n}\n\nexport const DEFAULT_WIDGET_TEXT_CONFIG: WidgetTextOverridesConfig = {\n initialTitleWithContinuous: 'Encountered an issue?',\n initialTitleWithoutContinuous: 'Encountered an issue?',\n initialDescriptionWithContinuous: 'Record your session so we can see the problem and fix it faster.',\n initialDescriptionWithoutContinuous: 'Record your session so we can see the problem and fix it faster.',\n continuousRecordingLabel: 'Continuous recording',\n startRecordingButtonText: 'Start recording',\n finalTitle: 'Done recording?',\n finalDescription: 'You can also add a quick note with extra context, expectations, or questions. Thank you!',\n commentPlaceholder: 'Add a message...',\n saveButtonText: 'Submit recording',\n cancelButtonText: 'Cancel recording',\n continuousOverlayTitle: 'Save time, skip the reproductions',\n continuousOverlayDescription: 'We keep a rolling record of your recent activity. If something doesn’t work as expected, just save the recording and continue working. No need to worry about exceptions and errors - we automatically save recordings for those!',\n saveLastSnapshotButtonText: 'Save recording',\n submitDialogTitle: 'Save recording',\n submitDialogSubtitle: 'This full-stack session recording will be saved directly to your selected Multiplayer project. All data is automatically correlated end-to-end.',\n submitDialogCommentLabel: 'You can also add context, comments, or notes.',\n submitDialogCommentPlaceholder: 'Add a message...',\n submitDialogSubmitText: 'Save',\n submitDialogCancelText: 'Cancel',\n}\n\nexport const BASE_CONFIG: Required<SessionRecorderConfigs> = {\n apiKey: '',\n\n version: '',\n application: '',\n environment: '',\n\n showWidget: true,\n showContinuousRecording: true,\n widgetButtonPlacement: WidgetButtonPlacement.bottomRight,\n\n usePostMessageFallback: false,\n apiBaseUrl: MULTIPLAYER_BASE_API_URL,\n exporterEndpoint: MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL,\n\n recordCanvas: false,\n schemifyDocSpanPayload: true,\n\n ignoreUrls: [],\n propagateTraceHeaderCorsUrls: [],\n\n sampleTraceRatio: OTEL_MP_SAMPLE_TRACE_RATIO,\n maxCapturingHttpPayloadSize: DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE,\n\n captureBody: true,\n captureHeaders: true,\n masking: DEFAULT_MASKING_CONFIG,\n widgetTextOverrides: DEFAULT_WIDGET_TEXT_CONFIG,\n\n}\n","import { MaskingConfig } from '../types'\nimport { DEFAULT_MASKING_CONFIG } from './defaults'\nimport { isValidArray, isValidBoolean, isValidFunction } from './validators'\nimport { SessionRecorderSdk } from '@multiplayer-app/session-recorder-common'\n\nconst { mask, sensitiveFields, sensitiveHeaders } = SessionRecorderSdk\n\nexport const getMaskingConfig = (masking?: MaskingConfig): MaskingConfig => {\n const baseMasking = DEFAULT_MASKING_CONFIG\n\n if (typeof masking !== 'object') {\n return baseMasking\n }\n\n const maskHeadersList = isValidArray(masking.maskHeadersList, sensitiveHeaders)\n const maskBodyFieldsList = isValidArray(masking.maskBodyFieldsList, sensitiveFields)\n\n return {\n maskAllInputs: isValidBoolean(masking.maskAllInputs, baseMasking.maskAllInputs ?? true),\n maskTextClass: masking.maskTextClass,\n maskTextSelector: masking.maskTextSelector,\n maskInputOptions: masking.maskInputOptions && typeof masking.maskInputOptions === 'object' ? masking.maskInputOptions : undefined,\n maskInput: isValidFunction(masking.maskInput, undefined),\n maskText: isValidFunction(masking.maskText, undefined),\n maskConsoleEvent: isValidFunction(masking.maskConsoleEvent, undefined),\n\n maskHeadersList,\n maskBodyFieldsList,\n headersToInclude: isValidArray(masking.headersToInclude, baseMasking.headersToInclude ?? []),\n headersToExclude: isValidArray(masking.headersToExclude, baseMasking.headersToExclude ?? []),\n isContentMaskingEnabled: isValidBoolean(masking.isContentMaskingEnabled, baseMasking.isContentMaskingEnabled ?? true),\n maskBody: isValidFunction(masking.maskBody, mask(maskBodyFieldsList)),\n maskHeaders: isValidFunction(masking.maskHeaders, mask(maskHeadersList)),\n }\n}","/**\n * Validation helper functions for configuration objects\n */\n\nexport const isValidStringOrRegExp = (value: string | RegExp | undefined, defaultValue: string | RegExp) => {\n return typeof value === 'string' || value instanceof RegExp ? value : defaultValue\n}\n\nexport const isValidString = <T extends string>(value: string | undefined | T, defaultValue: string) => {\n return typeof value === 'string' ? value.trim() : defaultValue\n}\n\nexport const isValidNumber = (value: number | undefined, defaultValue: number) => {\n return typeof value === 'number' ? value : defaultValue\n}\n\nexport const isValidBoolean = (value: boolean | undefined, defaultValue: boolean) => {\n return typeof value === 'boolean' ? value : defaultValue\n}\n\nexport const isValidArray = (value: any[] | undefined, defaultValue: any[]) => {\n return Array.isArray(value) ? value : defaultValue\n}\n\nexport const isValidEnum = <T>(value: any | T, defaultValue: T, enumValues: T[]): T => {\n return enumValues.includes(value as T) ? value as T : defaultValue\n}\n\nexport const isValidFunction = (value: any, defaultValue: any) => {\n return typeof value === 'function' ? value : defaultValue\n}","import { EventEmitter } from 'events'\n\nexport const recorderEventBus = new EventEmitter()","import io, { Socket } from 'socket.io-client'\n\nimport { ISession } from '../types'\nimport { recorderEventBus } from '../eventBus'\nimport messagingService from '../services/messaging.service'\nimport {\n SESSION_ADD_EVENT,\n SESSION_AUTO_CREATED,\n SESSION_STOPPED_EVENT,\n SESSION_SUBSCRIBE_EVENT,\n SESSION_UNSUBSCRIBE_EVENT,\n} from '../config'\n\nconst MAX_RECONNECTION_ATTEMPTS = 2\n\nexport class RrwebEventExporter {\n private socket: Socket | null = null\n private queue: any[] = []\n private isConnecting: boolean = false\n private isConnected: boolean = false\n private usePostMessage: boolean = false\n private attempts: number = 0\n private sessionId: string | null = null\n\n constructor(private options: { socketUrl: string, apiKey: string, usePostMessageFallback?: boolean }) {\n\n }\n\n private init(): void {\n if (this.isConnecting || this.isConnected) return\n this.attempts++\n this.isConnecting = true\n this.usePostMessage = false\n this.socket = io(this.options.socketUrl, {\n path: '/v0/radar/ws',\n auth: {\n 'x-api-key': this.options.apiKey,\n },\n reconnectionAttempts: 2,\n transports: ['websocket'],\n })\n\n // this.socket.on('connect', () => {\n // this.isConnecting = false\n // this.isConnected = true\n // this.usePostMessage = false\n // this.flushQueue()\n // })\n\n this.socket.on('ready', () => {\n this.isConnecting = false\n this.isConnected = true\n this.usePostMessage = false\n this.flushQueue()\n })\n\n this.socket.on('disconnect', (err: any) => {\n this.isConnecting = false\n this.isConnected = false\n })\n\n this.socket.on('connect_error', (err: any) => {\n this.isConnecting = false\n this.isConnected = false\n this.checkReconnectionAttempts()\n })\n\n this.socket.on(SESSION_STOPPED_EVENT, (data: any) => {\n recorderEventBus.emit(SESSION_STOPPED_EVENT, data)\n this.unsubscribeFromSession()\n })\n\n this.socket.on(SESSION_AUTO_CREATED, (data: any) => {\n recorderEventBus.emit(SESSION_AUTO_CREATED, data)\n })\n }\n\n private checkReconnectionAttempts(): void {\n if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {\n this.usePostMessage = !!this.options.usePostMessageFallback\n this.flushQueue()\n }\n }\n\n private sendViaPostMessage(event: any): void {\n messagingService.sendMessage('rrweb-event', event)\n }\n\n private flushQueue(): void {\n while (this.queue.length > 0 && (this.usePostMessage || this.socket?.connected)) {\n const event = this.queue.shift()\n if (!event) continue\n\n if (this.usePostMessage) {\n this.sendViaPostMessage(event.data)\n } else if (this.socket?.connected) {\n this.socket.emit(event.name, event.data)\n }\n }\n }\n\n private unsubscribeFromSession() {\n const payload = {\n debugSessionId: this.sessionId,\n }\n if (this.usePostMessage) {\n messagingService.sendMessage('socket-emit', { event: SESSION_UNSUBSCRIBE_EVENT, data: payload })\n } else if (this.socket?.connected) {\n this.socket.emit(SESSION_UNSUBSCRIBE_EVENT, payload)\n }\n }\n\n public send(event: any): void {\n if (this.usePostMessage) {\n this.sendViaPostMessage(event)\n } else if (this.socket?.connected) {\n this.socket.emit(SESSION_ADD_EVENT, event)\n } else {\n this.queue.push({ data: event, name: SESSION_ADD_EVENT })\n this.init()\n }\n }\n\n public subscribeToSession(session: ISession): void {\n this.sessionId = session.shortId || session._id\n const payload = {\n projectId: session.project,\n workspaceId: session.workspace,\n debugSessionId: this.sessionId,\n sessionType: session.creationType,\n }\n if (this.usePostMessage) {\n this.sendViaPostMessage({ type: SESSION_SUBSCRIBE_EVENT, ...payload })\n } else if (this.socket?.connected) {\n this.socket.emit(SESSION_SUBSCRIBE_EVENT, payload)\n } else {\n this.queue.push({ data: payload, name: SESSION_SUBSCRIBE_EVENT })\n this.init()\n }\n }\n\n public close(): void {\n if (this.usePostMessage) {\n this.sendViaPostMessage({ type: 'close' })\n }\n if (this.socket?.connected) {\n setTimeout(() => {\n this.unsubscribeFromSession()\n this.attempts = 0\n this.isConnected = false\n this.isConnecting = false\n this.socket?.disconnect()\n this.socket = null\n }, 500)\n }\n }\n}\n","\nclass MessagingService {\n private isBrowser: boolean\n private promiseIdCounter: number = 0\n private promiseMap: Map<string, PromiseHandler> = new Map()\n private messagingServices: Map<string, Array<(payload: any) => void>> = new Map()\n\n constructor() {\n this.isBrowser = typeof window !== 'undefined'\n this.setupMessageListener()\n }\n\n private generatePromiseId(): string {\n return `promise_${++this.promiseIdCounter}`\n }\n\n public sendMessage(action: string, payload?: any): void {\n if (!this.isBrowser) return\n\n const message: MessagePayload = {\n type: 'MULTIPLAYER_SESSION_DEBUGGER_LIB',\n action,\n payload,\n }\n\n window.postMessage(message, '*')\n }\n\n public sendMessagePromise(action: string, payload?: any): Promise<any> {\n if (!this.isBrowser) {\n return Promise.reject(new Error('Not in browser environment'))\n }\n\n const promiseId = this.generatePromiseId()\n\n const promise = new Promise<any>((resolve, reject) => {\n this.promiseMap.set(promiseId, { resolve, reject })\n })\n\n const message: MessagePayload = {\n type: 'MULTIPLAYER_SESSION_DEBUGGER_LIB',\n action,\n payload,\n promiseId,\n }\n\n window.postMessage(message, '*')\n\n return promise\n }\n\n public on(action: string, handler: (payload: any) => void): void {\n const handlers = this.messagingServices.get(action) || []\n handlers.push(handler)\n this.messagingServices.set(action, handlers)\n }\n\n public off(action: string, handler?: (payload: any) => void): void {\n if (!handler) {\n // Remove all handlers for this action\n this.messagingServices.delete(action)\n return\n }\n\n const handlers = this.messagingServices.get(action)\n if (handlers) {\n const index = handlers.indexOf(handler)\n if (index !== -1) {\n handlers.splice(index, 1)\n if (handlers.length === 0) {\n this.messagingServices.delete(action)\n } else {\n this.messagingServices.set(action, handlers)\n }\n }\n }\n }\n\n private setupMessageListener(): void {\n if (!this.isBrowser) return\n window.addEventListener('message', (event: MessageEvent) => {\n const { type, action, payload, promiseId } = event.data as MessagePayload\n\n if (type !== 'MULTIPLAYER_SESSION_DEBUGGER_EXTENSION' || !action) return\n\n // Handle promise response\n if (promiseId && this.promiseMap.has(promiseId)) {\n const { resolve, reject } = this.promiseMap.get(promiseId)!\n const { error, response } = payload as messagingServiceResponse\n if (error) {\n reject(error)\n } else {\n resolve(response)\n }\n this.promiseMap.delete(promiseId)\n return\n }\n\n // Handle regular message handlers\n const handlers = this.messagingServices.get(action)\n if (handlers) {\n handlers.forEach(handler => handler(payload))\n }\n })\n }\n}\n\n\ninterface messagingServiceResponse {\n error?: Error\n response?: any\n}\n\ninterface PromiseHandler {\n resolve: (value: any) => void\n reject: (reason?: any) => void\n}\n\ninterface MessagePayload {\n type: string\n action: string\n payload?: any\n promiseId?: string\n}\n\n\nconst messagingService = new MessagingService()\n\nexport default messagingService","import { SessionType } from '@multiplayer-app/session-recorder-common'\n\nexport interface IResourceAttributes {\n browserInfo?: string,\n cookiesEnabled?: string,\n deviceInfo?: string,\n hardwareConcurrency?: number,\n osInfo?: string,\n pixelRatio?: number,\n screenSize?: string,\n packageVersion?: string,\n [key: string]: any\n}\n\nexport interface ISessionAttributes {\n userEmail?: string\n userId?: string,\n userName?: string,\n accountId?: string,\n accountName?: string,\n [key: string]: any\n}\n\nexport interface ISessionView {\n _id: string\n name: string\n components?: string[]\n}\n\nexport interface ISession {\n _id: string\n shortId: string\n workspace: string\n project: string\n continuousDebugSession?: string\n creationType: SessionType\n name: string\n startedAt: string | Date\n stoppedAt: string | Date\n durationInSeconds?: number\n createdAt: string | Date\n updatedAt: string | Date\n tags: any[]\n\n resourceAttributes?: IResourceAttributes\n sessionAttributes?: ISessionAttributes\n views: ISessionView[]\n starred: boolean\n starredItems: string[]\n s3Files: {\n _id?: string\n bucket: string\n key: string\n dataType: DebugSessionDataType\n url?: string\n }[]\n finishedS3Transfer?: boolean\n tempApiKey?: string\n}\n\nexport enum DebugSessionDataType {\n OTLP_TRACES = 'OTLP_TRACES',\n OTLP_LOGS = 'OTLP_LOGS',\n RRWEB_EVENTS = 'RRWEB_EVENTS',\n}\n","\nimport { SessionType } from '@multiplayer-app/session-recorder-common'\nimport { Span } from '@opentelemetry/api'\nimport { PropagateTraceHeaderCorsUrls } from '@opentelemetry/sdk-trace-web'\nimport type {\n MaskTextFn,\n MaskInputFn,\n MaskInputOptions,\n} from 'rrweb-snapshot'\nimport type { maskTextClass } from '@rrweb/types'\nimport { LogData } from '@rrweb/rrweb-plugin-console-record'\nimport { Observable } from 'lib0/observable'\nimport type { ISession } from './session'\n\nexport enum WidgetButtonPlacement {\n topLeft = 'top-left',\n topRight = 'top-right',\n bottomLeft = 'bottom-left',\n bottomRight = 'bottom-right',\n}\n\nexport interface SessionRecorderOptions {\n /**\n * The API key used to authenticate with the session debugger service.\n */\n apiKey: string\n\n /**\n * The version of the application using the session debugger.\n */\n version: string\n\n /**\n * The name of the application being debugged.\n */\n application: string\n\n /**\n * The environment where the application is running (e.g., 'production', 'staging').\n */\n environment: string\n\n /**\n * (Optional) OTLP collector endpoint.\n */\n exporterEndpoint?: string\n\n /**\n * (Optional) Base URL for the API calls.\n * This allows customization of the API endpoint for sending session data.\n */\n apiBaseUrl?: string\n\n /**\n * (Optional) An array of URLs or regular expressions that should be ignored by the session debugger.\n * Any URL that partially matches any regex in this array will not be traced.\n * Additionally, URLs that exactly match any string in the array will also be ignored.\n */\n ignoreUrls?: Array<string | RegExp>\n\n /**\n * (Optional) Determines where the record button should be placed on the screen.\n * Possible values:\n * - 'top-left'\n * - 'top-right'\n * - 'bottom-left'\n * - 'bottom-right'\n */\n widgetButtonPlacement?: WidgetButtonPlacement\n\n /**\n * (Optional) Enables the continuous recording feature and UI.\n * If false, the UI toggle is hidden and attempts to start a continuous\n * session are ignored.\n * @default true\n */\n showContinuousRecording?: boolean\n\n /**\n * (Optional) If false, the session recording widget will be hidden from the UI.\n * Use this option if you want to enable session recording without a visible UI element.\n * @default showWidget = true\n */\n showWidget?: boolean\n\n /**\n * (Optional) If true, enables the recording and replaying of canvas elements.\n * Pass `true` to capture canvas interactions in the session recording.\n * @default recordCanvas = false\n */\n recordCanvas?: boolean\n\n /**\n * (Optional) Trace ID Ratio for sampling\n * @default 0.15\n */\n sampleTraceRatio?: number\n\n /**\n * (Optional) URLs or regex patterns for CORS trace header propagation\n */\n propagateTraceHeaderCorsUrls?: PropagateTraceHeaderCorsUrls\n\n /**\n * (Optional) If true, schematizes document span payload\n * @default true\n */\n schemifyDocSpanPayload?: boolean\n\n /**\n * (Optional) Maximum size for capturing HTTP payload\n * @default 100000\n */\n maxCapturingHttpPayloadSize?: number\n\n /**\n * (Optional) If true, uses post message fallback\n * @default false\n */\n usePostMessageFallback?: boolean\n\n\n /** If true, captures body in traces\n * @default true\n */\n captureBody?: boolean\n /** If true, captures headers in traces\n * @default true\n */\n captureHeaders?: boolean\n\n /**\n * (Optional) Configuration for masking sensitive data in session recordings\n * @default { maskAllInputs: true, isContentMaskingEnabled: true }\n */\n masking?: MaskingConfig\n\n /**\n * (Optional) Configuration for customizable UI text and labels\n * @default See PopoverTextConfig defaults\n */\n widgetTextOverrides?: WidgetTextOverridesConfig\n\n}\n\n/**\n * Interface for masking configuration\n */\nexport interface MaskingConfig {\n // Recorder masking\n /** If true, masks all input fields in the recording\n * @default true\n */\n maskAllInputs?: boolean;\n /** Class-based masking configuration - can be string or RegExp */\n maskTextClass?: maskTextClass;\n /** CSS selector for elements that should be masked */\n maskTextSelector?: string;\n /** Specific options for masking different types of inputs */\n maskInputOptions?: MaskInputOptions;\n /** Custom function for input masking */\n maskInput?: MaskInputFn;\n /** Custom function for text masking */\n maskText?: MaskTextFn;\n /** Custom function for console event masking */\n maskConsoleEvent?: (payload: LogData) => LogData;\n\n\n // Span masking\n /** If true, enables masking for debug span payload in traces\n * @default true\n */\n isContentMaskingEnabled?: boolean;\n /** Custom function for masking body in traces */\n maskBody?: (payload: any, span: Span) => any;\n /** Custom function for masking headers in traces */\n maskHeaders?: (headers: any, span: any) => any;\n\n\n /** List of body fields to mask in traces */\n maskBodyFieldsList?: string[]\n /** List of headers to mask in traces */\n maskHeadersList?: string[]\n\n /** List of headers to include in traces (if specified, only these headers will be captured) */\n headersToInclude?: string[]\n /** List of headers to exclude from traces */\n headersToExclude?: string[]\n}\n\n/**\n * Base configuration interface with common properties\n */\nexport interface BaseConfig {\n /** API key for authentication */\n apiKey: string\n /** Base URL for the API calls */\n apiBaseUrl: string\n /** Base URL for the API calls */\n exporterEndpoint: string\n /** Whether to use post message fallback */\n usePostMessageFallback?: boolean\n}\n\n/**\n * Configuration interface for the Tracer class\n */\nexport type TracerBrowserMasking = Pick<MaskingConfig, 'isContentMaskingEnabled' | 'maskBody' | 'maskHeaders' | 'maskBodyFieldsList' | 'maskHeadersList' | 'headersToInclude' | 'headersToExclude'>;\n\nexport interface TracerBrowserConfig extends BaseConfig {\n /** Application name */\n application: string\n /** Application version */\n version: string\n /** Environment (e.g., 'production', 'staging') */\n environment: string\n /** URLs to ignore during tracing */\n ignoreUrls: Array<string | RegExp>\n /** Trace ID ratio for sampling */\n sampleTraceRatio: number\n /** URLs for CORS trace header propagation */\n propagateTraceHeaderCorsUrls: PropagateTraceHeaderCorsUrls\n /** Whether to schematize document span payload */\n schemifyDocSpanPayload: boolean\n /** Maximum size for capturing HTTP payload */\n maxCapturingHttpPayloadSize: number,\n /** If true, captures body in traces\n * @default true\n */\n captureBody: boolean\n /** If true, captures headers in traces\n * @default true\n */\n captureHeaders: boolean\n /** Configuration for masking sensitive data in session recordings */\n masking: TracerBrowserMasking\n}\n\n/**\n * Configuration interface for the Recorder class\n */\nexport type RecorderMasking = Pick<MaskingConfig, 'maskAllInputs' | 'maskTextClass' | 'maskTextSelector' | 'maskInputOptions' | 'maskInput' | 'maskText' | 'maskConsoleEvent'>;\n\nexport interface RecorderConfig extends BaseConfig {\n /** Whether to enable canvas recording */\n recordCanvas: boolean\n /** Configuration for masking sensitive data in session recordings */\n masking?: RecorderMasking\n}\n\n/**\n * Configuration interface for the SessionWidget class\n */\nexport interface SessionWidgetConfig {\n /** Whether to show the widget */\n showWidget: boolean\n /** Placement of the widget button */\n widgetButtonPlacement: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n /** Whether continuous recording feature is enabled */\n showContinuousRecording: boolean\n /** Configuration for customizable UI text and labels */\n widgetTextOverrides: WidgetTextOverridesConfig\n}\n\n/**\n * Interface for customizable widget text configuration\n */\nexport interface WidgetTextOverridesConfig {\n /** Title for the initial popover when continuous recording is enabled */\n initialTitleWithContinuous?: string\n /** Title for the initial popover when continuous recording is disabled */\n initialTitleWithoutContinuous?: string\n /** Description for the initial popover when continuous recording is enabled */\n initialDescriptionWithContinuous?: string\n /** Description for the initial popover when continuous recording is disabled */\n initialDescriptionWithoutContinuous?: string\n /** Label for the continuous recording toggle */\n continuousRecordingLabel?: string\n /** Text for the start recording button */\n startRecordingButtonText?: string\n /** Title for the final popover */\n finalTitle?: string\n /** Description for the final popover */\n finalDescription?: string\n /** Placeholder text for the comment textarea */\n commentPlaceholder?: string\n /** Text for the save button in final popover */\n saveButtonText?: string\n /** Text for the cancel button in final popover */\n cancelButtonText?: string\n /** Title for the continuous recording overlay */\n continuousOverlayTitle?: string\n /** Description for the continuous recording overlay */\n continuousOverlayDescription?: string\n /** Text for the save last snapshot button */\n saveLastSnapshotButtonText?: string\n /** Title for the submit session dialog */\n submitDialogTitle?: string\n /** Subtitle for the submit session dialog */\n submitDialogSubtitle?: string\n /** Label for the comment field in submit dialog */\n submitDialogCommentLabel?: string\n /** Placeholder for the comment field in submit dialog */\n submitDialogCommentPlaceholder?: string\n /** Text for the submit button in dialog */\n submitDialogSubmitText?: string\n /** Text for the cancel button in dialog */\n submitDialogCancelText?: string\n}\n\n/**\n * Configuration interface for the ApiService class\n */\nexport interface ApiServiceConfig extends BaseConfig { }\n\nexport interface SessionRecorderConfigs extends Required<SessionRecorderOptions> { }\n\nexport enum SessionState {\n started = '2',\n paused = '1',\n stopped = '0',\n}\n\nexport type SessionRecorderEvents = 'state-change' | 'init' | 'error'\n\nexport interface ISessionRecorder extends Observable<SessionRecorderEvents> {\n /**\n * The current session ID\n */\n readonly sessionId: string | null\n\n /**\n * Whether continuous recording is enabled\n */\n readonly continuousRecording: boolean\n\n /**\n * The current debug session object\n */\n readonly session: ISession | null\n\n /**\n * The type of session (plain or continuous)\n */\n readonly sessionType: SessionType\n\n /**\n * The current state of the session\n */\n readonly sessionState: SessionState | null\n\n\n /**\n * Session attributes for additional context\n */\n readonly sessionAttributes: Record<string, any>\n\n /**\n * Current error message\n */\n error: string\n\n /**\n * The HTML button element for the session widget's recorder button\n */\n readonly sessionWidgetButtonElement: HTMLButtonElement\n\n /**\n * Initialize the session debugger with custom configurations\n * @param configs - custom configurations for session debugger\n */\n init(configs: SessionRecorderOptions): void\n\n /**\n * Save the continuous recording session\n * @returns Promise that resolves to the save response\n */\n save(): Promise<any>\n\n /**\n * Start a new session\n * @param type - the type of session to start\n * @param session - optional existing session to start\n */\n start(type?: SessionType, session?: ISession): void\n\n /**\n * Stop the current session with an optional comment\n * @param comment - user-provided comment to include in session feedback metadata\n */\n stop(comment?: string): Promise<void>\n\n /**\n * Cancel the current session\n */\n cancel(): Promise<void>\n\n /**\n * Pause the current session\n */\n pause(): Promise<void>\n\n /**\n * Resume the current session\n */\n resume(): Promise<void>\n\n /**\n * Set the session metadata\n * @param attributes - the attributes to set\n */\n setSessionAttributes(attributes: Record<string, any>): void\n\n /**\n * Set a custom click handler for the recording button\n * @param handler - function that will be invoked when the button is clicked\n */\n set recordingButtonClickHandler(handler: () => boolean | void)\n}\n\nexport type Breaker = {}\n","import { SessionType } from './type';\nimport { MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, } from './constants/constants.base';\nimport { getIdGenerator } from './sdk';\nvar SessionRecorderIdGenerator = /** @class */ (function () {\n function SessionRecorderIdGenerator() {\n this.generateLongId = getIdGenerator(16);\n this.generateShortId = getIdGenerator(8);\n this.sessionShortId = '';\n this.sessionType = SessionType.PLAIN;\n }\n SessionRecorderIdGenerator.prototype.generateTraceId = function () {\n var traceId = this.generateLongId();\n if (this.sessionShortId) {\n var sessionTypePrefix = '';\n switch (this.sessionType) {\n case SessionType.CONTINUOUS:\n sessionTypePrefix = MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX;\n break;\n default:\n sessionTypePrefix = MULTIPLAYER_TRACE_DEBUG_PREFIX;\n }\n var prefix = \"\".concat(sessionTypePrefix).concat(this.sessionShortId);\n var sessionTraceId = \"\".concat(prefix).concat(traceId.substring(prefix.length, traceId.length));\n return sessionTraceId;\n }\n return traceId;\n };\n SessionRecorderIdGenerator.prototype.generateSpanId = function () {\n return this.generateShortId();\n };\n SessionRecorderIdGenerator.prototype.setSessionId = function (sessionShortId, sessionType) {\n if (sessionType === void 0) { sessionType = SessionType.PLAIN; }\n this.sessionShortId = sessionShortId;\n this.sessionType = sessionType;\n };\n return SessionRecorderIdGenerator;\n}());\nexport { SessionRecorderIdGenerator };\n//# sourceMappingURL=SessionRecorderIdGenerator.js.map","import { isValidTraceId } from '@opentelemetry/api';\nimport { SamplingDecision, } from '@opentelemetry/sdk-trace-base';\nimport { MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, } from './constants/constants.base';\nvar SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {\n function SessionRecorderTraceIdRatioBasedSampler(_ratio) {\n if (_ratio === void 0) { _ratio = 0; }\n this._ratio = _ratio;\n this._ratio = this._normalize(_ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n SessionRecorderTraceIdRatioBasedSampler.prototype.shouldSample = function (context, traceId) {\n if (traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX)\n || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)) {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n var decision = SamplingDecision.NOT_RECORD;\n if (isValidTraceId(traceId)\n && this._accumulate(traceId) < this._upperBound) {\n decision = SamplingDecision.RECORD_AND_SAMPLED;\n }\n return { decision: decision };\n };\n SessionRecorderTraceIdRatioBasedSampler.prototype.toString = function () {\n return \"SessionRecorderTraceIdRatioBasedSampler{\".concat(this._ratio, \"}\");\n };\n SessionRecorderTraceIdRatioBasedSampler.prototype._normalize = function (ratio) {\n if (typeof ratio !== 'number' || isNaN(ratio))\n return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n };\n SessionRecorderTraceIdRatioBasedSampler.prototype._accumulate = function (traceId) {\n var accumulation = 0;\n for (var i = 0; i < traceId.length / 8; i++) {\n var pos = i * 8;\n var part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n };\n return SessionRecorderTraceIdRatioBasedSampler;\n}());\nexport { SessionRecorderTraceIdRatioBasedSampler };\n//# sourceMappingURL=SessionRecorderTraceIdRatioBasedSampler.js.map","/**\n * @deprecated\n */\nexport var MULTIPLAYER_TRACE_DOC_PREFIX = 'd0cd0c';\nexport var MULTIPLAYER_TRACE_DEBUG_PREFIX = 'debdeb';\nexport var MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX = 'cdbcdb';\nexport var MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH = 16;\n/**\n * @deprecated Use MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL instead\n */\nexport var MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL = 'https://api.multiplayer.app/v1/traces';\n/**\n * @deprecated Use MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_HTTP_URL instead\n */\nexport var MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_URL = 'https://api.multiplayer.app/v1/logs';\nexport var MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL = 'https://otlp.multiplayer.app/v1/traces';\nexport var MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_HTTP_URL = 'https://otlp.multiplayer.app/v1/logs';\nexport var MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_GRPC_URL = 'https://otlp.multiplayer.app:4317/v1/traces';\nexport var MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_GRPC_URL = 'https://otlp.multiplayer.app:4317/v1/logs';\nexport var MULTIPLAYER_BASE_API_URL = 'https://api.multiplayer.app';\nexport var MULTIPLAYER_ATTRIBUTE_PREFIX = 'multiplayer.';\nexport var ATTR_MULTIPLAYER_WORKSPACE_ID = 'multiplayer.workspace.id';\nexport var ATTR_MULTIPLAYER_PROJECT_ID = 'multiplayer.project.id';\nexport var ATTR_MULTIPLAYER_PLATFORM_ID = 'multiplayer.platform.id';\nexport var ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE = 'multiplayer.session.auto-save';\nexport var ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON = 'multiplayer.session.auto-save.reason';\nexport var ATTR_MULTIPLAYER_PLATFORM_NAME = 'multiplayer.platform.name';\nexport var ATTR_MULTIPLAYER_CLIENT_ID = 'multiplayer.client.id';\nexport var ATTR_MULTIPLAYER_INTEGRATION_ID = 'multiplayer.integration.id';\nexport var ATTR_MULTIPLAYER_SESSION_ID = 'multiplayer.session.id';\nexport var ATTR_MULTIPLAYER_HTTP_PROXY = 'multiplayer.http.proxy';\nexport var ATTR_MULTIPLAYER_HTTP_PROXY_TYPE = 'multiplayer.http.proxy.type';\nexport var ATTR_MULTIPLAYER_HTTP_REQUEST_BODY = 'multiplayer.http.request.body';\nexport var ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY = 'multiplayer.http.response.body';\nexport var ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS = 'multiplayer.http.request.headers';\nexport var ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS = 'multiplayer.http.response.headers';\nexport var ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING = 'multiplayer.http.response.body.encoding';\nexport var ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE = 'multiplayer.rpc.request.message';\nexport var ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE_ENCODING = 'multiplayer.rpc.request.message.encoding';\nexport var ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE = 'multiplayer.rpc.response.message';\nexport var ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE = 'multiplayer.rpc.grpc.request.message';\nexport var ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE_ENCODING = 'multiplayer.rpc.request.message.encoding';\nexport var ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE = 'multiplayer.rpc.grpc.response.message';\nexport var ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY = 'multiplayer.messaging.message.body';\nexport var ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY_ENCODING = 'multiplayer.messaging.message.body.encoding';\nexport var ATTR_MULTIPLAYER_SESSION_RECORDER_VERSION = 'multiplayer.session-recorder.version';\nexport var MASK_PLACEHOLDER = '***MASKED***';\n//# sourceMappingURL=constants.base.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL, MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, } from '../constants/constants.base';\n/**\n * Browser-specific trace exporter for Session Recorder\n * Exports traces via HTTP to Multiplayer's OTLP endpoint with browser-specific optimizations\n * Only exports spans with trace IDs starting with Multiplayer prefixes\n */\nvar SessionRecorderBrowserTraceExporter = /** @class */ (function () {\n function SessionRecorderBrowserTraceExporter(config) {\n if (config === void 0) { config = {}; }\n this.usePostMessage = false;\n var _a = config.url, url = _a === void 0 ? MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL : _a, apiKey = config.apiKey, _b = config.headers, headers = _b === void 0 ? {} : _b, _c = config.timeoutMillis, timeoutMillis = _c === void 0 ? 30000 : _c, _d = config.keepAlive, keepAlive = _d === void 0 ? true : _d, _e = config.concurrencyLimit, concurrencyLimit = _e === void 0 ? 20 : _e, _f = config.postMessageType, postMessageType = _f === void 0 ? 'MULTIPLAYER_SESSION_DEBUGGER_LIB' : _f, _g = config.postMessageTargetOrigin, postMessageTargetOrigin = _g === void 0 ? '*' : _g;\n this.config = __assign(__assign({}, config), { url: url, apiKey: apiKey, headers: headers, timeoutMillis: timeoutMillis, keepAlive: keepAlive, concurrencyLimit: concurrencyLimit });\n this.postMessageType = postMessageType;\n this.postMessageTargetOrigin = postMessageTargetOrigin;\n this.exporter = this._createExporter();\n }\n SessionRecorderBrowserTraceExporter.prototype.export = function (spans, resultCallback) {\n var _this = this;\n // Filter spans to only include those with Multiplayer trace prefixes\n var filteredSpans = spans.filter(function (span) {\n var traceId = span.spanContext().traceId;\n return traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX) ||\n traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX);\n });\n // Only proceed if there are filtered spans\n if (filteredSpans.length === 0) {\n resultCallback({ code: 0 });\n return;\n }\n if (this.usePostMessage) {\n this.exportViaPostMessage(filteredSpans, resultCallback);\n return;\n }\n this.exporter.export(filteredSpans, function (result) {\n if (result.code === 0) {\n resultCallback(result);\n }\n else if (_this.config.usePostMessageFallback) {\n _this.usePostMessage = true;\n _this.exportViaPostMessage(filteredSpans, resultCallback);\n }\n else {\n resultCallback(result);\n }\n });\n };\n SessionRecorderBrowserTraceExporter.prototype.shutdown = function () {\n return this.exporter.shutdown();\n };\n SessionRecorderBrowserTraceExporter.prototype.exportViaPostMessage = function (spans, resultCallback) {\n var _this = this;\n if (typeof window === 'undefined') {\n resultCallback({ code: 1 });\n return;\n }\n try {\n window.postMessage({\n action: 'traces',\n type: this.postMessageType,\n payload: spans.map(function (span) { return _this._serializeSpan(span); }),\n }, this.postMessageTargetOrigin);\n resultCallback({ code: 0 });\n }\n catch (e) {\n resultCallback({ code: 1 });\n }\n };\n SessionRecorderBrowserTraceExporter.prototype._serializeSpan = function (span) {\n var _a;\n var spanContext = span.spanContext();\n return {\n _spanContext: spanContext,\n name: span.name,\n kind: span.kind,\n links: span.links,\n ended: span.ended,\n events: span.events,\n status: span.status,\n endTime: span.endTime,\n startTime: span.startTime,\n duration: span.duration,\n attributes: span.attributes,\n parentSpanId: (_a = span.parentSpanContext) === null || _a === void 0 ? void 0 : _a.spanId,\n droppedAttributesCount: span.droppedAttributesCount,\n droppedEventsCount: span.droppedEventsCount,\n droppedLinksCount: span.droppedLinksCount,\n resource: {\n attributes: span.resource.attributes,\n asyncAttributesPending: span.resource.asyncAttributesPending,\n },\n };\n };\n SessionRecorderBrowserTraceExporter.prototype._createExporter = function () {\n return new OTLPTraceExporter({\n url: this.config.url,\n headers: __assign(__assign({ 'Content-Type': 'application/json' }, (this.config.apiKey ? { 'Authorization': this.config.apiKey } : {})), (this.config.headers || {})),\n timeoutMillis: this.config.timeoutMillis,\n keepAlive: this.config.keepAlive,\n concurrencyLimit: this.config.concurrencyLimit,\n });\n };\n SessionRecorderBrowserTraceExporter.prototype.setApiKey = function (apiKey) {\n this.config.apiKey = apiKey;\n this.exporter = this._createExporter();\n };\n return SessionRecorderBrowserTraceExporter;\n}());\nexport { SessionRecorderBrowserTraceExporter };\n//# sourceMappingURL=SessionRecorderBrowserTraceExporter.js.map","var SHARED_CHAR_CODES_ARRAY = Array(32);\nexport var getIdGenerator = function (bytes) {\n return function generateId() {\n for (var i = 0; i < bytes * 2; i++) {\n SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48;\n // valid hex characters in the range 48-57 and 97-102\n if (SHARED_CHAR_CODES_ARRAY[i] >= 58) {\n SHARED_CHAR_CODES_ARRAY[i] += 39;\n }\n }\n return String.fromCharCode.apply(null, SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2));\n };\n};\n//# sourceMappingURL=id-generator.js.map","import { MASK_PLACEHOLDER } from '../constants/constants.base';\nvar MAX_DEPTH = 8;\nexport var sensitiveFields = [\n 'password',\n 'pass',\n 'passwd',\n 'pwd',\n 'token',\n 'access_token',\n 'accessToken',\n 'refresh_token',\n 'refreshToken',\n 'secret',\n 'api_key',\n 'apiKey',\n 'authorization',\n 'auth_token',\n 'authToken',\n 'jwt',\n 'session_id',\n 'sessionId',\n 'sessionToken',\n 'client_secret',\n 'clientSecret',\n 'private_key',\n 'privateKey',\n 'public_key',\n 'publicKey',\n 'key',\n 'encryption_key',\n 'encryptionKey',\n 'credit_card',\n 'creditCard',\n 'card_number',\n 'cardNumber',\n 'cvv',\n 'cvc',\n 'ssn',\n 'sin',\n 'pin',\n 'security_code',\n 'securityCode',\n 'bank_account',\n 'bankAccount',\n 'iban',\n 'swift',\n 'bic',\n 'routing_number',\n 'routingNumber',\n 'license_key',\n 'licenseKey',\n 'otp',\n 'mfa_code',\n 'mfaCode',\n 'phone_number',\n 'phoneNumber',\n 'email',\n 'address',\n 'dob',\n 'tax_id',\n 'taxId',\n 'passport_number',\n 'passportNumber',\n 'driver_license',\n 'driverLicense',\n 'set-cookie',\n 'cookie',\n 'authorization',\n 'proxyAuthorization',\n];\nexport var sensitiveHeaders = [\n 'set-cookie',\n 'cookie',\n 'authorization',\n 'proxyAuthorization',\n];\nvar maskAll = function (value, depth) {\n if (depth === void 0) { depth = 0; }\n var type = typeof value;\n var isObject = type === 'object';\n var isArray = false;\n if (Array.isArray(value)) {\n isArray = true;\n }\n if (depth > MAX_DEPTH && (isObject || isArray)) {\n return undefined;\n }\n if (isArray) {\n return value.map(function (val) { return maskAll(val, depth + 1); }, value);\n }\n if (isObject) {\n for (var key in value) {\n value[key] = maskAll(value[key], depth + 1);\n }\n return value;\n }\n if (type === 'string') {\n return MASK_PLACEHOLDER;\n }\n return value;\n};\nvar maskSelected = function (value, keysToMask) {\n var type = typeof value;\n var isObject = type === 'object';\n var _keysToMask = new Set(keysToMask);\n if (Array.isArray(value)) {\n return value.map(function (val) { return maskSelected(val, keysToMask); }, value);\n }\n if (isObject) {\n for (var key in value) {\n if (_keysToMask.has(key)) {\n value[key] = MASK_PLACEHOLDER;\n }\n else {\n value[key] = maskSelected(value[key], keysToMask);\n }\n }\n return value;\n }\n if (type === 'string') {\n return value;\n }\n return value;\n};\nexport default (function (keysToMask) {\n if (keysToMask === void 0) { keysToMask = []; }\n return function (value, span) {\n var payloadJson;\n try {\n payloadJson = JSON.parse(value);\n }\n catch (_a) {\n payloadJson = value;\n }\n var maskedData;\n if (keysToMask.length) {\n maskedData = maskSelected(payloadJson, keysToMask);\n }\n else {\n maskedData = maskAll(payloadJson);\n }\n if (typeof maskedData !== 'string') {\n maskedData = JSON.stringify(maskedData);\n }\n return maskedData;\n };\n});\n//# sourceMappingURL=mask.js.map","import * as _toJsonSchema from 'to-json-schema';\n// @ts-ignore\nvar toJsonSchema = (_toJsonSchema === null || _toJsonSchema === void 0 ? void 0 : _toJsonSchema.default) || _toJsonSchema;\nvar defaultSchemifyOptions = {\n strings: {\n preProcessFnc: function (value, defaultFnc) {\n if ((value === null || value === void 0 ? void 0 : value.length) >= 30) {\n return defaultFnc('some_string');\n }\n return defaultFnc(value);\n },\n },\n arrays: {\n mode: 'first',\n },\n};\nexport default (function (payload, stringify, options) {\n if (stringify === void 0) { stringify = true; }\n if (options === void 0) { options = defaultSchemifyOptions; }\n if (!payload) {\n return '';\n }\n var payloadJson;\n if (typeof payload === 'string') {\n try {\n payloadJson = JSON.parse(payload);\n }\n catch (_a) {\n return payload;\n }\n }\n else if (typeof payload === 'object') {\n payloadJson = payload;\n }\n else {\n return payload;\n }\n try {\n var schema = toJsonSchema(payloadJson, options);\n if (stringify) {\n return JSON.stringify(schema);\n }\n return schema;\n }\n catch (err) {\n // error can happen when array has items like ['test', 'asd', '1'], type for '1' is null\n return '';\n }\n});\n//# sourceMappingURL=schemify.js.map","export var SessionType;\n(function (SessionType) {\n SessionType[\"CONTINUOUS\"] = \"CONTINUOUS\";\n /**\n * @deprecated Use MANUAL instead\n */\n SessionType[\"PLAIN\"] = \"MANUAL\";\n SessionType[\"MANUAL\"] = \"MANUAL\";\n})(SessionType || (SessionType = {}));\n//# sourceMappingURL=session-type.enum.js.map","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 2000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport, TransportError } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { defaultBinaryType } from \"./transports/websocket-constructor.js\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\n \"polling\",\n \"websocket\",\n \"webtransport\",\n ];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this.upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n this.resetPingTimeout();\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: Polling,\n};\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { createCookieJar, XHR as XMLHttpRequest, } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n if (this.opts.withCredentials) {\n this.cookieJar = createCookieJar();\n }\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, cookieJar: this.cookieJar }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n var _a;\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, true);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(xhr);\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"./websocket-constructor.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n // @ts-ignore\n if (typeof WebTransport !== \"function\") {\n return;\n }\n // @ts-ignore\n this.transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n this.transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this.transport.ready.then(() => {\n this.transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this.writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this.writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this.writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","import { RrwebEventExporter } from './rrweb/exporter'\nimport { SessionRecorderBrowserTraceExporter as TraceExporter } from '@multiplayer-app/session-recorder-common'\n\nwindow['__MP_SDK_EXPORTS__'] = {\n RrwebEventExporter,\n TraceExporter,\n}\n\nexport { RrwebEventExporter, TraceExporter }"],"names":["root","factory","exports","module","define","amd","this","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spreadArray","to","from","pack","arguments","length","l","Array","prototype","slice","concat","API_NAME","NOOP_CONTEXT_MANAGER","NoopContextManager","ContextAPI","getInstance","_instance","setGlobalContextManager","contextManager","registerGlobal","DiagAPI","instance","active","_getContextManager","with","context","fn","thisArg","_a","args","_i","apply","bind","target","getGlobal","disable","unregisterGlobal","_logProxy","funcName","logger","self","setLogger","optionsOrLogLevel","_b","_c","logLevel","DiagLogLevel","INFO","err","Error","stack","message","oldLogger","newLogger","createLogLevelDiagLogger","suppressOverrideMessage","warn","createComponentLogger","options","DiagComponentLogger","verbose","debug","info","TraceAPI","_proxyTracerProvider","ProxyTracerProvider","wrapSpanContext","isSpanContextValid","deleteSpan","getSpan","getActiveSpan","getSpanContext","setSpan","setSpanContext","setGlobalTracerProvider","provider","success","setDelegate","getTracerProvider","getTracer","name","version","ROOT_CONTEXT","_context","enable","createContextKey","description","for","BaseContext","parentContext","_currentContext","Map","getValue","key","get","setValue","set","deleteValue","delete","diag","props","_namespace","namespace","logProxy","unshift","maxLevel","_filterFunc","theLevel","theFunc","NONE","ALL","ERROR","WARN","DEBUG","VERBOSE","major","VERSION","split","GLOBAL_OPENTELEMETRY_API_KEY","_global","_globalThis","type","allowOverride","api","globalVersion","isCompatible","re","ownVersion","acceptedVersions","Set","rejectedVersions","myVersionMatch","match","ownVersionParsed","_reject","v","add","_accept","has","globalVersionMatch","globalVersionParsed","_makeCompatibilityCheck","globalThis","window","g","trace","NonRecordingSpan","_spanContext","INVALID_SPAN_CONTEXT","spanContext","setAttribute","_key","_value","setAttributes","_attributes","addEvent","_name","addLink","_link","addLinks","_links","setStatus","_status","updateName","end","_endTime","isRecording","recordException","_exception","_time","contextApi","NoopTracer","startSpan","Boolean","parentFromContext","startActiveSpan","arg2","arg3","arg4","opts","ctx","span","contextWithSpanSet","undefined","NoopTracerProvider","_version","_options","NOOP_TRACER","ProxyTracer","_provider","_getTracer","_fn","tracer","Reflect","_delegate","getDelegateTracer","NOOP_TRACER_PROVIDER","getDelegate","delegate","SPAN_KEY","INVALID_SPANID","INVALID_TRACEID","traceId","spanId","traceFlags","TraceFlags","VALID_TRACEID_REGEX","VALID_SPANID_REGEX","isValidTraceId","test","SpanStatusCode","ExportResultCode","Math","pow","SECOND_TO_NANOSECONDS","hrTimeToNanoseconds","time","otperformance","performance","OTLPTraceExporter","OTLPExporterBase","constructor","config","super","createLegacyOtlpBrowserExportDelegate","JsonTraceSerializer","items","resultCallback","export","forceFlush","shutdown","BoundedQueueExportPromiseHandler","_concurrencyLimit","_sendingPromises","concurrencyLimit","pushPromise","promise","hasReachedLimit","popPromise","index","indexOf","splice","then","awaitAll","Promise","all","createBoundedQueueExportPromiseHandler","convertLegacyBrowserHttpOptions","signalResourcePath","requiredHeaders","mergeOtlpHttpConfigurationWithDefaults","url","timeoutMillis","headers","wrapStaticHeadersInFunction","getHttpConfigurationDefaults","serializer","useXhr","navigator","sendBeacon","createOtlpXhrExportDelegate","createOtlpSendBeaconExportDelegate","mergeHeaders","userProvidedHeaders","fallbackHeaders","defaultHeaders","Object","assign","validateUserProvidedUrl","URL","userProvidedConfiguration","fallbackConfiguration","defaultConfiguration","mergeOtlpSharedConfigurationWithDefaults","validateAndNormalizeHeaders","agentOptions","getSharedConfigurationDefaults","keepAlive","validateTimeoutMillis","Number","isFinite","compression","isExportRetryable","statusCode","includes","parseRetryAfterToMills","retryAfter","seconds","parseInt","isInteger","delay","Date","getTime","now","createLoggingPartialSuccessResponseHandler","handleResponse","response","hasOwnProperty","isPartialSuccessResponse","partialSuccess","keys","JSON","stringify","createOtlpNetworkExportDelegate","createRetryingTransport","transport","createXhrTransport","createSendBeaconTransport","blobType","OTLPExportDelegate","_transport","_serializer","_responseHandler","_promiseQueue","_timeout","_diagLogger","internalRepresentation","code","FAILED","serializedRequest","serializeRequest","send","status","OTLPExporterError","data","deserializeResponse","SUCCESS","reason","createOtlpExportDelegate","components","settings","promiseHandler","timeout","getJitter","random","RetryingTransport","retry","inMillis","resolve","reject","setTimeout","deadline","result","attempts","nextBackoff","backoff","max","min","retryInMillis","remainingTimeoutMillis","SendBeaconTransport","_params","Blob","parameters","XhrTransport","_parameters","xhr","XMLHttpRequest","open","entries","forEach","k","setRequestHeader","ontimeout","_","onreadystatechange","getResponseHeader","onabort","onerror","partialHeaders","String","intValue","charCode","hexToBinary","hexStr","buf","Uint8Array","offset","hi","charCodeAt","lo","createResource","resource","attributes","toAttributes","droppedAttributesCount","createInstrumentationScope","scope","map","toKeyValue","toAnyValue","t","stringValue","doubleValue","boolValue","bytesValue","isArray","arrayValue","values","kvlistValue","hrTimeToNanos","hrTime","NANOSECONDS","BigInt","encodeAsLongBits","nanos","low","asUintN","high","encodeTimestamp","toString","identity","optionalHexToBinary","str","DEFAULT_ENCODER","encodeHrTime","encodeSpanContext","encodeOptionalSpanContext","getOtlpEncoder","useLongBits","useHex","sdkSpanToOtlpSpan","encoder","parentSpanId","parentSpanContext","traceState","serialize","kind","startTimeUnixNano","startTime","endTimeUnixNano","endTime","events","event","timedEvent","timeUnixNano","toOtlpSpanEvent","droppedEventsCount","links","link","toOtlpLink","droppedLinksCount","createExportTraceServiceRequest","spans","resourceSpans","spanRecordsToResourceSpans","readableSpans","resourceMap","record","ilsMap","instrumentationScopeKey","instrumentationScope","schemaUrl","records","createResourceMap","out","entryIterator","entry","ilmMap","scopeResourceSpans","ilmIterator","ilmEntry","scopeSpans","readableSpan","transformedSpans","arg","request","TextEncoder","encode","decoder","TextDecoder","parse","decode","SamplingDecision","ReflectOwnKeys","R","ReflectApply","receiver","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","isNaN","EventEmitter","init","once","emitter","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","prepend","existing","warning","create","newListener","emit","warned","w","count","console","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","arr","ret","unwrapListeners","arrayClone","listenerCount","copy","addEventListener","wrapListener","removeEventListener","defineProperty","enumerable","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","pop","spliceOne","off","removeAllListeners","rawListeners","eventNames","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","mapToArray","size","setToArray","uid","func","transform","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","exec","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","propertyIsEnumerable","symToStringTag","toStringTag","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","clear","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","object","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","ctorString","isLength","baseUnary","genTag","isArrayLike","isArrayLikeObject","types","require","objectCtorString","allocUnsafe","getPrototype","objectCreate","nativeMax","nativeNow","baseCreate","assignMergeValue","baseAssignValue","assignValue","fromRight","baseFor","iterable","baseKeysIn","nativeKeysIn","isProto","isPrototype","baseMerge","source","srcIndex","srcValue","mergeFunc","safeGet","newValue","isCommon","isTyped","copyArray","isDeep","cloneBuffer","typedArray","arrayBuffer","isPlainObject","isNew","copyObject","keysIn","toPlainObject","initCloneObject","baseMergeDeep","baseRest","start","setToString","otherArgs","overRest","baseSetToString","string","lastCalled","stamp","remaining","shortOut","assigner","merge","sources","guard","isIterateeCall","arrayIncludes","fromIndex","baseFindIndex","baseIsNaN","baseIndexOf","arrayIncludesWith","comparator","cacheHas","cache","baseDifference","valuesLength","arrayMap","outer","computed","valuesIndex","pattern","isHostObject","baseXor","arrays","createSet","seenIndex","baseUniq","xor","isEqual","_require","FORMAT_REGEXPS","isFormat","helpers","stringFormats","typeNames","getType","val","find","typeName","mergeSchemaObjs","schema1","schema2","schema1Keys","schema2Keys","schemaWithoutItems","schemaWithItems","reduce","acc","current","retObj","x","_defineProperties","descriptor","configurable","writable","defaultOptions","required","postProcessFnc","strings","detectFormat","preProcessFnc","mode","objects","additionalProperties","skipReverseFind","filteredFormats","filter","item","ToJsonSchema","Constructor","_classCallCheck","getObjectSchemaDefault","getStringSchemaDefault","objectPostProcessDefault","commmonPostProcessDefault","protoProps","staticProps","_this","schemas","getSchema","obj","_this2","schema","objKeys","properties","propertyName","commonType","arrOfTypes","lastVal","currentType","getCommonTypeFromArrayOfTypes","getCommonArrayItemsType","itemSchema","getCommonArrayItemSchema","_this3","getArraySchemaNoMerging","getArraySchemaMerging","getArraySchemaUniform","getArraySchemaTuple","findIndex","format","getObjectSchema","getArraySchema","getStringSchema","_typeof","number","integer","date","any","email","ipv6","uri","color","hostname","alpha","alphanumeric","input","parseFloat","regex","style","phone","regexp","ipv4","OTEL_MP_SAMPLE_TRACE_RATIO","SESSION_STOPPED_EVENT","SESSION_SUBSCRIBE_EVENT","SESSION_UNSUBSCRIBE_EVENT","SESSION_AUTO_CREATED","SESSION_ADD_EVENT","DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE","mask","sensitiveFields","sensitiveHeaders","SessionRecorderSdk","DEFAULT_MASKING_CONFIG","maskAllInputs","isContentMaskingEnabled","maskBody","maskHeaders","maskBodyFieldsList","maskHeadersList","headersToInclude","headersToExclude","BASE_CONFIG","apiKey","application","environment","showWidget","showContinuousRecording","widgetButtonPlacement","WidgetButtonPlacement","bottomRight","usePostMessageFallback","apiBaseUrl","MULTIPLAYER_BASE_API_URL","exporterEndpoint","MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL","recordCanvas","schemifyDocSpanPayload","ignoreUrls","propagateTraceHeaderCorsUrls","sampleTraceRatio","maxCapturingHttpPayloadSize","captureBody","captureHeaders","masking","widgetTextOverrides","initialTitleWithContinuous","initialTitleWithoutContinuous","initialDescriptionWithContinuous","initialDescriptionWithoutContinuous","continuousRecordingLabel","startRecordingButtonText","finalTitle","finalDescription","commentPlaceholder","saveButtonText","cancelButtonText","continuousOverlayTitle","continuousOverlayDescription","saveLastSnapshotButtonText","submitDialogTitle","submitDialogSubtitle","submitDialogCommentLabel","submitDialogCommentPlaceholder","submitDialogSubmitText","submitDialogCancelText","getMaskingConfig","baseMasking","isValidArray","isValidBoolean","maskTextClass","maskTextSelector","maskInputOptions","maskInput","isValidFunction","maskText","maskConsoleEvent","isValidString","defaultValue","trim","isValidNumber","isValidEnum","enumValues","recorderEventBus","RrwebEventExporter","socket","queue","isConnecting","isConnected","usePostMessage","sessionId","socketUrl","path","auth","reconnectionAttempts","transports","flushQueue","checkReconnectionAttempts","unsubscribeFromSession","sendViaPostMessage","sendMessage","connected","payload","debugSessionId","subscribeToSession","session","shortId","_id","projectId","project","workspaceId","workspace","sessionType","creationType","close","disconnect","promiseIdCounter","promiseMap","messagingServices","isBrowser","setupMessageListener","generatePromiseId","action","postMessage","sendMessagePromise","promiseId","handlers","DebugSessionDataType","SessionState","SessionRecorderIdGenerator","generateLongId","getIdGenerator","generateShortId","sessionShortId","SessionType","PLAIN","generateTraceId","sessionTypePrefix","CONTINUOUS","MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX","MULTIPLAYER_TRACE_DEBUG_PREFIX","prefix","substring","generateSpanId","setSessionId","SessionRecorderTraceIdRatioBasedSampler","_ratio","_normalize","_upperBound","floor","shouldSample","startsWith","decision","RECORD_AND_SAMPLED","NOT_RECORD","_accumulate","ratio","accumulation","pos","ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE","ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON","ATTR_MULTIPLAYER_HTTP_REQUEST_BODY","ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY","ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS","ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS","ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE","ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE","ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE","ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE","ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY","MASK_PLACEHOLDER","__assign","s","p","SessionRecorderBrowserTraceExporter","_d","_e","_f","postMessageType","_g","postMessageTargetOrigin","exporter","_createExporter","filteredSpans","exportViaPostMessage","_serializeSpan","ended","duration","asyncAttributesPending","setApiKey","SHARED_CHAR_CODES_ARRAY","bytes","fromCharCode","maskAll","depth","maskSelected","keysToMask","_keysToMask","payloadJson","maskedData","Emitter","mixin","_callbacks","cb","callbacks","emitReserved","hasListeners","hasCORS","encodeURIComponent","qs","qry","pair","decodeURIComponent","parts","src","b","host","authority","ipv6uri","pathNames","regx","names","queryKey","query","$0","$1","$2","alphabet","prev","seed","num","encoded","yeast","globalThisShim","Socket","protocol","binaryType","defaultBinaryType","writeBuffer","secure","port","installTimerFunctions","location","prevBufferLen","agent","withCredentials","upgrade","timestampParam","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","offlineEventListener","onClose","createTransport","EIO","sid","priorWebsocketSuccess","setTimeoutFn","readyState","setTransport","onDrain","onPacket","onError","probe","failed","onTransportOpen","msg","upgrading","pause","cleanup","flush","freezeTransport","onTransportClose","onclose","onupgrade","onOpen","packet","resetPingTimeout","onHandshake","sendPacket","filterUpgrades","maxPayload","clearTimeoutFn","autoUnref","unref","packets","getWritablePackets","payloadSize","write","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","TransportError","Transport","doOpen","doClose","onData","decodePacket","details","onPause","createUri","_hostname","_port","_query","encodedQuery","websocket","WS","webtransport","WT","polling","Polling","empty","hasXHR2","xdomain","responseType","isSSL","xd","forceBase64","supportsBinary","cookieJar","createCookieJar","poll","total","doPoll","decodePayload","encodePayload","doWrite","timestampRequests","b64","Request","req","method","xhrStatus","pollXhr","pick","extraHeaders","setDisableHeaderCheck","addCookies","requestTimeout","parseCookies","onLoad","document","requestsCount","requests","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","WebSocket","MozWebSocket","usingBrowserWebSocket","isReactNative","product","toLowerCase","check","protocols","ws","addEventListeners","onopen","_socket","closeEvent","onmessage","ev","lastPacket","encodePacket","WebTransport","closed","catch","ready","createBidirectionalStream","stream","decoderStream","createPacketDecoderStream","reader","readable","pipeThrough","getReader","encoderStream","createPacketEncoderStream","pipeTo","writer","getWriter","read","XHR","join","attr","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","clearTimeout","useNativeTimers","BASE64_OVERHEAD","c","utf8Length","ceil","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","chars","lookup","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","withNativeArrayBuffer","encodedPacket","mapBinary","charAt","decodeBase64Packet","decoded","withNativeBlob","isView","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","readAsDataURL","toArray","TEXT_ENCODER","encodePacketToBinary","SEPARATOR","encodedPackets","encodedPayload","decodedPacket","TransformStream","controller","payloadLength","header","setUint8","view","setUint16","setBigUint64","enqueue","TEXT_DECODER","totalLength","chunks","chunk","concatChunks","expectedLength","isBinary","headerArray","getUint16","getUint32","Backoff","ms","factor","jitter","rand","deviation","reset","setMin","setMax","setJitter","parsed","sameNamespace","io","forceNew","multiplex","Manager","connect","nsps","subs","reconnection","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","_readyState","_parser","parser","Encoder","Decoder","_autoConnect","autoConnect","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","maybeReconnectOnOpen","_reconnecting","reconnect","engine","skipReconnect","openSubDestroy","errorSub","timer","onping","ondata","ondecoded","nsp","_destroy","_close","_packet","subDestroy","destroy","onreconnect","attempt","RESERVED_EVENTS","freeze","connect_error","disconnecting","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","_opts","disconnected","subEvents","onpacket","retries","fromQueue","volatile","_addToQueue","PacketType","EVENT","ack","_registerAckCallback","isTransportWritable","notifyOutgoingListeners","ackTimeout","withError","emitWithAck","arg1","tryCount","pending","responseArgs","_drainQueue","force","_sendConnectPacket","CONNECT","_pid","pid","_lastOffset","_clearAcks","some","onconnect","BINARY_EVENT","onevent","ACK","BINARY_ACK","onack","DISCONNECT","ondisconnect","CONNECT_ERROR","emitEvent","_anyListeners","sent","emitBuffered","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","loc","href","deconstructPacket","buffers","packetData","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","replacer","hasBinary","encodeAsString","encodeAsBinary","deconstruction","reviver","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","tryParse","substr","isPayloadValid","finishedReconstruction","reconPack","binData","withNativeFile","File","toJSON","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","d","a","definition","prop","nmd","paths","children","TraceExporter"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack://MultiplayerExporters/webpack/universalModuleDefinition","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/api/context.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/api/diag.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/api/trace.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/context-api.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/context/context.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/diag-api.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/diag/types.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/internal/global-utils.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/internal/semver.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace-api.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/context-utils.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/status.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/api/build/esm/version.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/core/build/esm/ExportResult.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/core/build/esm/common/time.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/core/build/esm/platform/browser/performance.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/exporter-trace-otlp-http/build/esm/platform/browser/OTLPTraceExporter.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/OTLPExporterBase.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/bounded-queue-export-promise-handler.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/configuration/convert-legacy-browser-http-options.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/configuration/create-legacy-browser-delegate.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/configuration/otlp-http-configuration.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/configuration/shared-configuration.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/is-export-retryable.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/logging-response-handler.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/otlp-browser-http-export-delegate.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/otlp-export-delegate.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/otlp-network-export-delegate.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/retrying-transport.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/transport/send-beacon-transport.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/transport/xhr-transport.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/types.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-exporter-base/build/esm/util.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/common/hex-to-binary.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/common/internal.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/common/utils.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/trace/internal.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/otlp-transformer/build/esm/trace/json/trace.js","webpack://MultiplayerExporters/../../node_modules/@opentelemetry/sdk-trace-base/build/esm/Sampler.js","webpack://MultiplayerExporters/../../node_modules/events/events.js","webpack://MultiplayerExporters/../../node_modules/lodash.isequal/index.js","webpack://MultiplayerExporters/../../node_modules/lodash.keys/index.js","webpack://MultiplayerExporters/../../node_modules/lodash.merge/index.js","webpack://MultiplayerExporters/../../node_modules/lodash.xor/index.js","webpack://MultiplayerExporters/../../node_modules/to-json-schema/lib/helpers.js","webpack://MultiplayerExporters/../../node_modules/to-json-schema/lib/index.js","webpack://MultiplayerExporters/../../node_modules/to-json-schema/lib/jsonSchemaHelpers.js","webpack://MultiplayerExporters/./src/config/constants.ts","webpack://MultiplayerExporters/./src/config/defaults.ts","webpack://MultiplayerExporters/./src/config/masking.ts","webpack://MultiplayerExporters/./src/config/validators.ts","webpack://MultiplayerExporters/./src/eventBus.ts","webpack://MultiplayerExporters/./src/rrweb/exporter.ts","webpack://MultiplayerExporters/./src/services/messaging.service.ts","webpack://MultiplayerExporters/./src/types/session.ts","webpack://MultiplayerExporters/./src/types/sessionRecorder.ts","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/SessionRecorderIdGenerator.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/SessionRecorderTraceIdRatioBasedSampler.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/constants/constants.base.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/exporters/SessionRecorderBrowserTraceExporter.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/sdk/id-generator.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/sdk/mask.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/sdk/schemify.js","webpack://MultiplayerExporters/../session-recorder-common/dist/esm/type/session-type.enum.js","webpack://MultiplayerExporters/../../node_modules/@socket.io/component-emitter/lib/esm/index.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/contrib/has-cors.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/contrib/parseqs.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/contrib/parseuri.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/contrib/yeast.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/globalThis.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/index.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/socket.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transport.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/index.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/polling.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/websocket.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/webtransport.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-client/build/esm/util.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/commons.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","webpack://MultiplayerExporters/../../node_modules/engine.io-parser/build/esm/index.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/contrib/backo2.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/index.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/manager.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/on.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/socket.js","webpack://MultiplayerExporters/../../node_modules/socket.io-client/build/esm/url.js","webpack://MultiplayerExporters/../../node_modules/socket.io-parser/build/esm/binary.js","webpack://MultiplayerExporters/../../node_modules/socket.io-parser/build/esm/index.js","webpack://MultiplayerExporters/../../node_modules/socket.io-parser/build/esm/is-binary.js","webpack://MultiplayerExporters/webpack/bootstrap","webpack://MultiplayerExporters/webpack/runtime/compat get default export","webpack://MultiplayerExporters/webpack/runtime/define property getters","webpack://MultiplayerExporters/webpack/runtime/global","webpack://MultiplayerExporters/webpack/runtime/hasOwnProperty shorthand","webpack://MultiplayerExporters/webpack/runtime/make namespace object","webpack://MultiplayerExporters/webpack/runtime/node module decorator","webpack://MultiplayerExporters/./src/exporters.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MultiplayerExporters\"] = factory();\n\telse\n\t\troot[\"MultiplayerExporters\"] = factory();\n})(this, () => {\nreturn ","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nimport { DiagAPI } from './diag';\nvar API_NAME = 'context';\nvar NOOP_CONTEXT_MANAGER = new NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nvar ContextAPI = /** @class */ (function () {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n function ContextAPI() {\n }\n /** Get the singleton instance of the Context API */\n ContextAPI.getInstance = function () {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n return this._instance;\n };\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n ContextAPI.prototype.setGlobalContextManager = function (contextManager) {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n };\n /**\n * Get the currently active context\n */\n ContextAPI.prototype.active = function () {\n return this._getContextManager().active();\n };\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n ContextAPI.prototype.with = function (context, fn, thisArg) {\n var _a;\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], __read(args), false));\n };\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n ContextAPI.prototype.bind = function (context, target) {\n return this._getContextManager().bind(context, target);\n };\n ContextAPI.prototype._getContextManager = function () {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n };\n /** Disable and remove the global context manager */\n ContextAPI.prototype.disable = function () {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n };\n return ContextAPI;\n}());\nexport { ContextAPI };\n//# sourceMappingURL=context.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport { DiagLogLevel, } from '../diag/types';\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nvar API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nvar DiagAPI = /** @class */ (function () {\n /**\n * Private internal constructor\n * @private\n */\n function DiagAPI() {\n function _logProxy(funcName) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger)\n return;\n return logger[funcName].apply(logger, __spreadArray([], __read(args), false));\n };\n }\n // Using self local variable for minification purposes as 'this' cannot be minified\n var self = this;\n // DiagAPI specific functions\n var setLogger = function (logger, optionsOrLogLevel) {\n var _a, _b, _c;\n if (optionsOrLogLevel === void 0) { optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }; }\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n return false;\n }\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n var oldLogger = getGlobal('diag');\n var newLogger = createLogLevelDiagLogger((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : DiagLogLevel.INFO, logger);\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n var stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '<failed to generate stacktrace>';\n oldLogger.warn(\"Current logger will be overwritten from \" + stack);\n newLogger.warn(\"Current logger will overwrite one already registered from \" + stack);\n }\n return registerGlobal('diag', newLogger, self, true);\n };\n self.setLogger = setLogger;\n self.disable = function () {\n unregisterGlobal(API_NAME, self);\n };\n self.createComponentLogger = function (options) {\n return new DiagComponentLogger(options);\n };\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n /** Get the singleton instance of the DiagAPI API */\n DiagAPI.instance = function () {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n return this._instance;\n };\n return DiagAPI;\n}());\nexport { DiagAPI };\n//# sourceMappingURL=diag.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport { isSpanContextValid, wrapSpanContext, } from '../trace/spancontext-utils';\nimport { deleteSpan, getActiveSpan, getSpan, getSpanContext, setSpan, setSpanContext, } from '../trace/context-utils';\nimport { DiagAPI } from './diag';\nvar API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nvar TraceAPI = /** @class */ (function () {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n function TraceAPI() {\n this._proxyTracerProvider = new ProxyTracerProvider();\n this.wrapSpanContext = wrapSpanContext;\n this.isSpanContextValid = isSpanContextValid;\n this.deleteSpan = deleteSpan;\n this.getSpan = getSpan;\n this.getActiveSpan = getActiveSpan;\n this.getSpanContext = getSpanContext;\n this.setSpan = setSpan;\n this.setSpanContext = setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n TraceAPI.getInstance = function () {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n };\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n TraceAPI.prototype.setGlobalTracerProvider = function (provider) {\n var success = registerGlobal(API_NAME, this._proxyTracerProvider, DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n };\n /**\n * Returns the global tracer provider.\n */\n TraceAPI.prototype.getTracerProvider = function () {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n };\n /**\n * Returns a tracer from the global tracer provider.\n */\n TraceAPI.prototype.getTracer = function (name, version) {\n return this.getTracerProvider().getTracer(name, version);\n };\n /** Remove the global tracer provider */\n TraceAPI.prototype.disable = function () {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n };\n return TraceAPI;\n}());\nexport { TraceAPI };\n//# sourceMappingURL=trace.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport var context = ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ROOT_CONTEXT } from './context';\nvar NoopContextManager = /** @class */ (function () {\n function NoopContextManager() {\n }\n NoopContextManager.prototype.active = function () {\n return ROOT_CONTEXT;\n };\n NoopContextManager.prototype.with = function (_context, fn, thisArg) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n return fn.call.apply(fn, __spreadArray([thisArg], __read(args), false));\n };\n NoopContextManager.prototype.bind = function (_context, target) {\n return target;\n };\n NoopContextManager.prototype.enable = function () {\n return this;\n };\n NoopContextManager.prototype.disable = function () {\n return this;\n };\n return NoopContextManager;\n}());\nexport { NoopContextManager };\n//# sourceMappingURL=NoopContextManager.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\nvar BaseContext = /** @class */ (function () {\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n function BaseContext(parentContext) {\n // for minification\n var self = this;\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n self.getValue = function (key) { return self._currentContext.get(key); };\n self.setValue = function (key, value) {\n var context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n self.deleteValue = function (key) {\n var context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n return BaseContext;\n}());\n/** The root context is used as the default parent context when there is no active context */\nexport var ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './api/diag';\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n */\nexport var diag = DiagAPI.instance();\n//# sourceMappingURL=diag-api.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getGlobal } from '../internal/global-utils';\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nvar DiagComponentLogger = /** @class */ (function () {\n function DiagComponentLogger(props) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n DiagComponentLogger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('debug', this._namespace, args);\n };\n DiagComponentLogger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('error', this._namespace, args);\n };\n DiagComponentLogger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('info', this._namespace, args);\n };\n DiagComponentLogger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('warn', this._namespace, args);\n };\n DiagComponentLogger.prototype.verbose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('verbose', this._namespace, args);\n };\n return DiagComponentLogger;\n}());\nexport { DiagComponentLogger };\nfunction logProxy(funcName, namespace, args) {\n var logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n args.unshift(namespace);\n return logger[funcName].apply(logger, __spreadArray([], __read(args), false));\n}\n//# sourceMappingURL=ComponentLogger.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DiagLogLevel } from '../types';\nexport function createLogLevelDiagLogger(maxLevel, logger) {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n }\n else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n // In case the logger is null or undefined\n logger = logger || {};\n function _filterFunc(funcName, theLevel) {\n var theFunc = logger[funcName];\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () { };\n }\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n//# sourceMappingURL=logLevelLogger.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nexport var DiagLogLevel;\n(function (DiagLogLevel) {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n /** Identifies an error scenario */\n DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n /** Identifies a warning scenario */\n DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n /** General informational log message */\n DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n /** General debug log message */\n DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n /** Used to set the logging level to include all logging */\n DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel || (DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { _globalThis } from '../platform';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\nvar major = VERSION.split('.')[0];\nvar GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\"opentelemetry.js.api.\" + major);\nvar _global = _globalThis;\nexport function registerGlobal(type, instance, diag, allowOverride) {\n var _a;\n if (allowOverride === void 0) { allowOverride = false; }\n var api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n version: VERSION,\n });\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n var err = new Error(\"@opentelemetry/api: Attempted duplicate registration of API: \" + type);\n diag.error(err.stack || err.message);\n return false;\n }\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n var err = new Error(\"@opentelemetry/api: Registration of version v\" + api.version + \" for \" + type + \" does not match previously registered API v\" + VERSION);\n diag.error(err.stack || err.message);\n return false;\n }\n api[type] = instance;\n diag.debug(\"@opentelemetry/api: Registered a global for \" + type + \" v\" + VERSION + \".\");\n return true;\n}\nexport function getGlobal(type) {\n var _a, _b;\n var globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexport function unregisterGlobal(type, diag) {\n diag.debug(\"@opentelemetry/api: Unregistering a global for \" + type + \" v\" + VERSION + \".\");\n var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n if (api) {\n delete api[type];\n }\n}\n//# sourceMappingURL=global-utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { VERSION } from '../version';\nvar re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nexport function _makeCompatibilityCheck(ownVersion) {\n var acceptedVersions = new Set([ownVersion]);\n var rejectedVersions = new Set();\n var myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return function () { return false; };\n }\n var ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion) {\n return globalVersion === ownVersion;\n };\n }\n function _reject(v) {\n rejectedVersions.add(v);\n return false;\n }\n function _accept(v) {\n acceptedVersions.add(v);\n return true;\n }\n return function isCompatible(globalVersion) {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n var globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n var globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n if (ownVersionParsed.major === 0) {\n if (ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n }\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n };\n}\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexport var isCompatible = _makeCompatibilityCheck(VERSION);\n//# sourceMappingURL=semver.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Updates to this file should also be replicated to @opentelemetry/core too.\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - <object> (When all else fails)\n */\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport var _globalThis = typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : {};\n//# sourceMappingURL=globalThis.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport var trace = TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nvar NonRecordingSpan = /** @class */ (function () {\n function NonRecordingSpan(_spanContext) {\n if (_spanContext === void 0) { _spanContext = INVALID_SPAN_CONTEXT; }\n this._spanContext = _spanContext;\n }\n // Returns a SpanContext.\n NonRecordingSpan.prototype.spanContext = function () {\n return this._spanContext;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setAttribute = function (_key, _value) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setAttributes = function (_attributes) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.addEvent = function (_name, _attributes) {\n return this;\n };\n NonRecordingSpan.prototype.addLink = function (_link) {\n return this;\n };\n NonRecordingSpan.prototype.addLinks = function (_links) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setStatus = function (_status) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.updateName = function (_name) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.end = function (_endTime) { };\n // isRecording always returns false for NonRecordingSpan.\n NonRecordingSpan.prototype.isRecording = function () {\n return false;\n };\n // By default does nothing\n NonRecordingSpan.prototype.recordException = function (_exception, _time) { };\n return NonRecordingSpan;\n}());\nexport { NonRecordingSpan };\n//# sourceMappingURL=NonRecordingSpan.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ContextAPI } from '../api/context';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { isSpanContextValid } from './spancontext-utils';\nvar contextApi = ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nvar NoopTracer = /** @class */ (function () {\n function NoopTracer() {\n }\n // startSpan starts a noop span.\n NoopTracer.prototype.startSpan = function (name, options, context) {\n if (context === void 0) { context = contextApi.active(); }\n var root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n if (root) {\n return new NonRecordingSpan();\n }\n var parentFromContext = context && getSpanContext(context);\n if (isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)) {\n return new NonRecordingSpan(parentFromContext);\n }\n else {\n return new NonRecordingSpan();\n }\n };\n NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) {\n var opts;\n var ctx;\n var fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n var parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n var span = this.startSpan(name, opts, parentContext);\n var contextWithSpanSet = setSpan(parentContext, span);\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n };\n return NoopTracer;\n}());\nexport { NoopTracer };\nfunction isSpanContext(spanContext) {\n return (typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NoopTracer } from './NoopTracer';\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nvar NoopTracerProvider = /** @class */ (function () {\n function NoopTracerProvider() {\n }\n NoopTracerProvider.prototype.getTracer = function (_name, _version, _options) {\n return new NoopTracer();\n };\n return NoopTracerProvider;\n}());\nexport { NoopTracerProvider };\n//# sourceMappingURL=NoopTracerProvider.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NoopTracer } from './NoopTracer';\nvar NOOP_TRACER = new NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nvar ProxyTracer = /** @class */ (function () {\n function ProxyTracer(_provider, name, version, options) {\n this._provider = _provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n ProxyTracer.prototype.startSpan = function (name, options, context) {\n return this._getTracer().startSpan(name, options, context);\n };\n ProxyTracer.prototype.startActiveSpan = function (_name, _options, _context, _fn) {\n var tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n };\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n ProxyTracer.prototype._getTracer = function () {\n if (this._delegate) {\n return this._delegate;\n }\n var tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!tracer) {\n return NOOP_TRACER;\n }\n this._delegate = tracer;\n return this._delegate;\n };\n return ProxyTracer;\n}());\nexport { ProxyTracer };\n//# sourceMappingURL=ProxyTracer.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nvar NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n */\nvar ProxyTracerProvider = /** @class */ (function () {\n function ProxyTracerProvider() {\n }\n /**\n * Get a {@link ProxyTracer}\n */\n ProxyTracerProvider.prototype.getTracer = function (name, version, options) {\n var _a;\n return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer(this, name, version, options));\n };\n ProxyTracerProvider.prototype.getDelegate = function () {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n };\n /**\n * Set the delegate tracer provider\n */\n ProxyTracerProvider.prototype.setDelegate = function (delegate) {\n this._delegate = delegate;\n };\n ProxyTracerProvider.prototype.getDelegateTracer = function (name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n };\n return ProxyTracerProvider;\n}());\nexport { ProxyTracerProvider };\n//# sourceMappingURL=ProxyTracerProvider.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContextKey } from '../context/context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n/**\n * span key\n */\nvar SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context) {\n return context.getValue(SPAN_KEY) || undefined;\n}\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan() {\n return getSpan(ContextAPI.getInstance().active());\n}\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context, span) {\n return context.setValue(SPAN_KEY, span);\n}\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context) {\n return context.deleteValue(SPAN_KEY);\n}\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(context, spanContext) {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context) {\n var _a;\n return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\n//# sourceMappingURL=context-utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TraceFlags } from './trace_flags';\nexport var INVALID_SPANID = '0000000000000000';\nexport var INVALID_TRACEID = '00000000000000000000000000000000';\nexport var INVALID_SPAN_CONTEXT = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nvar VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nvar VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\nexport function isValidTraceId(traceId) {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\nexport function isValidSpanId(spanId) {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext) {\n return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext) {\n return new NonRecordingSpan(spanContext);\n}\n//# sourceMappingURL=spancontext-utils.js.map","/**\n * An enumeration of status codes.\n */\nexport var SpanStatusCode;\n(function (SpanStatusCode) {\n /**\n * The default status.\n */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /**\n * The operation contains an error.\n */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode || (SpanStatusCode = {}));\n//# sourceMappingURL=status.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var TraceFlags;\n(function (TraceFlags) {\n /** Represents no flag set. */\n TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n /** Bit to represent whether trace is sampled in trace flags. */\n TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags || (TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// this is autogenerated file, see scripts/version-update.js\nexport var VERSION = '1.9.0';\n//# sourceMappingURL=version.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var ExportResultCode;\n(function (ExportResultCode) {\n ExportResultCode[ExportResultCode[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExportResultCode[ExportResultCode[\"FAILED\"] = 1] = \"FAILED\";\n})(ExportResultCode || (ExportResultCode = {}));\n//# sourceMappingURL=ExportResult.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { otperformance as performance } from '../platform';\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis) {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\nexport function getTimeOrigin() {\n let timeOrigin = performance.timeOrigin;\n if (typeof timeOrigin !== 'number') {\n const perf = performance;\n timeOrigin = perf.timing && perf.timing.fetchStart;\n }\n return timeOrigin;\n}\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow) {\n const timeOrigin = millisToHrTime(getTimeOrigin());\n const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : performance.now());\n return addHrTimes(timeOrigin, now);\n}\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time) {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time;\n }\n else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < getTimeOrigin()) {\n return hrTime(time);\n }\n else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n }\n else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n }\n else {\n throw TypeError('Invalid input type');\n }\n}\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(startTime, endTime) {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n return [seconds, nanos];\n}\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time) {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time) {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time) {\n return time[0] * 1e3 + time[1] / 1e6;\n}\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time) {\n return time[0] * 1e6 + time[1] / 1e3;\n}\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value) {\n return (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number');\n}\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(value) {\n return (isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date);\n}\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1, time2) {\n const out = [time1[0] + time2[0], time1[1] + time2[1]];\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n return out;\n}\n//# sourceMappingURL=time.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const otperformance = performance;\n//# sourceMappingURL=performance.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { OTLPExporterBase, } from '@opentelemetry/otlp-exporter-base';\nimport { JsonTraceSerializer } from '@opentelemetry/otlp-transformer';\nimport { createLegacyOtlpBrowserExportDelegate } from '@opentelemetry/otlp-exporter-base/browser-http';\n/**\n * Collector Trace Exporter for Web\n */\nexport class OTLPTraceExporter extends OTLPExporterBase {\n constructor(config = {}) {\n super(createLegacyOtlpBrowserExportDelegate(config, JsonTraceSerializer, 'v1/traces', { 'Content-Type': 'application/json' }));\n }\n}\n//# sourceMappingURL=OTLPTraceExporter.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport class OTLPExporterBase {\n _delegate;\n constructor(_delegate) {\n this._delegate = _delegate;\n }\n /**\n * Export items.\n * @param items\n * @param resultCallback\n */\n export(items, resultCallback) {\n this._delegate.export(items, resultCallback);\n }\n forceFlush() {\n return this._delegate.forceFlush();\n }\n shutdown() {\n return this._delegate.shutdown();\n }\n}\n//# sourceMappingURL=OTLPExporterBase.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass BoundedQueueExportPromiseHandler {\n _concurrencyLimit;\n _sendingPromises = [];\n /**\n * @param concurrencyLimit maximum promises allowed in a queue at the same time.\n */\n constructor(concurrencyLimit) {\n this._concurrencyLimit = concurrencyLimit;\n }\n pushPromise(promise) {\n if (this.hasReachedLimit()) {\n throw new Error('Concurrency Limit reached');\n }\n this._sendingPromises.push(promise);\n const popPromise = () => {\n const index = this._sendingPromises.indexOf(promise);\n void this._sendingPromises.splice(index, 1);\n };\n promise.then(popPromise, popPromise);\n }\n hasReachedLimit() {\n return this._sendingPromises.length >= this._concurrencyLimit;\n }\n async awaitAll() {\n await Promise.all(this._sendingPromises);\n }\n}\n/**\n * Promise queue for keeping track of export promises. Finished promises will be auto-dequeued.\n * Allows for awaiting all promises in the queue.\n */\nexport function createBoundedQueueExportPromiseHandler(options) {\n return new BoundedQueueExportPromiseHandler(options.concurrencyLimit);\n}\n//# sourceMappingURL=bounded-queue-export-promise-handler.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getHttpConfigurationDefaults, mergeOtlpHttpConfigurationWithDefaults, } from './otlp-http-configuration';\nimport { wrapStaticHeadersInFunction } from './shared-configuration';\n/**\n * @deprecated this will be removed in 2.0\n *\n * @param config\n * @param signalResourcePath\n * @param requiredHeaders\n */\nexport function convertLegacyBrowserHttpOptions(config, signalResourcePath, requiredHeaders) {\n return mergeOtlpHttpConfigurationWithDefaults({\n url: config.url,\n timeoutMillis: config.timeoutMillis,\n headers: wrapStaticHeadersInFunction(config.headers),\n concurrencyLimit: config.concurrencyLimit,\n }, {}, // no fallback for browser case\n getHttpConfigurationDefaults(requiredHeaders, signalResourcePath));\n}\n//# sourceMappingURL=convert-legacy-browser-http-options.js.map","import { createOtlpSendBeaconExportDelegate, createOtlpXhrExportDelegate, } from '../otlp-browser-http-export-delegate';\nimport { convertLegacyBrowserHttpOptions } from './convert-legacy-browser-http-options';\n/**\n * @deprecated\n * @param config\n * @param serializer\n * @param signalResourcePath\n * @param requiredHeaders\n */\nexport function createLegacyOtlpBrowserExportDelegate(config, serializer, signalResourcePath, requiredHeaders) {\n const useXhr = !!config.headers || typeof navigator.sendBeacon !== 'function';\n const options = convertLegacyBrowserHttpOptions(config, signalResourcePath, requiredHeaders);\n if (useXhr) {\n return createOtlpXhrExportDelegate(options, serializer);\n }\n else {\n return createOtlpSendBeaconExportDelegate(options, serializer);\n }\n}\n//# sourceMappingURL=create-legacy-browser-delegate.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getSharedConfigurationDefaults, mergeOtlpSharedConfigurationWithDefaults, } from './shared-configuration';\nimport { validateAndNormalizeHeaders } from '../util';\nfunction mergeHeaders(userProvidedHeaders, fallbackHeaders, defaultHeaders) {\n const requiredHeaders = {\n ...defaultHeaders(),\n };\n const headers = {};\n return () => {\n // add fallback ones first\n if (fallbackHeaders != null) {\n Object.assign(headers, fallbackHeaders());\n }\n // override with user-provided ones\n if (userProvidedHeaders != null) {\n Object.assign(headers, userProvidedHeaders());\n }\n // override required ones.\n return Object.assign(headers, requiredHeaders);\n };\n}\nfunction validateUserProvidedUrl(url) {\n if (url == null) {\n return undefined;\n }\n try {\n new URL(url);\n return url;\n }\n catch {\n throw new Error(`Configuration: Could not parse user-provided export URL: '${url}'`);\n }\n}\n/**\n * @param userProvidedConfiguration Configuration options provided by the user in code.\n * @param fallbackConfiguration Fallback to use when the {@link userProvidedConfiguration} does not specify an option.\n * @param defaultConfiguration The defaults as defined by the exporter specification\n */\nexport function mergeOtlpHttpConfigurationWithDefaults(userProvidedConfiguration, fallbackConfiguration, defaultConfiguration) {\n return {\n ...mergeOtlpSharedConfigurationWithDefaults(userProvidedConfiguration, fallbackConfiguration, defaultConfiguration),\n headers: mergeHeaders(validateAndNormalizeHeaders(userProvidedConfiguration.headers), fallbackConfiguration.headers, defaultConfiguration.headers),\n url: validateUserProvidedUrl(userProvidedConfiguration.url) ??\n fallbackConfiguration.url ??\n defaultConfiguration.url,\n agentOptions: userProvidedConfiguration.agentOptions ??\n fallbackConfiguration.agentOptions ??\n defaultConfiguration.agentOptions,\n };\n}\nexport function getHttpConfigurationDefaults(requiredHeaders, signalResourcePath) {\n return {\n ...getSharedConfigurationDefaults(),\n headers: () => requiredHeaders,\n url: 'http://localhost:4318/' + signalResourcePath,\n agentOptions: { keepAlive: true },\n };\n}\n//# sourceMappingURL=otlp-http-configuration.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function validateTimeoutMillis(timeoutMillis) {\n if (Number.isFinite(timeoutMillis) && timeoutMillis > 0) {\n return timeoutMillis;\n }\n throw new Error(`Configuration: timeoutMillis is invalid, expected number greater than 0 (actual: '${timeoutMillis}')`);\n}\nexport function wrapStaticHeadersInFunction(headers) {\n if (headers == null) {\n return undefined;\n }\n return () => headers;\n}\n/**\n * @param userProvidedConfiguration Configuration options provided by the user in code.\n * @param fallbackConfiguration Fallback to use when the {@link userProvidedConfiguration} does not specify an option.\n * @param defaultConfiguration The defaults as defined by the exporter specification\n */\nexport function mergeOtlpSharedConfigurationWithDefaults(userProvidedConfiguration, fallbackConfiguration, defaultConfiguration) {\n return {\n timeoutMillis: validateTimeoutMillis(userProvidedConfiguration.timeoutMillis ??\n fallbackConfiguration.timeoutMillis ??\n defaultConfiguration.timeoutMillis),\n concurrencyLimit: userProvidedConfiguration.concurrencyLimit ??\n fallbackConfiguration.concurrencyLimit ??\n defaultConfiguration.concurrencyLimit,\n compression: userProvidedConfiguration.compression ??\n fallbackConfiguration.compression ??\n defaultConfiguration.compression,\n };\n}\nexport function getSharedConfigurationDefaults() {\n return {\n timeoutMillis: 10000,\n concurrencyLimit: 30,\n compression: 'none',\n };\n}\n//# sourceMappingURL=shared-configuration.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function isExportRetryable(statusCode) {\n const retryCodes = [429, 502, 503, 504];\n return retryCodes.includes(statusCode);\n}\nexport function parseRetryAfterToMills(retryAfter) {\n if (retryAfter == null) {\n return undefined;\n }\n const seconds = Number.parseInt(retryAfter, 10);\n if (Number.isInteger(seconds)) {\n return seconds > 0 ? seconds * 1000 : -1;\n }\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After#directives\n const delay = new Date(retryAfter).getTime() - Date.now();\n if (delay >= 0) {\n return delay;\n }\n return 0;\n}\n//# sourceMappingURL=is-export-retryable.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\nfunction isPartialSuccessResponse(response) {\n return Object.prototype.hasOwnProperty.call(response, 'partialSuccess');\n}\n/**\n * Default response handler that logs a partial success to the console.\n */\nexport function createLoggingPartialSuccessResponseHandler() {\n return {\n handleResponse(response) {\n // Partial success MUST never be an empty object according the specification\n // see https://opentelemetry.io/docs/specs/otlp/#partial-success\n if (response == null ||\n !isPartialSuccessResponse(response) ||\n response.partialSuccess == null ||\n Object.keys(response.partialSuccess).length === 0) {\n return;\n }\n diag.warn('Received Partial Success response:', JSON.stringify(response.partialSuccess));\n },\n };\n}\n//# sourceMappingURL=logging-response-handler.js.map","import { createRetryingTransport } from './retrying-transport';\nimport { createXhrTransport } from './transport/xhr-transport';\nimport { createSendBeaconTransport } from './transport/send-beacon-transport';\nimport { createOtlpNetworkExportDelegate } from './otlp-network-export-delegate';\nexport function createOtlpXhrExportDelegate(options, serializer) {\n return createOtlpNetworkExportDelegate(options, serializer, createRetryingTransport({\n transport: createXhrTransport(options),\n }));\n}\nexport function createOtlpSendBeaconExportDelegate(options, serializer) {\n return createOtlpNetworkExportDelegate(options, serializer, createRetryingTransport({\n transport: createSendBeaconTransport({\n url: options.url,\n blobType: options.headers()['Content-Type'],\n }),\n }));\n}\n//# sourceMappingURL=otlp-browser-http-export-delegate.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ExportResultCode } from '@opentelemetry/core';\nimport { OTLPExporterError } from './types';\nimport { createLoggingPartialSuccessResponseHandler } from './logging-response-handler';\nimport { diag } from '@opentelemetry/api';\nclass OTLPExportDelegate {\n _transport;\n _serializer;\n _responseHandler;\n _promiseQueue;\n _timeout;\n _diagLogger;\n constructor(_transport, _serializer, _responseHandler, _promiseQueue, _timeout) {\n this._transport = _transport;\n this._serializer = _serializer;\n this._responseHandler = _responseHandler;\n this._promiseQueue = _promiseQueue;\n this._timeout = _timeout;\n this._diagLogger = diag.createComponentLogger({\n namespace: 'OTLPExportDelegate',\n });\n }\n export(internalRepresentation, resultCallback) {\n this._diagLogger.debug('items to be sent', internalRepresentation);\n // don't do any work if too many exports are in progress.\n if (this._promiseQueue.hasReachedLimit()) {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Concurrent export limit reached'),\n });\n return;\n }\n const serializedRequest = this._serializer.serializeRequest(internalRepresentation);\n if (serializedRequest == null) {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new Error('Nothing to send'),\n });\n return;\n }\n this._promiseQueue.pushPromise(this._transport.send(serializedRequest, this._timeout).then(response => {\n if (response.status === 'success') {\n if (response.data != null) {\n try {\n this._responseHandler.handleResponse(this._serializer.deserializeResponse(response.data));\n }\n catch (e) {\n this._diagLogger.warn('Export succeeded but could not deserialize response - is the response specification compliant?', e, response.data);\n }\n }\n // No matter the response, we can consider the export still successful.\n resultCallback({\n code: ExportResultCode.SUCCESS,\n });\n return;\n }\n else if (response.status === 'failure' && response.error) {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: response.error,\n });\n return;\n }\n else if (response.status === 'retryable') {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new OTLPExporterError('Export failed with retryable status'),\n });\n }\n else {\n resultCallback({\n code: ExportResultCode.FAILED,\n error: new OTLPExporterError('Export failed with unknown error'),\n });\n }\n }, reason => resultCallback({\n code: ExportResultCode.FAILED,\n error: reason,\n })));\n }\n forceFlush() {\n return this._promiseQueue.awaitAll();\n }\n async shutdown() {\n this._diagLogger.debug('shutdown started');\n await this.forceFlush();\n this._transport.shutdown();\n }\n}\n/**\n * Creates a generic delegate for OTLP exports which only contains parts of the OTLP export that are shared across all\n * signals.\n */\nexport function createOtlpExportDelegate(components, settings) {\n return new OTLPExportDelegate(components.transport, components.serializer, createLoggingPartialSuccessResponseHandler(), components.promiseHandler, settings.timeout);\n}\n//# sourceMappingURL=otlp-export-delegate.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createBoundedQueueExportPromiseHandler } from './bounded-queue-export-promise-handler';\nimport { createOtlpExportDelegate, } from './otlp-export-delegate';\nexport function createOtlpNetworkExportDelegate(options, serializer, transport) {\n return createOtlpExportDelegate({\n transport: transport,\n serializer,\n promiseHandler: createBoundedQueueExportPromiseHandler(options),\n }, { timeout: options.timeoutMillis });\n}\n//# sourceMappingURL=otlp-network-export-delegate.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst MAX_ATTEMPTS = 5;\nconst INITIAL_BACKOFF = 1000;\nconst MAX_BACKOFF = 5000;\nconst BACKOFF_MULTIPLIER = 1.5;\nconst JITTER = 0.2;\n/**\n * Get a pseudo-random jitter that falls in the range of [-JITTER, +JITTER]\n */\nfunction getJitter() {\n return Math.random() * (2 * JITTER) - JITTER;\n}\nclass RetryingTransport {\n _transport;\n constructor(_transport) {\n this._transport = _transport;\n }\n retry(data, timeoutMillis, inMillis) {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n this._transport.send(data, timeoutMillis).then(resolve, reject);\n }, inMillis);\n });\n }\n async send(data, timeoutMillis) {\n const deadline = Date.now() + timeoutMillis;\n let result = await this._transport.send(data, timeoutMillis);\n let attempts = MAX_ATTEMPTS;\n let nextBackoff = INITIAL_BACKOFF;\n while (result.status === 'retryable' && attempts > 0) {\n attempts--;\n // use maximum of computed backoff and 0 to avoid negative timeouts\n const backoff = Math.max(Math.min(nextBackoff, MAX_BACKOFF) + getJitter(), 0);\n nextBackoff = nextBackoff * BACKOFF_MULTIPLIER;\n const retryInMillis = result.retryInMillis ?? backoff;\n // return when expected retry time is after the export deadline.\n const remainingTimeoutMillis = deadline - Date.now();\n if (retryInMillis > remainingTimeoutMillis) {\n return result;\n }\n result = await this.retry(data, remainingTimeoutMillis, retryInMillis);\n }\n return result;\n }\n shutdown() {\n return this._transport.shutdown();\n }\n}\n/**\n * Creates an Exporter Transport that retries on 'retryable' response.\n */\nexport function createRetryingTransport(options) {\n return new RetryingTransport(options.transport);\n}\n//# sourceMappingURL=retrying-transport.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\nclass SendBeaconTransport {\n _params;\n constructor(_params) {\n this._params = _params;\n }\n send(data) {\n return new Promise(resolve => {\n if (navigator.sendBeacon(this._params.url, new Blob([data], { type: this._params.blobType }))) {\n // no way to signal retry, treat everything as success\n diag.debug('SendBeacon success');\n resolve({\n status: 'success',\n });\n }\n else {\n resolve({\n status: 'failure',\n error: new Error('SendBeacon failed'),\n });\n }\n });\n }\n shutdown() {\n // Intentionally left empty, nothing to do.\n }\n}\nexport function createSendBeaconTransport(parameters) {\n return new SendBeaconTransport(parameters);\n}\n//# sourceMappingURL=send-beacon-transport.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\nimport { isExportRetryable, parseRetryAfterToMills, } from '../is-export-retryable';\nclass XhrTransport {\n _parameters;\n constructor(_parameters) {\n this._parameters = _parameters;\n }\n send(data, timeoutMillis) {\n return new Promise(resolve => {\n const xhr = new XMLHttpRequest();\n xhr.timeout = timeoutMillis;\n xhr.open('POST', this._parameters.url);\n const headers = this._parameters.headers();\n Object.entries(headers).forEach(([k, v]) => {\n xhr.setRequestHeader(k, v);\n });\n xhr.ontimeout = _ => {\n resolve({\n status: 'failure',\n error: new Error('XHR request timed out'),\n });\n };\n xhr.onreadystatechange = () => {\n if (xhr.status >= 200 && xhr.status <= 299) {\n diag.debug('XHR success');\n resolve({\n status: 'success',\n });\n }\n else if (xhr.status && isExportRetryable(xhr.status)) {\n resolve({\n status: 'retryable',\n retryInMillis: parseRetryAfterToMills(xhr.getResponseHeader('Retry-After')),\n });\n }\n else if (xhr.status !== 0) {\n resolve({\n status: 'failure',\n error: new Error('XHR request failed with non-retryable status'),\n });\n }\n };\n xhr.onabort = () => {\n resolve({\n status: 'failure',\n error: new Error('XHR request aborted'),\n });\n };\n xhr.onerror = () => {\n resolve({\n status: 'failure',\n error: new Error('XHR request errored'),\n });\n };\n xhr.send(data);\n });\n }\n shutdown() {\n // Intentionally left empty, nothing to do.\n }\n}\n/**\n * Creates an exporter transport that uses XHR to send the data\n * @param parameters applied to each request made by transport\n */\nexport function createXhrTransport(parameters) {\n return new XhrTransport(parameters);\n}\n//# sourceMappingURL=xhr-transport.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Interface for handling error\n */\nexport class OTLPExporterError extends Error {\n code;\n name = 'OTLPExporterError';\n data;\n constructor(message, code, data) {\n super(message);\n this.data = data;\n this.code = code;\n }\n}\n//# sourceMappingURL=types.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag } from '@opentelemetry/api';\n/**\n * Parses headers from config leaving only those that have defined values\n * @param partialHeaders\n */\nexport function validateAndNormalizeHeaders(partialHeaders) {\n return () => {\n const headers = {};\n Object.entries(partialHeaders?.() ?? {}).forEach(([key, value]) => {\n if (typeof value !== 'undefined') {\n headers[key] = String(value);\n }\n else {\n diag.warn(`Header \"${key}\" has invalid value (${value}) and will be ignored`);\n }\n });\n return headers;\n };\n}\n//# sourceMappingURL=util.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction intValue(charCode) {\n // 0-9\n if (charCode >= 48 && charCode <= 57) {\n return charCode - 48;\n }\n // a-f\n if (charCode >= 97 && charCode <= 102) {\n return charCode - 87;\n }\n // A-F\n return charCode - 55;\n}\nexport function hexToBinary(hexStr) {\n const buf = new Uint8Array(hexStr.length / 2);\n let offset = 0;\n for (let i = 0; i < hexStr.length; i += 2) {\n const hi = intValue(hexStr.charCodeAt(i));\n const lo = intValue(hexStr.charCodeAt(i + 1));\n buf[offset++] = (hi << 4) | lo;\n }\n return buf;\n}\n//# sourceMappingURL=hex-to-binary.js.map","export function createResource(resource) {\n return {\n attributes: toAttributes(resource.attributes),\n droppedAttributesCount: 0,\n };\n}\nexport function createInstrumentationScope(scope) {\n return {\n name: scope.name,\n version: scope.version,\n };\n}\nexport function toAttributes(attributes) {\n return Object.keys(attributes).map(key => toKeyValue(key, attributes[key]));\n}\nexport function toKeyValue(key, value) {\n return {\n key: key,\n value: toAnyValue(value),\n };\n}\nexport function toAnyValue(value) {\n const t = typeof value;\n if (t === 'string')\n return { stringValue: value };\n if (t === 'number') {\n if (!Number.isInteger(value))\n return { doubleValue: value };\n return { intValue: value };\n }\n if (t === 'boolean')\n return { boolValue: value };\n if (value instanceof Uint8Array)\n return { bytesValue: value };\n if (Array.isArray(value))\n return { arrayValue: { values: value.map(toAnyValue) } };\n if (t === 'object' && value != null)\n return {\n kvlistValue: {\n values: Object.entries(value).map(([k, v]) => toKeyValue(k, v)),\n },\n };\n return {};\n}\n//# sourceMappingURL=internal.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { hrTimeToNanoseconds } from '@opentelemetry/core';\nimport { hexToBinary } from './hex-to-binary';\nexport function hrTimeToNanos(hrTime) {\n const NANOSECONDS = BigInt(1000000000);\n return BigInt(hrTime[0]) * NANOSECONDS + BigInt(hrTime[1]);\n}\nexport function toLongBits(value) {\n const low = Number(BigInt.asUintN(32, value));\n const high = Number(BigInt.asUintN(32, value >> BigInt(32)));\n return { low, high };\n}\nexport function encodeAsLongBits(hrTime) {\n const nanos = hrTimeToNanos(hrTime);\n return toLongBits(nanos);\n}\nexport function encodeAsString(hrTime) {\n const nanos = hrTimeToNanos(hrTime);\n return nanos.toString();\n}\nconst encodeTimestamp = typeof BigInt !== 'undefined' ? encodeAsString : hrTimeToNanoseconds;\nfunction identity(value) {\n return value;\n}\nfunction optionalHexToBinary(str) {\n if (str === undefined)\n return undefined;\n return hexToBinary(str);\n}\nconst DEFAULT_ENCODER = {\n encodeHrTime: encodeAsLongBits,\n encodeSpanContext: hexToBinary,\n encodeOptionalSpanContext: optionalHexToBinary,\n};\nexport function getOtlpEncoder(options) {\n if (options === undefined) {\n return DEFAULT_ENCODER;\n }\n const useLongBits = options.useLongBits ?? true;\n const useHex = options.useHex ?? false;\n return {\n encodeHrTime: useLongBits ? encodeAsLongBits : encodeTimestamp,\n encodeSpanContext: useHex ? identity : hexToBinary,\n encodeOptionalSpanContext: useHex ? identity : optionalHexToBinary,\n };\n}\n//# sourceMappingURL=utils.js.map","import { createInstrumentationScope, createResource, toAttributes, } from '../common/internal';\nimport { getOtlpEncoder } from '../common/utils';\nexport function sdkSpanToOtlpSpan(span, encoder) {\n const ctx = span.spanContext();\n const status = span.status;\n const parentSpanId = span.parentSpanContext?.spanId\n ? encoder.encodeSpanContext(span.parentSpanContext?.spanId)\n : undefined;\n return {\n traceId: encoder.encodeSpanContext(ctx.traceId),\n spanId: encoder.encodeSpanContext(ctx.spanId),\n parentSpanId: parentSpanId,\n traceState: ctx.traceState?.serialize(),\n name: span.name,\n // Span kind is offset by 1 because the API does not define a value for unset\n kind: span.kind == null ? 0 : span.kind + 1,\n startTimeUnixNano: encoder.encodeHrTime(span.startTime),\n endTimeUnixNano: encoder.encodeHrTime(span.endTime),\n attributes: toAttributes(span.attributes),\n droppedAttributesCount: span.droppedAttributesCount,\n events: span.events.map(event => toOtlpSpanEvent(event, encoder)),\n droppedEventsCount: span.droppedEventsCount,\n status: {\n // API and proto enums share the same values\n code: status.code,\n message: status.message,\n },\n links: span.links.map(link => toOtlpLink(link, encoder)),\n droppedLinksCount: span.droppedLinksCount,\n };\n}\nexport function toOtlpLink(link, encoder) {\n return {\n attributes: link.attributes ? toAttributes(link.attributes) : [],\n spanId: encoder.encodeSpanContext(link.context.spanId),\n traceId: encoder.encodeSpanContext(link.context.traceId),\n traceState: link.context.traceState?.serialize(),\n droppedAttributesCount: link.droppedAttributesCount || 0,\n };\n}\nexport function toOtlpSpanEvent(timedEvent, encoder) {\n return {\n attributes: timedEvent.attributes\n ? toAttributes(timedEvent.attributes)\n : [],\n name: timedEvent.name,\n timeUnixNano: encoder.encodeHrTime(timedEvent.time),\n droppedAttributesCount: timedEvent.droppedAttributesCount || 0,\n };\n}\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function createExportTraceServiceRequest(spans, options) {\n const encoder = getOtlpEncoder(options);\n return {\n resourceSpans: spanRecordsToResourceSpans(spans, encoder),\n };\n}\nfunction createResourceMap(readableSpans) {\n const resourceMap = new Map();\n for (const record of readableSpans) {\n let ilsMap = resourceMap.get(record.resource);\n if (!ilsMap) {\n ilsMap = new Map();\n resourceMap.set(record.resource, ilsMap);\n }\n // TODO this is duplicated in basic tracer. Consolidate on a common helper in core\n const instrumentationScopeKey = `${record.instrumentationScope.name}@${record.instrumentationScope.version || ''}:${record.instrumentationScope.schemaUrl || ''}`;\n let records = ilsMap.get(instrumentationScopeKey);\n if (!records) {\n records = [];\n ilsMap.set(instrumentationScopeKey, records);\n }\n records.push(record);\n }\n return resourceMap;\n}\nfunction spanRecordsToResourceSpans(readableSpans, encoder) {\n const resourceMap = createResourceMap(readableSpans);\n const out = [];\n const entryIterator = resourceMap.entries();\n let entry = entryIterator.next();\n while (!entry.done) {\n const [resource, ilmMap] = entry.value;\n const scopeResourceSpans = [];\n const ilmIterator = ilmMap.values();\n let ilmEntry = ilmIterator.next();\n while (!ilmEntry.done) {\n const scopeSpans = ilmEntry.value;\n if (scopeSpans.length > 0) {\n const spans = scopeSpans.map(readableSpan => sdkSpanToOtlpSpan(readableSpan, encoder));\n scopeResourceSpans.push({\n scope: createInstrumentationScope(scopeSpans[0].instrumentationScope),\n spans: spans,\n schemaUrl: scopeSpans[0].instrumentationScope.schemaUrl,\n });\n }\n ilmEntry = ilmIterator.next();\n }\n // TODO SDK types don't provide resource schema URL at this time\n const transformedSpans = {\n resource: createResource(resource),\n scopeSpans: scopeResourceSpans,\n schemaUrl: undefined,\n };\n out.push(transformedSpans);\n entry = entryIterator.next();\n }\n return out;\n}\n//# sourceMappingURL=internal.js.map","import { createExportTraceServiceRequest } from '../internal';\nexport const JsonTraceSerializer = {\n serializeRequest: (arg) => {\n const request = createExportTraceServiceRequest(arg, {\n useHex: true,\n useLongBits: false,\n });\n const encoder = new TextEncoder();\n return encoder.encode(JSON.stringify(request));\n },\n deserializeResponse: (arg) => {\n if (arg.length === 0) {\n return {};\n }\n const decoder = new TextDecoder();\n return JSON.parse(decoder.decode(arg));\n },\n};\n//# sourceMappingURL=trace.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport var SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision || (SamplingDecision = {}));\n//# sourceMappingURL=Sampler.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array ? array.length : 0,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n Set = getNative(root, 'Set'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var index = -1,\n length = arrays.length;\n\n while (++index < length) {\n var result = result\n ? arrayPush(\n baseDifference(result, arrays[index], iteratee, comparator),\n baseDifference(arrays[index], result, iteratee, comparator)\n )\n : arrays[index];\n }\n return (result && result.length) ? baseUniq(result, iteratee, comparator) : [];\n}\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = xor;\n","'use strict';\n\nvar isEqual = require('lodash.isequal');\n\nvar xor = require('lodash.xor');\n\nvar keys = require('lodash.keys');\n\nvar _require = require('./jsonSchemaHelpers'),\n types = _require.types,\n FORMAT_REGEXPS = _require.FORMAT_REGEXPS,\n isFormat = _require.isFormat;\n\nvar helpers = {\n stringFormats: keys(FORMAT_REGEXPS),\n isFormat: isFormat,\n typeNames: ['integer', 'number', // make sure number is after integer (for proper type detection)\n 'string', 'array', 'object', 'boolean', 'null', 'date'],\n getType: function getType(val) {\n return helpers.typeNames.find(function (typeName) {\n return types[typeName](val);\n });\n },\n\n /**\n * Tries to find the least common schema from two supplied JSON schemas. If it is unable to find\n * such a schema, it returns null. Incompatibility in structure/types leads to returning null,\n * except when the difference is only integer/number. Than the 'number' is used instead 'int'.\n * Types/Structure incompatibility in array items only leads to schema that doesn't specify\n * items structure/type.\n * @param {object} schema1 - JSON schema\n * @param {object} schema2 - JSON schema\n * @returns {object|null}\n */\n mergeSchemaObjs: function mergeSchemaObjs(schema1, schema2) {\n var schema1Keys = keys(schema1);\n var schema2Keys = keys(schema2);\n\n if (!isEqual(schema1Keys, schema2Keys)) {\n if (schema1.type === 'array' && schema2.type === 'array') {\n // TODO optimize???\n if (isEqual(xor(schema1Keys, schema2Keys), ['items'])) {\n var schemaWithoutItems = schema1Keys.length > schema2Keys.length ? schema2 : schema1;\n var schemaWithItems = schema1Keys.length > schema2Keys.length ? schema1 : schema2;\n var isSame = keys(schemaWithoutItems).reduce(function (acc, current) {\n return isEqual(schemaWithoutItems[current], schemaWithItems[current]) && acc;\n }, true);\n\n if (isSame) {\n return schemaWithoutItems;\n }\n }\n }\n\n if (schema1.type !== 'object' || schema2.type !== 'object') {\n return null;\n }\n }\n\n var retObj = {};\n\n for (var i = 0, length = schema1Keys.length; i < length; i++) {\n var key = schema1Keys[i];\n\n if (helpers.getType(schema1[key]) === 'object') {\n var x = helpers.mergeSchemaObjs(schema1[key], schema2[key]);\n\n if (!x) {\n if (schema1.type === 'object' || schema2.type === 'object') {\n return {\n type: 'object'\n };\n } // special treatment for array items. If not mergeable, we can do without them\n\n\n if (key !== 'items' || schema1.type !== 'array' || schema2.type !== 'array') {\n return null;\n }\n } else {\n retObj[key] = x;\n }\n } else {\n // simple value schema properties (not defined by object)\n if (key === 'type') {\n // eslint-disable-line no-lonely-if\n if (schema1[key] !== schema2[key]) {\n if (schema1[key] === 'integer' && schema2[key] === 'number' || schema1[key] === 'number' && schema2[key] === 'integer') {\n retObj[key] = 'number';\n } else {\n return null;\n }\n } else {\n retObj[key] = schema1[key];\n }\n } else {\n if (!isEqual(schema1[key], schema2[key])) {\n // TODO Is it even possible to take this path?\n return null;\n }\n\n retObj[key] = schema1[key];\n }\n }\n }\n\n return retObj;\n }\n};\nmodule.exports = helpers;","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar merge = require('lodash.merge');\n\nvar isEqual = require('lodash.isequal');\n\nvar helpers = require('./helpers');\n\nvar defaultOptions = {\n required: false,\n postProcessFnc: null,\n strings: {\n detectFormat: true,\n preProcessFnc: null\n },\n arrays: {\n mode: 'all'\n },\n objects: {\n preProcessFnc: null,\n postProcessFnc: null,\n additionalProperties: true\n }\n};\nvar skipReverseFind = ['hostname', 'host-name', 'alpha', 'alphanumeric', 'regex', 'regexp', 'pattern'];\nvar filteredFormats = helpers.stringFormats.filter(function (item) {\n return skipReverseFind.indexOf(item) < 0;\n});\n\nfunction getCommonTypeFromArrayOfTypes(arrOfTypes) {\n var lastVal;\n\n for (var i = 0, length = arrOfTypes.length; i < length; i++) {\n var currentType = arrOfTypes[i];\n\n if (i > 0) {\n if (currentType === 'integer' && lastVal === 'number') {\n currentType = 'number';\n } else if (currentType === 'number' && lastVal === 'integer') {\n lastVal = 'number';\n }\n\n if (lastVal !== currentType) return null;\n }\n\n lastVal = currentType;\n }\n\n return lastVal;\n}\n\nfunction getCommonArrayItemsType(arr) {\n return getCommonTypeFromArrayOfTypes(arr.map(function (item) {\n return helpers.getType(item);\n }));\n}\n\nvar ToJsonSchema = /*#__PURE__*/function () {\n function ToJsonSchema(options) {\n _classCallCheck(this, ToJsonSchema);\n\n this.options = merge({}, defaultOptions, options);\n this.getObjectSchemaDefault = this.getObjectSchemaDefault.bind(this);\n this.getStringSchemaDefault = this.getStringSchemaDefault.bind(this);\n this.objectPostProcessDefault = this.objectPostProcessDefault.bind(this);\n this.commmonPostProcessDefault = this.commmonPostProcessDefault.bind(this);\n this.objectPostProcessDefault = this.objectPostProcessDefault.bind(this);\n }\n /**\n * Tries to find the least common schema that would validate all items in the array. More details\n * helpers.mergeSchemaObjs description\n * @param {array} arr\n * @returns {object|null}\n */\n\n\n _createClass(ToJsonSchema, [{\n key: \"getCommonArrayItemSchema\",\n value: function getCommonArrayItemSchema(arr) {\n var _this = this;\n\n var schemas = arr.map(function (item) {\n return _this.getSchema(item);\n }); // schemas.forEach(schema => console.log(JSON.stringify(schema, '\\t')))\n\n return schemas.reduce(function (acc, current) {\n return helpers.mergeSchemaObjs(acc, current);\n }, schemas.pop());\n }\n }, {\n key: \"getObjectSchemaDefault\",\n value: function getObjectSchemaDefault(obj) {\n var _this2 = this;\n\n var schema = {\n type: 'object'\n };\n var objKeys = Object.keys(obj);\n\n if (objKeys.length > 0) {\n schema.properties = objKeys.reduce(function (acc, propertyName) {\n acc[propertyName] = _this2.getSchema(obj[propertyName]); // eslint-disable-line no-param-reassign\n\n return acc;\n }, {});\n }\n\n return schema;\n }\n }, {\n key: \"getObjectSchema\",\n value: function getObjectSchema(obj) {\n if (this.options.objects.preProcessFnc) {\n return this.options.objects.preProcessFnc(obj, this.getObjectSchemaDefault);\n }\n\n return this.getObjectSchemaDefault(obj);\n }\n }, {\n key: \"getArraySchemaMerging\",\n value: function getArraySchemaMerging(arr) {\n var schema = {\n type: 'array'\n };\n var commonType = getCommonArrayItemsType(arr);\n\n if (commonType) {\n schema.items = {\n type: commonType\n };\n\n if (commonType !== 'integer' && commonType !== 'number') {\n var itemSchema = this.getCommonArrayItemSchema(arr);\n\n if (itemSchema) {\n schema.items = itemSchema;\n }\n } else if (this.options.required) {\n schema.items.required = true;\n }\n }\n\n return schema;\n }\n }, {\n key: \"getArraySchemaNoMerging\",\n value: function getArraySchemaNoMerging(arr) {\n var schema = {\n type: 'array'\n };\n\n if (arr.length > 0) {\n schema.items = this.getSchema(arr[0]);\n }\n\n return schema;\n }\n }, {\n key: \"getArraySchemaTuple\",\n value: function getArraySchemaTuple(arr) {\n var _this3 = this;\n\n var schema = {\n type: 'array'\n };\n\n if (arr.length > 0) {\n schema.items = arr.map(function (item) {\n return _this3.getSchema(item);\n });\n }\n\n return schema;\n }\n }, {\n key: \"getArraySchemaUniform\",\n value: function getArraySchemaUniform(arr) {\n var schema = this.getArraySchemaNoMerging(arr);\n\n if (arr.length > 1) {\n for (var i = 1; i < arr.length; i++) {\n if (!isEqual(schema.items, this.getSchema(arr[i]))) {\n throw new Error('Invalid schema, incompatible array items');\n }\n }\n }\n\n return schema;\n }\n }, {\n key: \"getArraySchema\",\n value: function getArraySchema(arr) {\n if (arr.length === 0) {\n return {\n type: 'array'\n };\n }\n\n switch (this.options.arrays.mode) {\n case 'all':\n return this.getArraySchemaMerging(arr);\n\n case 'first':\n return this.getArraySchemaNoMerging(arr);\n\n case 'uniform':\n return this.getArraySchemaUniform(arr);\n\n case 'tuple':\n return this.getArraySchemaTuple(arr);\n\n default:\n throw new Error(\"Unknown array mode option '\".concat(this.options.arrays.mode, \"'\"));\n }\n }\n }, {\n key: \"getStringSchemaDefault\",\n value: function getStringSchemaDefault(value) {\n var schema = {\n type: 'string'\n };\n\n if (!this.options.strings.detectFormat) {\n return schema;\n }\n\n var index = filteredFormats.findIndex(function (item) {\n return helpers.isFormat(value, item);\n });\n\n if (index >= 0) {\n schema.format = filteredFormats[index];\n }\n\n return schema;\n }\n }, {\n key: \"getStringSchema\",\n value: function getStringSchema(value) {\n if (this.options.strings.preProcessFnc) {\n return this.options.strings.preProcessFnc(value, this.getStringSchemaDefault);\n }\n\n return this.getStringSchemaDefault(value);\n }\n }, {\n key: \"commmonPostProcessDefault\",\n value: function commmonPostProcessDefault(type, schema, value) {\n // eslint-disable-line no-unused-vars\n if (this.options.required) {\n return merge({}, schema, {\n required: true\n });\n }\n\n return schema;\n }\n }, {\n key: \"objectPostProcessDefault\",\n value: function objectPostProcessDefault(schema, obj) {\n if (this.options.objects.additionalProperties === false && Object.getOwnPropertyNames(obj).length > 0) {\n return merge({}, schema, {\n additionalProperties: false\n });\n }\n\n return schema;\n }\n /**\n * Gets JSON schema for provided value\n * @param value\n * @returns {object}\n */\n\n }, {\n key: \"getSchema\",\n value: function getSchema(value) {\n var type = helpers.getType(value);\n\n if (!type) {\n throw new Error(\"Type of value couldn't be determined\");\n }\n\n var schema;\n\n switch (type) {\n case 'object':\n schema = this.getObjectSchema(value);\n break;\n\n case 'array':\n schema = this.getArraySchema(value);\n break;\n\n case 'string':\n schema = this.getStringSchema(value);\n break;\n\n default:\n schema = {\n type: type\n };\n }\n\n if (this.options.postProcessFnc) {\n schema = this.options.postProcessFnc(type, schema, value, this.commmonPostProcessDefault);\n } else {\n schema = this.commmonPostProcessDefault(type, schema, value);\n }\n\n if (type === 'object') {\n if (this.options.objects.postProcessFnc) {\n schema = this.options.objects.postProcessFnc(schema, value, this.objectPostProcessDefault);\n } else {\n schema = this.objectPostProcessDefault(schema, value);\n }\n }\n\n return schema;\n }\n }]);\n\n return ToJsonSchema;\n}();\n\nfunction toJsonSchema(value, options) {\n var tjs = new ToJsonSchema(options);\n return tjs.getSchema(value);\n}\n\nmodule.exports = toJsonSchema;","'use strict'; // content of this file is extracted from jsonschema source\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar types = {\n string: function testString(instance) {\n return typeof instance === 'string';\n },\n number: function testNumber(instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance === 'number' && isFinite(instance); // eslint-disable-line no-restricted-globals\n },\n integer: function testInteger(instance) {\n return typeof instance === 'number' && instance % 1 === 0;\n },\n \"boolean\": function testBoolean(instance) {\n return typeof instance === 'boolean';\n },\n array: function testArray(instance) {\n return instance instanceof Array;\n },\n \"null\": function testNull(instance) {\n return instance === null;\n },\n date: function testDate(instance) {\n return instance instanceof Date;\n },\n any:\n /* istanbul ignore next: not using this but keeping it here for sake of completeness */\n function testAny(instance) {\n // eslint-disable-line no-unused-vars\n return true;\n },\n object: function testObject(instance) {\n return instance && _typeof(instance) === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n }\n};\nvar FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n date: /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n time: /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n email: /^(?:[\\w!#$%&'*+-/=?^`{|}~]+\\.)*[\\w!#$%&'*+-/=?^`{|}~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n ipv6: /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n uri: /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n color: /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n hostname: /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n alpha: /^[a-zA-Z]+$/,\n alphanumeric: /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function utcMillisec(input) {\n return typeof input === 'string' && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n // eslint-disable-line no-restricted-globals\n regex\n /* istanbul ignore next: not supporting regex right now */\n : function regex(input) {\n // eslint-disable-line space-before-function-paren\n var result = true;\n\n try {\n new RegExp(input); // eslint-disable-line no-new\n } catch (e) {\n result = false;\n }\n\n return result;\n },\n style: /\\s*(.+?):\\s*([^;]+);?/g,\n phone: /^\\+(?:[0-9] ?){6,14}[0-9]$/\n};\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nvar isFormat = function isFormat(input, format) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n }\n\n return true;\n};\n\nmodule.exports = {\n types: types,\n isFormat: isFormat,\n FORMAT_REGEXPS: FORMAT_REGEXPS\n};","\nexport const OTEL_MP_SAMPLE_TRACE_RATIO = 0.15\n\nexport const SESSION_ID_PROP_NAME = 'multiplayer-session-id'\n\nexport const SESSION_SHORT_ID_PROP_NAME = 'multiplayer-session-short-id'\n\nexport const SESSION_CONTINUOUS_DEBUGGING_PROP_NAME = 'multiplayer-session-continuous-debugging'\n\nexport const SESSION_STATE_PROP_NAME = 'multiplayer-session-state'\n\nexport const SESSION_TYPE_PROP_NAME = 'multiplayer-session-type'\n\nexport const SESSION_PROP_NAME = 'multiplayer-session-data'\n\nexport const SESSION_STARTED_EVENT = 'debug-session:started'\n\nexport const SESSION_STOPPED_EVENT = 'debug-session:stopped'\n\nexport const SESSION_SUBSCRIBE_EVENT = 'debug-session:subscribe'\n\nexport const SESSION_UNSUBSCRIBE_EVENT = 'debug-session:unsubscribe'\n\nexport const SESSION_AUTO_CREATED = 'debug-session:auto-created'\n\nexport const SESSION_ADD_EVENT = 'debug-session:rrweb:add-event'\n\nexport const DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE = 100000\n\nexport const SESSION_RESPONSE = 'multiplayer-debug-session-response'\n\nexport const CONTINUOUS_DEBUGGING_TIMEOUT = 60000 // 1 minutes\n\nexport const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30 // TODO: move to shared config otel core\n\n// Package version - injected by webpack during build\ndeclare const PACKAGE_VERSION: string\nexport const PACKAGE_VERSION_EXPORT = PACKAGE_VERSION || '1.0.0'\n\n\n// Regex patterns for OpenTelemetry ignore URLs\nexport const OTEL_IGNORE_URLS = [\n // Traces endpoint\n /.*\\/v1\\/traces/,\n // Debug sessions endpoints\n /.*\\/v0\\/radar\\/debug-sessions\\/start$/,\n /.*\\/v0\\/radar\\/debug-sessions\\/[^/]+\\/stop$/,\n /.*\\/v0\\/radar\\/debug-sessions\\/[^/]+\\/cancel$/,\n\n // Continuous debug sessions endpoints\n /.*\\/v0\\/radar\\/continuous-debug-sessions\\/start$/,\n /.*\\/v0\\/radar\\/continuous-debug-sessions\\/[^/]+\\/save$/,\n /.*\\/v0\\/radar\\/continuous-debug-sessions\\/[^/]+\\/cancel$/,\n\n // Remote debug session endpoint\n /.*\\/v0\\/radar\\/remote-debug-session\\/check$/,\n\n // Or use a more general pattern to catch all radar API endpoints\n // /.*\\/v0\\/radar\\/.*/\n]","import {\n SessionRecorderSdk,\n MULTIPLAYER_BASE_API_URL,\n MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL,\n} from '@multiplayer-app/session-recorder-common'\nimport {\n MaskingConfig,\n SessionRecorderConfigs,\n WidgetButtonPlacement,\n WidgetTextOverridesConfig,\n} from '../types'\nimport {\n OTEL_MP_SAMPLE_TRACE_RATIO,\n DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE,\n} from './constants'\nconst { mask, sensitiveFields, sensitiveHeaders } = SessionRecorderSdk\n\nexport const DEFAULT_MASKING_CONFIG: MaskingConfig = {\n maskAllInputs: true,\n isContentMaskingEnabled: true,\n maskBody: mask(sensitiveFields),\n maskHeaders: mask(sensitiveHeaders),\n maskBodyFieldsList: sensitiveFields,\n maskHeadersList: sensitiveHeaders,\n headersToInclude: [],\n headersToExclude: [],\n}\n\nexport const DEFAULT_WIDGET_TEXT_CONFIG: WidgetTextOverridesConfig = {\n initialTitleWithContinuous: 'Encountered an issue?',\n initialTitleWithoutContinuous: 'Encountered an issue?',\n initialDescriptionWithContinuous: 'Record your session so we can see the problem and fix it faster.',\n initialDescriptionWithoutContinuous: 'Record your session so we can see the problem and fix it faster.',\n continuousRecordingLabel: 'Continuous recording',\n startRecordingButtonText: 'Start recording',\n finalTitle: 'Done recording?',\n finalDescription: 'You can also add a quick note with extra context, expectations, or questions. Thank you!',\n commentPlaceholder: 'Add a message...',\n saveButtonText: 'Submit recording',\n cancelButtonText: 'Cancel recording',\n continuousOverlayTitle: 'Save time, skip the reproductions',\n continuousOverlayDescription: 'We keep a rolling record of your recent activity. If something doesn’t work as expected, just save the recording and continue working. No need to worry about exceptions and errors - we automatically save recordings for those!',\n saveLastSnapshotButtonText: 'Save recording',\n submitDialogTitle: 'Save recording',\n submitDialogSubtitle: 'This full-stack session recording will be saved directly to your selected Multiplayer project. All data is automatically correlated end-to-end.',\n submitDialogCommentLabel: 'You can also add context, comments, or notes.',\n submitDialogCommentPlaceholder: 'Add a message...',\n submitDialogSubmitText: 'Save',\n submitDialogCancelText: 'Cancel',\n}\n\nexport const BASE_CONFIG: Required<SessionRecorderConfigs> = {\n apiKey: '',\n\n version: '',\n application: '',\n environment: '',\n\n showWidget: true,\n showContinuousRecording: true,\n widgetButtonPlacement: WidgetButtonPlacement.bottomRight,\n\n usePostMessageFallback: false,\n apiBaseUrl: MULTIPLAYER_BASE_API_URL,\n exporterEndpoint: MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL,\n\n recordCanvas: false,\n schemifyDocSpanPayload: true,\n\n ignoreUrls: [],\n propagateTraceHeaderCorsUrls: [],\n\n sampleTraceRatio: OTEL_MP_SAMPLE_TRACE_RATIO,\n maxCapturingHttpPayloadSize: DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE,\n\n captureBody: true,\n captureHeaders: true,\n masking: DEFAULT_MASKING_CONFIG,\n widgetTextOverrides: DEFAULT_WIDGET_TEXT_CONFIG,\n\n}\n","import { MaskingConfig } from '../types'\nimport { DEFAULT_MASKING_CONFIG } from './defaults'\nimport { isValidArray, isValidBoolean, isValidFunction } from './validators'\nimport { SessionRecorderSdk } from '@multiplayer-app/session-recorder-common'\n\nconst { mask, sensitiveFields, sensitiveHeaders } = SessionRecorderSdk\n\nexport const getMaskingConfig = (masking?: MaskingConfig): MaskingConfig => {\n const baseMasking = DEFAULT_MASKING_CONFIG\n\n if (typeof masking !== 'object') {\n return baseMasking\n }\n\n const maskHeadersList = isValidArray(masking.maskHeadersList, sensitiveHeaders)\n const maskBodyFieldsList = isValidArray(masking.maskBodyFieldsList, sensitiveFields)\n\n return {\n maskAllInputs: isValidBoolean(masking.maskAllInputs, baseMasking.maskAllInputs ?? true),\n maskTextClass: masking.maskTextClass,\n maskTextSelector: masking.maskTextSelector,\n maskInputOptions: masking.maskInputOptions && typeof masking.maskInputOptions === 'object' ? masking.maskInputOptions : undefined,\n maskInput: isValidFunction(masking.maskInput, undefined),\n maskText: isValidFunction(masking.maskText, undefined),\n maskConsoleEvent: isValidFunction(masking.maskConsoleEvent, undefined),\n\n maskHeadersList,\n maskBodyFieldsList,\n headersToInclude: isValidArray(masking.headersToInclude, baseMasking.headersToInclude ?? []),\n headersToExclude: isValidArray(masking.headersToExclude, baseMasking.headersToExclude ?? []),\n isContentMaskingEnabled: isValidBoolean(masking.isContentMaskingEnabled, baseMasking.isContentMaskingEnabled ?? true),\n maskBody: isValidFunction(masking.maskBody, mask(maskBodyFieldsList)),\n maskHeaders: isValidFunction(masking.maskHeaders, mask(maskHeadersList)),\n }\n}","/**\n * Validation helper functions for configuration objects\n */\n\nexport const isValidStringOrRegExp = (value: string | RegExp | undefined, defaultValue: string | RegExp) => {\n return typeof value === 'string' || value instanceof RegExp ? value : defaultValue\n}\n\nexport const isValidString = <T extends string>(value: string | undefined | T, defaultValue: string) => {\n return typeof value === 'string' ? value.trim() : defaultValue\n}\n\nexport const isValidNumber = (value: number | undefined, defaultValue: number) => {\n return typeof value === 'number' ? value : defaultValue\n}\n\nexport const isValidBoolean = (value: boolean | undefined, defaultValue: boolean) => {\n return typeof value === 'boolean' ? value : defaultValue\n}\n\nexport const isValidArray = (value: any[] | undefined, defaultValue: any[]) => {\n return Array.isArray(value) ? value : defaultValue\n}\n\nexport const isValidEnum = <T>(value: any | T, defaultValue: T, enumValues: T[]): T => {\n return enumValues.includes(value as T) ? value as T : defaultValue\n}\n\nexport const isValidFunction = (value: any, defaultValue: any) => {\n return typeof value === 'function' ? value : defaultValue\n}","import { EventEmitter } from 'events'\n\nexport const recorderEventBus = new EventEmitter()","import io, { Socket } from 'socket.io-client'\n\nimport { ISession } from '../types'\nimport { recorderEventBus } from '../eventBus'\nimport messagingService from '../services/messaging.service'\nimport {\n SESSION_ADD_EVENT,\n SESSION_AUTO_CREATED,\n SESSION_STOPPED_EVENT,\n SESSION_SUBSCRIBE_EVENT,\n SESSION_UNSUBSCRIBE_EVENT,\n} from '../config'\n\nconst MAX_RECONNECTION_ATTEMPTS = 2\n\nexport class RrwebEventExporter {\n private socket: Socket | null = null\n private queue: any[] = []\n private isConnecting: boolean = false\n private isConnected: boolean = false\n private usePostMessage: boolean = false\n private attempts: number = 0\n private sessionId: string | null = null\n\n constructor(private options: { socketUrl: string, apiKey: string, usePostMessageFallback?: boolean }) {\n\n }\n\n private init(): void {\n if (this.isConnecting || this.isConnected) return\n this.attempts++\n this.isConnecting = true\n this.usePostMessage = false\n this.socket = io(this.options.socketUrl, {\n path: '/v0/radar/ws',\n auth: {\n 'x-api-key': this.options.apiKey,\n },\n reconnectionAttempts: 2,\n transports: ['websocket'],\n })\n\n // this.socket.on('connect', () => {\n // this.isConnecting = false\n // this.isConnected = true\n // this.usePostMessage = false\n // this.flushQueue()\n // })\n\n this.socket.on('ready', () => {\n this.isConnecting = false\n this.isConnected = true\n this.usePostMessage = false\n this.flushQueue()\n })\n\n this.socket.on('disconnect', (err: any) => {\n this.isConnecting = false\n this.isConnected = false\n })\n\n this.socket.on('connect_error', (err: any) => {\n this.isConnecting = false\n this.isConnected = false\n this.checkReconnectionAttempts()\n })\n\n this.socket.on(SESSION_STOPPED_EVENT, (data: any) => {\n recorderEventBus.emit(SESSION_STOPPED_EVENT, data)\n this.unsubscribeFromSession()\n })\n\n this.socket.on(SESSION_AUTO_CREATED, (data: any) => {\n recorderEventBus.emit(SESSION_AUTO_CREATED, data)\n })\n }\n\n private checkReconnectionAttempts(): void {\n if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {\n this.usePostMessage = !!this.options.usePostMessageFallback\n this.flushQueue()\n }\n }\n\n private sendViaPostMessage(event: any): void {\n messagingService.sendMessage('rrweb-event', event)\n }\n\n private flushQueue(): void {\n while (this.queue.length > 0 && (this.usePostMessage || this.socket?.connected)) {\n const event = this.queue.shift()\n if (!event) continue\n\n if (this.usePostMessage) {\n this.sendViaPostMessage(event.data)\n } else if (this.socket?.connected) {\n this.socket.emit(event.name, event.data)\n }\n }\n }\n\n private unsubscribeFromSession() {\n const payload = {\n debugSessionId: this.sessionId,\n }\n if (this.usePostMessage) {\n messagingService.sendMessage('socket-emit', { event: SESSION_UNSUBSCRIBE_EVENT, data: payload })\n } else if (this.socket?.connected) {\n this.socket.emit(SESSION_UNSUBSCRIBE_EVENT, payload)\n }\n }\n\n public send(event: any): void {\n if (this.usePostMessage) {\n this.sendViaPostMessage(event)\n } else if (this.socket?.connected) {\n this.socket.emit(SESSION_ADD_EVENT, event)\n } else {\n this.queue.push({ data: event, name: SESSION_ADD_EVENT })\n this.init()\n }\n }\n\n public subscribeToSession(session: ISession): void {\n this.sessionId = session.shortId || session._id\n const payload = {\n projectId: session.project,\n workspaceId: session.workspace,\n debugSessionId: this.sessionId,\n sessionType: session.creationType,\n }\n if (this.usePostMessage) {\n this.sendViaPostMessage({ type: SESSION_SUBSCRIBE_EVENT, ...payload })\n } else if (this.socket?.connected) {\n this.socket.emit(SESSION_SUBSCRIBE_EVENT, payload)\n } else {\n this.queue.push({ data: payload, name: SESSION_SUBSCRIBE_EVENT })\n this.init()\n }\n }\n\n public close(): void {\n if (this.usePostMessage) {\n this.sendViaPostMessage({ type: 'close' })\n }\n if (this.socket?.connected) {\n setTimeout(() => {\n this.unsubscribeFromSession()\n this.attempts = 0\n this.isConnected = false\n this.isConnecting = false\n this.socket?.disconnect()\n this.socket = null\n }, 500)\n }\n }\n}\n","\nclass MessagingService {\n private isBrowser: boolean\n private promiseIdCounter: number = 0\n private promiseMap: Map<string, PromiseHandler> = new Map()\n private messagingServices: Map<string, Array<(payload: any) => void>> = new Map()\n\n constructor() {\n this.isBrowser = typeof window !== 'undefined'\n this.setupMessageListener()\n }\n\n private generatePromiseId(): string {\n return `promise_${++this.promiseIdCounter}`\n }\n\n public sendMessage(action: string, payload?: any): void {\n if (!this.isBrowser) return\n\n const message: MessagePayload = {\n type: 'MULTIPLAYER_SESSION_DEBUGGER_LIB',\n action,\n payload,\n }\n\n window.postMessage(message, '*')\n }\n\n public sendMessagePromise(action: string, payload?: any): Promise<any> {\n if (!this.isBrowser) {\n return Promise.reject(new Error('Not in browser environment'))\n }\n\n const promiseId = this.generatePromiseId()\n\n const promise = new Promise<any>((resolve, reject) => {\n this.promiseMap.set(promiseId, { resolve, reject })\n })\n\n const message: MessagePayload = {\n type: 'MULTIPLAYER_SESSION_DEBUGGER_LIB',\n action,\n payload,\n promiseId,\n }\n\n window.postMessage(message, '*')\n\n return promise\n }\n\n public on(action: string, handler: (payload: any) => void): void {\n const handlers = this.messagingServices.get(action) || []\n handlers.push(handler)\n this.messagingServices.set(action, handlers)\n }\n\n public off(action: string, handler?: (payload: any) => void): void {\n if (!handler) {\n // Remove all handlers for this action\n this.messagingServices.delete(action)\n return\n }\n\n const handlers = this.messagingServices.get(action)\n if (handlers) {\n const index = handlers.indexOf(handler)\n if (index !== -1) {\n handlers.splice(index, 1)\n if (handlers.length === 0) {\n this.messagingServices.delete(action)\n } else {\n this.messagingServices.set(action, handlers)\n }\n }\n }\n }\n\n private setupMessageListener(): void {\n if (!this.isBrowser) return\n window.addEventListener('message', (event: MessageEvent) => {\n const { type, action, payload, promiseId } = event.data as MessagePayload\n\n if (type !== 'MULTIPLAYER_SESSION_DEBUGGER_EXTENSION' || !action) return\n\n // Handle promise response\n if (promiseId && this.promiseMap.has(promiseId)) {\n const { resolve, reject } = this.promiseMap.get(promiseId)!\n const { error, response } = payload as messagingServiceResponse\n if (error) {\n reject(error)\n } else {\n resolve(response)\n }\n this.promiseMap.delete(promiseId)\n return\n }\n\n // Handle regular message handlers\n const handlers = this.messagingServices.get(action)\n if (handlers) {\n handlers.forEach(handler => handler(payload))\n }\n })\n }\n}\n\n\ninterface messagingServiceResponse {\n error?: Error\n response?: any\n}\n\ninterface PromiseHandler {\n resolve: (value: any) => void\n reject: (reason?: any) => void\n}\n\ninterface MessagePayload {\n type: string\n action: string\n payload?: any\n promiseId?: string\n}\n\n\nconst messagingService = new MessagingService()\n\nexport default messagingService","import { SessionType } from '@multiplayer-app/session-recorder-common'\n\nexport interface IResourceAttributes {\n browserInfo?: string,\n cookiesEnabled?: string,\n deviceInfo?: string,\n hardwareConcurrency?: number,\n osInfo?: string,\n pixelRatio?: number,\n screenSize?: string,\n packageVersion?: string,\n [key: string]: any\n}\n\nexport interface ISessionAttributes {\n userEmail?: string\n userId?: string,\n userName?: string,\n accountId?: string,\n accountName?: string,\n [key: string]: any\n}\n\nexport interface ISessionView {\n _id: string\n name: string\n components?: string[]\n}\n\nexport interface ISession {\n _id: string\n shortId: string\n workspace: string\n project: string\n continuousDebugSession?: string\n creationType: SessionType\n name: string\n startedAt: string | Date\n stoppedAt: string | Date\n durationInSeconds?: number\n createdAt: string | Date\n updatedAt: string | Date\n tags: any[]\n\n resourceAttributes?: IResourceAttributes\n sessionAttributes?: ISessionAttributes\n views: ISessionView[]\n starred: boolean\n starredItems: string[]\n s3Files: {\n _id?: string\n bucket: string\n key: string\n dataType: DebugSessionDataType\n url?: string\n }[]\n finishedS3Transfer?: boolean\n tempApiKey?: string\n}\n\nexport enum DebugSessionDataType {\n OTLP_TRACES = 'OTLP_TRACES',\n OTLP_LOGS = 'OTLP_LOGS',\n RRWEB_EVENTS = 'RRWEB_EVENTS',\n}\n","\nimport { SessionType } from '@multiplayer-app/session-recorder-common'\nimport { Span } from '@opentelemetry/api'\nimport { PropagateTraceHeaderCorsUrls } from '@opentelemetry/sdk-trace-web'\nimport type {\n MaskTextFn,\n MaskInputFn,\n MaskInputOptions,\n} from 'rrweb-snapshot'\nimport type { maskTextClass } from '@rrweb/types'\nimport { LogData } from '@rrweb/rrweb-plugin-console-record'\nimport { Observable } from 'lib0/observable'\nimport type { ISession } from './session'\n\nexport enum WidgetButtonPlacement {\n topLeft = 'top-left',\n topRight = 'top-right',\n bottomLeft = 'bottom-left',\n bottomRight = 'bottom-right',\n}\n\nexport interface SessionRecorderOptions {\n /**\n * The API key used to authenticate with the session debugger service.\n */\n apiKey: string\n\n /**\n * The version of the application using the session debugger.\n */\n version: string\n\n /**\n * The name of the application being debugged.\n */\n application: string\n\n /**\n * The environment where the application is running (e.g., 'production', 'staging').\n */\n environment: string\n\n /**\n * (Optional) OTLP collector endpoint.\n */\n exporterEndpoint?: string\n\n /**\n * (Optional) Base URL for the API calls.\n * This allows customization of the API endpoint for sending session data.\n */\n apiBaseUrl?: string\n\n /**\n * (Optional) An array of URLs or regular expressions that should be ignored by the session debugger.\n * Any URL that partially matches any regex in this array will not be traced.\n * Additionally, URLs that exactly match any string in the array will also be ignored.\n */\n ignoreUrls?: Array<string | RegExp>\n\n /**\n * (Optional) Determines where the record button should be placed on the screen.\n * Possible values:\n * - 'top-left'\n * - 'top-right'\n * - 'bottom-left'\n * - 'bottom-right'\n */\n widgetButtonPlacement?: WidgetButtonPlacement\n\n /**\n * (Optional) Enables the continuous recording feature and UI.\n * If false, the UI toggle is hidden and attempts to start a continuous\n * session are ignored.\n * @default true\n */\n showContinuousRecording?: boolean\n\n /**\n * (Optional) If false, the session recording widget will be hidden from the UI.\n * Use this option if you want to enable session recording without a visible UI element.\n * @default showWidget = true\n */\n showWidget?: boolean\n\n /**\n * (Optional) If true, enables the recording and replaying of canvas elements.\n * Pass `true` to capture canvas interactions in the session recording.\n * @default recordCanvas = false\n */\n recordCanvas?: boolean\n\n /**\n * (Optional) Trace ID Ratio for sampling\n * @default 0.15\n */\n sampleTraceRatio?: number\n\n /**\n * (Optional) URLs or regex patterns for CORS trace header propagation\n */\n propagateTraceHeaderCorsUrls?: PropagateTraceHeaderCorsUrls\n\n /**\n * (Optional) If true, schematizes document span payload\n * @default true\n */\n schemifyDocSpanPayload?: boolean\n\n /**\n * (Optional) Maximum size for capturing HTTP payload\n * @default 100000\n */\n maxCapturingHttpPayloadSize?: number\n\n /**\n * (Optional) If true, uses post message fallback\n * @default false\n */\n usePostMessageFallback?: boolean\n\n\n /** If true, captures body in traces\n * @default true\n */\n captureBody?: boolean\n /** If true, captures headers in traces\n * @default true\n */\n captureHeaders?: boolean\n\n /**\n * (Optional) Configuration for masking sensitive data in session recordings\n * @default { maskAllInputs: true, isContentMaskingEnabled: true }\n */\n masking?: MaskingConfig\n\n /**\n * (Optional) Configuration for customizable UI text and labels\n * @default See PopoverTextConfig defaults\n */\n widgetTextOverrides?: WidgetTextOverridesConfig\n\n}\n\n/**\n * Interface for masking configuration\n */\nexport interface MaskingConfig {\n // Recorder masking\n /** If true, masks all input fields in the recording\n * @default true\n */\n maskAllInputs?: boolean;\n /** Class-based masking configuration - can be string or RegExp */\n maskTextClass?: maskTextClass;\n /** CSS selector for elements that should be masked */\n maskTextSelector?: string;\n /** Specific options for masking different types of inputs */\n maskInputOptions?: MaskInputOptions;\n /** Custom function for input masking */\n maskInput?: MaskInputFn;\n /** Custom function for text masking */\n maskText?: MaskTextFn;\n /** Custom function for console event masking */\n maskConsoleEvent?: (payload: LogData) => LogData;\n\n\n // Span masking\n /** If true, enables masking for debug span payload in traces\n * @default true\n */\n isContentMaskingEnabled?: boolean;\n /** Custom function for masking body in traces */\n maskBody?: (payload: any, span: Span) => any;\n /** Custom function for masking headers in traces */\n maskHeaders?: (headers: any, span: any) => any;\n\n\n /** List of body fields to mask in traces */\n maskBodyFieldsList?: string[]\n /** List of headers to mask in traces */\n maskHeadersList?: string[]\n\n /** List of headers to include in traces (if specified, only these headers will be captured) */\n headersToInclude?: string[]\n /** List of headers to exclude from traces */\n headersToExclude?: string[]\n}\n\n/**\n * Base configuration interface with common properties\n */\nexport interface BaseConfig {\n /** API key for authentication */\n apiKey: string\n /** Base URL for the API calls */\n apiBaseUrl: string\n /** Base URL for the API calls */\n exporterEndpoint: string\n /** Whether to use post message fallback */\n usePostMessageFallback?: boolean\n}\n\n/**\n * Configuration interface for the Tracer class\n */\nexport type TracerBrowserMasking = Pick<MaskingConfig, 'isContentMaskingEnabled' | 'maskBody' | 'maskHeaders' | 'maskBodyFieldsList' | 'maskHeadersList' | 'headersToInclude' | 'headersToExclude'>;\n\nexport interface TracerBrowserConfig extends BaseConfig {\n /** Application name */\n application: string\n /** Application version */\n version: string\n /** Environment (e.g., 'production', 'staging') */\n environment: string\n /** URLs to ignore during tracing */\n ignoreUrls: Array<string | RegExp>\n /** Trace ID ratio for sampling */\n sampleTraceRatio: number\n /** URLs for CORS trace header propagation */\n propagateTraceHeaderCorsUrls: PropagateTraceHeaderCorsUrls\n /** Whether to schematize document span payload */\n schemifyDocSpanPayload: boolean\n /** Maximum size for capturing HTTP payload */\n maxCapturingHttpPayloadSize: number,\n /** If true, captures body in traces\n * @default true\n */\n captureBody: boolean\n /** If true, captures headers in traces\n * @default true\n */\n captureHeaders: boolean\n /** Configuration for masking sensitive data in session recordings */\n masking: TracerBrowserMasking\n}\n\n/**\n * Configuration interface for the Recorder class\n */\nexport type RecorderMasking = Pick<MaskingConfig, 'maskAllInputs' | 'maskTextClass' | 'maskTextSelector' | 'maskInputOptions' | 'maskInput' | 'maskText' | 'maskConsoleEvent'>;\n\nexport interface RecorderConfig extends BaseConfig {\n /** Whether to enable canvas recording */\n recordCanvas: boolean\n /** Configuration for masking sensitive data in session recordings */\n masking?: RecorderMasking\n}\n\n/**\n * Configuration interface for the SessionWidget class\n */\nexport interface SessionWidgetConfig {\n /** Whether to show the widget */\n showWidget: boolean\n /** Placement of the widget button */\n widgetButtonPlacement: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'\n /** Whether continuous recording feature is enabled */\n showContinuousRecording: boolean\n /** Configuration for customizable UI text and labels */\n widgetTextOverrides: WidgetTextOverridesConfig\n}\n\n/**\n * Interface for customizable widget text configuration\n */\nexport interface WidgetTextOverridesConfig {\n /** Title for the initial popover when continuous recording is enabled */\n initialTitleWithContinuous?: string\n /** Title for the initial popover when continuous recording is disabled */\n initialTitleWithoutContinuous?: string\n /** Description for the initial popover when continuous recording is enabled */\n initialDescriptionWithContinuous?: string\n /** Description for the initial popover when continuous recording is disabled */\n initialDescriptionWithoutContinuous?: string\n /** Label for the continuous recording toggle */\n continuousRecordingLabel?: string\n /** Text for the start recording button */\n startRecordingButtonText?: string\n /** Title for the final popover */\n finalTitle?: string\n /** Description for the final popover */\n finalDescription?: string\n /** Placeholder text for the comment textarea */\n commentPlaceholder?: string\n /** Text for the save button in final popover */\n saveButtonText?: string\n /** Text for the cancel button in final popover */\n cancelButtonText?: string\n /** Title for the continuous recording overlay */\n continuousOverlayTitle?: string\n /** Description for the continuous recording overlay */\n continuousOverlayDescription?: string\n /** Text for the save last snapshot button */\n saveLastSnapshotButtonText?: string\n /** Title for the submit session dialog */\n submitDialogTitle?: string\n /** Subtitle for the submit session dialog */\n submitDialogSubtitle?: string\n /** Label for the comment field in submit dialog */\n submitDialogCommentLabel?: string\n /** Placeholder for the comment field in submit dialog */\n submitDialogCommentPlaceholder?: string\n /** Text for the submit button in dialog */\n submitDialogSubmitText?: string\n /** Text for the cancel button in dialog */\n submitDialogCancelText?: string\n}\n\n/**\n * Configuration interface for the ApiService class\n */\nexport interface ApiServiceConfig extends BaseConfig { }\n\nexport interface SessionRecorderConfigs extends Required<SessionRecorderOptions> { }\n\nexport enum SessionState {\n started = '2',\n paused = '1',\n stopped = '0',\n}\n\nexport type SessionRecorderEvents = 'state-change' | 'init' | 'error'\n\nexport interface ISessionRecorder extends Observable<SessionRecorderEvents> {\n /**\n * The current session ID\n */\n readonly sessionId: string | null\n\n /**\n * Whether continuous recording is enabled\n */\n readonly continuousRecording: boolean\n\n /**\n * The current debug session object\n */\n readonly session: ISession | null\n\n /**\n * The type of session (plain or continuous)\n */\n readonly sessionType: SessionType\n\n /**\n * The current state of the session\n */\n readonly sessionState: SessionState | null\n\n\n /**\n * Session attributes for additional context\n */\n readonly sessionAttributes: Record<string, any>\n\n /**\n * Current error message\n */\n error: string\n\n /**\n * The HTML button element for the session widget's recorder button\n */\n readonly sessionWidgetButtonElement: HTMLButtonElement\n\n /**\n * Initialize the session debugger with custom configurations\n * @param configs - custom configurations for session debugger\n */\n init(configs: SessionRecorderOptions): void\n\n /**\n * Save the continuous recording session\n * @returns Promise that resolves to the save response\n */\n save(): Promise<any>\n\n /**\n * Start a new session\n * @param type - the type of session to start\n * @param session - optional existing session to start\n */\n start(type?: SessionType, session?: ISession): void\n\n /**\n * Stop the current session with an optional comment\n * @param comment - user-provided comment to include in session feedback metadata\n */\n stop(comment?: string): Promise<void>\n\n /**\n * Cancel the current session\n */\n cancel(): Promise<void>\n\n /**\n * Pause the current session\n */\n pause(): Promise<void>\n\n /**\n * Resume the current session\n */\n resume(): Promise<void>\n\n /**\n * Set the session metadata\n * @param attributes - the attributes to set\n */\n setSessionAttributes(attributes: Record<string, any>): void\n\n /**\n * Set a custom click handler for the recording button\n * @param handler - function that will be invoked when the button is clicked\n */\n set recordingButtonClickHandler(handler: () => boolean | void)\n}\n\nexport type Breaker = {}\n","import { SessionType } from './type';\nimport { MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, } from './constants/constants.base';\nimport { getIdGenerator } from './sdk';\nvar SessionRecorderIdGenerator = /** @class */ (function () {\n function SessionRecorderIdGenerator() {\n this.generateLongId = getIdGenerator(16);\n this.generateShortId = getIdGenerator(8);\n this.sessionShortId = '';\n this.sessionType = SessionType.MANUAL;\n }\n SessionRecorderIdGenerator.prototype.generateTraceId = function () {\n var traceId = this.generateLongId();\n if (this.sessionShortId) {\n var sessionTypePrefix = '';\n switch (this.sessionType) {\n case SessionType.CONTINUOUS:\n sessionTypePrefix = MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX;\n break;\n default:\n sessionTypePrefix = MULTIPLAYER_TRACE_DEBUG_PREFIX;\n }\n var prefix = \"\".concat(sessionTypePrefix).concat(this.sessionShortId);\n var sessionTraceId = \"\".concat(prefix).concat(traceId.substring(prefix.length, traceId.length));\n return sessionTraceId;\n }\n return traceId;\n };\n SessionRecorderIdGenerator.prototype.generateSpanId = function () {\n return this.generateShortId();\n };\n SessionRecorderIdGenerator.prototype.setSessionId = function (sessionShortId, sessionType) {\n if (sessionType === void 0) { sessionType = SessionType.MANUAL; }\n this.sessionShortId = sessionShortId;\n this.sessionType = sessionType;\n };\n return SessionRecorderIdGenerator;\n}());\nexport { SessionRecorderIdGenerator };\n//# sourceMappingURL=SessionRecorderIdGenerator.js.map","import { isValidTraceId } from '@opentelemetry/api';\nimport { SamplingDecision, } from '@opentelemetry/sdk-trace-base';\nimport { MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, } from './constants/constants.base';\nvar SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {\n function SessionRecorderTraceIdRatioBasedSampler(_ratio) {\n if (_ratio === void 0) { _ratio = 0; }\n this._ratio = _ratio;\n this._ratio = this._normalize(_ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n SessionRecorderTraceIdRatioBasedSampler.prototype.shouldSample = function (context, traceId) {\n if (traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX)\n || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)) {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n var decision = SamplingDecision.NOT_RECORD;\n if (isValidTraceId(traceId)\n && this._accumulate(traceId) < this._upperBound) {\n decision = SamplingDecision.RECORD_AND_SAMPLED;\n }\n return { decision: decision };\n };\n SessionRecorderTraceIdRatioBasedSampler.prototype.toString = function () {\n return \"SessionRecorderTraceIdRatioBasedSampler{\".concat(this._ratio, \"}\");\n };\n SessionRecorderTraceIdRatioBasedSampler.prototype._normalize = function (ratio) {\n if (typeof ratio !== 'number' || isNaN(ratio))\n return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n };\n SessionRecorderTraceIdRatioBasedSampler.prototype._accumulate = function (traceId) {\n var accumulation = 0;\n for (var i = 0; i < traceId.length / 8; i++) {\n var pos = i * 8;\n var part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n };\n return SessionRecorderTraceIdRatioBasedSampler;\n}());\nexport { SessionRecorderTraceIdRatioBasedSampler };\n//# sourceMappingURL=SessionRecorderTraceIdRatioBasedSampler.js.map","/**\n * @deprecated\n */\nexport var MULTIPLAYER_TRACE_DOC_PREFIX = 'd0cd0c';\nexport var MULTIPLAYER_TRACE_DEBUG_PREFIX = 'debdeb';\nexport var MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX = 'cdbcdb';\nexport var MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH = 16;\n/**\n * @deprecated Use MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL instead\n */\nexport var MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL = 'https://api.multiplayer.app/v1/traces';\n/**\n * @deprecated Use MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_HTTP_URL instead\n */\nexport var MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_URL = 'https://api.multiplayer.app/v1/logs';\nexport var MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL = 'https://otlp.multiplayer.app/v1/traces';\nexport var MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_HTTP_URL = 'https://otlp.multiplayer.app/v1/logs';\nexport var MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_GRPC_URL = 'https://otlp.multiplayer.app:4317/v1/traces';\nexport var MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_GRPC_URL = 'https://otlp.multiplayer.app:4317/v1/logs';\nexport var MULTIPLAYER_BASE_API_URL = 'https://api.multiplayer.app';\nexport var MULTIPLAYER_ATTRIBUTE_PREFIX = 'multiplayer.';\nexport var ATTR_MULTIPLAYER_WORKSPACE_ID = 'multiplayer.workspace.id';\nexport var ATTR_MULTIPLAYER_PROJECT_ID = 'multiplayer.project.id';\nexport var ATTR_MULTIPLAYER_PLATFORM_ID = 'multiplayer.platform.id';\nexport var ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE = 'multiplayer.session.auto-save';\nexport var ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON = 'multiplayer.session.auto-save.reason';\nexport var ATTR_MULTIPLAYER_PLATFORM_NAME = 'multiplayer.platform.name';\nexport var ATTR_MULTIPLAYER_CLIENT_ID = 'multiplayer.client.id';\nexport var ATTR_MULTIPLAYER_INTEGRATION_ID = 'multiplayer.integration.id';\nexport var ATTR_MULTIPLAYER_SESSION_ID = 'multiplayer.session.id';\nexport var ATTR_MULTIPLAYER_HTTP_PROXY = 'multiplayer.http.proxy';\nexport var ATTR_MULTIPLAYER_HTTP_PROXY_TYPE = 'multiplayer.http.proxy.type';\nexport var ATTR_MULTIPLAYER_HTTP_REQUEST_BODY = 'multiplayer.http.request.body';\nexport var ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY = 'multiplayer.http.response.body';\nexport var ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS = 'multiplayer.http.request.headers';\nexport var ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS = 'multiplayer.http.response.headers';\nexport var ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING = 'multiplayer.http.response.body.encoding';\nexport var ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE = 'multiplayer.rpc.request.message';\nexport var ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE_ENCODING = 'multiplayer.rpc.request.message.encoding';\nexport var ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE = 'multiplayer.rpc.response.message';\nexport var ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE = 'multiplayer.rpc.grpc.request.message';\nexport var ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE_ENCODING = 'multiplayer.rpc.request.message.encoding';\nexport var ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE = 'multiplayer.rpc.grpc.response.message';\nexport var ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY = 'multiplayer.messaging.message.body';\nexport var ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY_ENCODING = 'multiplayer.messaging.message.body.encoding';\nexport var ATTR_MULTIPLAYER_SESSION_RECORDER_VERSION = 'multiplayer.session-recorder.version';\nexport var MASK_PLACEHOLDER = '***MASKED***';\n//# sourceMappingURL=constants.base.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL, MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, } from '../constants/constants.base';\n/**\n * Browser-specific trace exporter for Session Recorder\n * Exports traces via HTTP to Multiplayer's OTLP endpoint with browser-specific optimizations\n * Only exports spans with trace IDs starting with Multiplayer prefixes\n */\nvar SessionRecorderBrowserTraceExporter = /** @class */ (function () {\n function SessionRecorderBrowserTraceExporter(config) {\n if (config === void 0) { config = {}; }\n this.usePostMessage = false;\n var _a = config.url, url = _a === void 0 ? MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL : _a, apiKey = config.apiKey, _b = config.headers, headers = _b === void 0 ? {} : _b, _c = config.timeoutMillis, timeoutMillis = _c === void 0 ? 30000 : _c, _d = config.keepAlive, keepAlive = _d === void 0 ? true : _d, _e = config.concurrencyLimit, concurrencyLimit = _e === void 0 ? 20 : _e, _f = config.postMessageType, postMessageType = _f === void 0 ? 'MULTIPLAYER_SESSION_DEBUGGER_LIB' : _f, _g = config.postMessageTargetOrigin, postMessageTargetOrigin = _g === void 0 ? '*' : _g;\n this.config = __assign(__assign({}, config), { url: url, apiKey: apiKey, headers: headers, timeoutMillis: timeoutMillis, keepAlive: keepAlive, concurrencyLimit: concurrencyLimit });\n this.postMessageType = postMessageType;\n this.postMessageTargetOrigin = postMessageTargetOrigin;\n this.exporter = this._createExporter();\n }\n SessionRecorderBrowserTraceExporter.prototype.export = function (spans, resultCallback) {\n var _this = this;\n // Filter spans to only include those with Multiplayer trace prefixes\n var filteredSpans = spans.filter(function (span) {\n var traceId = span.spanContext().traceId;\n return traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX) ||\n traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX);\n });\n // Only proceed if there are filtered spans\n if (filteredSpans.length === 0) {\n resultCallback({ code: 0 });\n return;\n }\n if (this.usePostMessage) {\n this.exportViaPostMessage(filteredSpans, resultCallback);\n return;\n }\n this.exporter.export(filteredSpans, function (result) {\n if (result.code === 0) {\n resultCallback(result);\n }\n else if (_this.config.usePostMessageFallback) {\n _this.usePostMessage = true;\n _this.exportViaPostMessage(filteredSpans, resultCallback);\n }\n else {\n resultCallback(result);\n }\n });\n };\n SessionRecorderBrowserTraceExporter.prototype.shutdown = function () {\n return this.exporter.shutdown();\n };\n SessionRecorderBrowserTraceExporter.prototype.exportViaPostMessage = function (spans, resultCallback) {\n var _this = this;\n if (typeof window === 'undefined') {\n resultCallback({ code: 1 });\n return;\n }\n try {\n window.postMessage({\n action: 'traces',\n type: this.postMessageType,\n payload: spans.map(function (span) { return _this._serializeSpan(span); }),\n }, this.postMessageTargetOrigin);\n resultCallback({ code: 0 });\n }\n catch (e) {\n resultCallback({ code: 1 });\n }\n };\n SessionRecorderBrowserTraceExporter.prototype._serializeSpan = function (span) {\n var _a;\n var spanContext = span.spanContext();\n return {\n _spanContext: spanContext,\n name: span.name,\n kind: span.kind,\n links: span.links,\n ended: span.ended,\n events: span.events,\n status: span.status,\n endTime: span.endTime,\n startTime: span.startTime,\n duration: span.duration,\n attributes: span.attributes,\n parentSpanId: (_a = span.parentSpanContext) === null || _a === void 0 ? void 0 : _a.spanId,\n droppedAttributesCount: span.droppedAttributesCount,\n droppedEventsCount: span.droppedEventsCount,\n droppedLinksCount: span.droppedLinksCount,\n resource: {\n attributes: span.resource.attributes,\n asyncAttributesPending: span.resource.asyncAttributesPending,\n },\n };\n };\n SessionRecorderBrowserTraceExporter.prototype._createExporter = function () {\n return new OTLPTraceExporter({\n url: this.config.url,\n headers: __assign(__assign({ 'Content-Type': 'application/json' }, (this.config.apiKey ? { 'Authorization': this.config.apiKey } : {})), (this.config.headers || {})),\n timeoutMillis: this.config.timeoutMillis,\n keepAlive: this.config.keepAlive,\n concurrencyLimit: this.config.concurrencyLimit,\n });\n };\n SessionRecorderBrowserTraceExporter.prototype.setApiKey = function (apiKey) {\n this.config.apiKey = apiKey;\n this.exporter = this._createExporter();\n };\n return SessionRecorderBrowserTraceExporter;\n}());\nexport { SessionRecorderBrowserTraceExporter };\n//# sourceMappingURL=SessionRecorderBrowserTraceExporter.js.map","var SHARED_CHAR_CODES_ARRAY = Array(32);\nexport var getIdGenerator = function (bytes) {\n return function generateId() {\n for (var i = 0; i < bytes * 2; i++) {\n SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48;\n // valid hex characters in the range 48-57 and 97-102\n if (SHARED_CHAR_CODES_ARRAY[i] >= 58) {\n SHARED_CHAR_CODES_ARRAY[i] += 39;\n }\n }\n return String.fromCharCode.apply(null, SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2));\n };\n};\n//# sourceMappingURL=id-generator.js.map","import { MASK_PLACEHOLDER } from '../constants/constants.base';\nvar MAX_DEPTH = 8;\nexport var sensitiveFields = [\n 'password',\n 'pass',\n 'passwd',\n 'pwd',\n 'token',\n 'access_token',\n 'accessToken',\n 'refresh_token',\n 'refreshToken',\n 'secret',\n 'api_key',\n 'apiKey',\n 'authorization',\n 'auth_token',\n 'authToken',\n 'jwt',\n 'session_id',\n 'sessionId',\n 'sessionToken',\n 'client_secret',\n 'clientSecret',\n 'private_key',\n 'privateKey',\n 'public_key',\n 'publicKey',\n 'key',\n 'encryption_key',\n 'encryptionKey',\n 'credit_card',\n 'creditCard',\n 'card_number',\n 'cardNumber',\n 'cvv',\n 'cvc',\n 'ssn',\n 'sin',\n 'pin',\n 'security_code',\n 'securityCode',\n 'bank_account',\n 'bankAccount',\n 'iban',\n 'swift',\n 'bic',\n 'routing_number',\n 'routingNumber',\n 'license_key',\n 'licenseKey',\n 'otp',\n 'mfa_code',\n 'mfaCode',\n 'phone_number',\n 'phoneNumber',\n 'email',\n 'address',\n 'dob',\n 'tax_id',\n 'taxId',\n 'passport_number',\n 'passportNumber',\n 'driver_license',\n 'driverLicense',\n 'set-cookie',\n 'cookie',\n 'authorization',\n 'proxyAuthorization',\n];\nexport var sensitiveHeaders = [\n 'set-cookie',\n 'cookie',\n 'authorization',\n 'proxyAuthorization',\n];\nvar maskAll = function (value, depth) {\n if (depth === void 0) { depth = 0; }\n var type = typeof value;\n var isObject = type === 'object';\n var isArray = false;\n if (Array.isArray(value)) {\n isArray = true;\n }\n if (depth > MAX_DEPTH && (isObject || isArray)) {\n return undefined;\n }\n if (isArray) {\n return value.map(function (val) { return maskAll(val, depth + 1); }, value);\n }\n if (isObject) {\n for (var key in value) {\n value[key] = maskAll(value[key], depth + 1);\n }\n return value;\n }\n if (type === 'string') {\n return MASK_PLACEHOLDER;\n }\n return value;\n};\nvar maskSelected = function (value, keysToMask) {\n var type = typeof value;\n var isObject = type === 'object';\n var _keysToMask = new Set(keysToMask);\n if (Array.isArray(value)) {\n return value.map(function (val) { return maskSelected(val, keysToMask); }, value);\n }\n if (isObject) {\n for (var key in value) {\n if (_keysToMask.has(key)) {\n value[key] = MASK_PLACEHOLDER;\n }\n else {\n value[key] = maskSelected(value[key], keysToMask);\n }\n }\n return value;\n }\n if (type === 'string') {\n return value;\n }\n return value;\n};\nexport default (function (keysToMask) {\n if (keysToMask === void 0) { keysToMask = []; }\n return function (value, span) {\n var payloadJson;\n try {\n payloadJson = JSON.parse(value);\n }\n catch (_a) {\n payloadJson = value;\n }\n var maskedData;\n if (keysToMask.length) {\n maskedData = maskSelected(payloadJson, keysToMask);\n }\n else {\n maskedData = maskAll(payloadJson);\n }\n if (typeof maskedData !== 'string') {\n maskedData = JSON.stringify(maskedData);\n }\n return maskedData;\n };\n});\n//# sourceMappingURL=mask.js.map","import * as _toJsonSchema from 'to-json-schema';\n// @ts-ignore\nvar toJsonSchema = (_toJsonSchema === null || _toJsonSchema === void 0 ? void 0 : _toJsonSchema.default) || _toJsonSchema;\nvar defaultSchemifyOptions = {\n strings: {\n preProcessFnc: function (value, defaultFnc) {\n if ((value === null || value === void 0 ? void 0 : value.length) >= 30) {\n return defaultFnc('some_string');\n }\n return defaultFnc(value);\n },\n },\n arrays: {\n mode: 'first',\n },\n};\nexport default (function (payload, stringify, options) {\n if (stringify === void 0) { stringify = true; }\n if (options === void 0) { options = defaultSchemifyOptions; }\n if (!payload) {\n return '';\n }\n var payloadJson;\n if (typeof payload === 'string') {\n try {\n payloadJson = JSON.parse(payload);\n }\n catch (_a) {\n return payload;\n }\n }\n else if (typeof payload === 'object') {\n payloadJson = payload;\n }\n else {\n return payload;\n }\n try {\n var schema = toJsonSchema(payloadJson, options);\n if (stringify) {\n return JSON.stringify(schema);\n }\n return schema;\n }\n catch (err) {\n // error can happen when array has items like ['test', 'asd', '1'], type for '1' is null\n return '';\n }\n});\n//# sourceMappingURL=schemify.js.map","export var SessionType;\n(function (SessionType) {\n SessionType[\"CONTINUOUS\"] = \"CONTINUOUS\";\n /**\n * @deprecated Use MANUAL instead\n */\n SessionType[\"PLAIN\"] = \"MANUAL\";\n SessionType[\"MANUAL\"] = \"MANUAL\";\n})(SessionType || (SessionType = {}));\n//# sourceMappingURL=session-type.enum.js.map","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 2000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","// imported from https://github.com/unshiftio/yeast\n'use strict';\nconst alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), length = 64, map = {};\nlet seed = 0, i = 0, prev;\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nexport function encode(num) {\n let encoded = '';\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n return encoded;\n}\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nexport function decode(str) {\n let decoded = 0;\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n return decoded;\n}\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nexport function yeast() {\n const now = encode(+new Date());\n if (now !== prev)\n return seed = 0, prev = now;\n return now + '.' + encode(seed++);\n}\n//\n// Map each character to its index.\n//\nfor (; i < length; i++)\n map[alphabet[i]] = i;\n","export const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport, TransportError } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\nexport { parse } from \"./contrib/parseuri.js\";\nexport { nextTick } from \"./transports/websocket-constructor.js\";\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { defaultBinaryType } from \"./transports/websocket-constructor.js\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts = {}) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parse(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\n \"polling\",\n \"websocket\",\n \"webtransport\",\n ];\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this.beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", (reason) => this.onClose(\"transport close\", reason));\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this.upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState && this.opts.upgrade) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n this.resetPingTimeout();\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this.getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n getWritablePackets() {\n const shouldCheckPayloadSize = this.maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this.maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"beforeunload\", this.beforeunloadEventListener, false);\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","import { Polling } from \"./polling.js\";\nimport { WS } from \"./websocket.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: Polling,\n};\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nimport { createCookieJar, XHR as XMLHttpRequest, } from \"./xmlhttprequest.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false,\n });\n return null != xhr.responseType;\n})();\nexport class Polling extends Transport {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n this.polling = false;\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n if (this.opts.withCredentials) {\n this.cookieJar = createCookieJar();\n }\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, cookieJar: this.cookieJar }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n create() {\n var _a;\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, true);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(xhr);\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n onError(err) {\n this.emitReserved(\"error\", err, this.xhr);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this.cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import { globalThisShim as globalThis } from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport { yeast } from \"../contrib/yeast.js\";\nimport { pick } from \"../util.js\";\nimport { nextTick, usingBrowserWebSocket, WebSocket, } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @param {Object} opts - connection options\n * @protected\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n get name() {\n return \"websocket\";\n }\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \n // @ts-ignore\n \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @private\n */\n check() {\n return !!WebSocket;\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"./websocket-constructor.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n // @ts-ignore\n if (typeof WebTransport !== \"function\") {\n return;\n }\n // @ts-ignore\n this.transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n this.transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this.transport.ready.then(() => {\n this.transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this.writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this.writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this.writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","// browser shim for xmlhttprequest module\nimport { hasCORS } from \"../contrib/has-cors.js\";\nimport { globalThisShim as globalThis } from \"../globalThis.js\";\nexport function XHR(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason, description) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","import { RrwebEventExporter } from './rrweb/exporter'\nimport { SessionRecorderBrowserTraceExporter as TraceExporter } from '@multiplayer-app/session-recorder-common'\n\nwindow['__MP_SDK_EXPORTS__'] = {\n RrwebEventExporter,\n TraceExporter,\n}\n\nexport { RrwebEventExporter, TraceExporter }"],"names":["root","factory","exports","module","define","amd","this","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spreadArray","to","from","pack","arguments","length","l","Array","prototype","slice","concat","API_NAME","NOOP_CONTEXT_MANAGER","NoopContextManager","ContextAPI","getInstance","_instance","setGlobalContextManager","contextManager","registerGlobal","DiagAPI","instance","active","_getContextManager","with","context","fn","thisArg","_a","args","_i","apply","bind","target","getGlobal","disable","unregisterGlobal","_logProxy","funcName","logger","self","setLogger","optionsOrLogLevel","_b","_c","logLevel","DiagLogLevel","INFO","err","Error","stack","message","oldLogger","newLogger","createLogLevelDiagLogger","suppressOverrideMessage","warn","createComponentLogger","options","DiagComponentLogger","verbose","debug","info","TraceAPI","_proxyTracerProvider","ProxyTracerProvider","wrapSpanContext","isSpanContextValid","deleteSpan","getSpan","getActiveSpan","getSpanContext","setSpan","setSpanContext","setGlobalTracerProvider","provider","success","setDelegate","getTracerProvider","getTracer","name","version","ROOT_CONTEXT","_context","enable","createContextKey","description","for","BaseContext","parentContext","_currentContext","Map","getValue","key","get","setValue","set","deleteValue","delete","diag","props","_namespace","namespace","logProxy","unshift","maxLevel","_filterFunc","theLevel","theFunc","NONE","ALL","ERROR","WARN","DEBUG","VERBOSE","major","VERSION","split","GLOBAL_OPENTELEMETRY_API_KEY","_global","_globalThis","type","allowOverride","api","globalVersion","isCompatible","re","ownVersion","acceptedVersions","Set","rejectedVersions","myVersionMatch","match","ownVersionParsed","_reject","v","add","_accept","has","globalVersionMatch","globalVersionParsed","_makeCompatibilityCheck","globalThis","window","g","trace","NonRecordingSpan","_spanContext","INVALID_SPAN_CONTEXT","spanContext","setAttribute","_key","_value","setAttributes","_attributes","addEvent","_name","addLink","_link","addLinks","_links","setStatus","_status","updateName","end","_endTime","isRecording","recordException","_exception","_time","contextApi","NoopTracer","startSpan","Boolean","parentFromContext","startActiveSpan","arg2","arg3","arg4","opts","ctx","span","contextWithSpanSet","undefined","NoopTracerProvider","_version","_options","NOOP_TRACER","ProxyTracer","_provider","_getTracer","_fn","tracer","Reflect","_delegate","getDelegateTracer","NOOP_TRACER_PROVIDER","getDelegate","delegate","SPAN_KEY","INVALID_SPANID","INVALID_TRACEID","traceId","spanId","traceFlags","TraceFlags","VALID_TRACEID_REGEX","VALID_SPANID_REGEX","isValidTraceId","test","SpanStatusCode","ExportResultCode","Math","pow","SECOND_TO_NANOSECONDS","hrTimeToNanoseconds","time","otperformance","performance","OTLPTraceExporter","OTLPExporterBase","constructor","config","super","createLegacyOtlpBrowserExportDelegate","JsonTraceSerializer","items","resultCallback","export","forceFlush","shutdown","BoundedQueueExportPromiseHandler","_concurrencyLimit","_sendingPromises","concurrencyLimit","pushPromise","promise","hasReachedLimit","popPromise","index","indexOf","splice","then","awaitAll","Promise","all","createBoundedQueueExportPromiseHandler","convertLegacyBrowserHttpOptions","signalResourcePath","requiredHeaders","mergeOtlpHttpConfigurationWithDefaults","url","timeoutMillis","headers","wrapStaticHeadersInFunction","getHttpConfigurationDefaults","serializer","useXhr","navigator","sendBeacon","createOtlpXhrExportDelegate","createOtlpSendBeaconExportDelegate","mergeHeaders","userProvidedHeaders","fallbackHeaders","defaultHeaders","Object","assign","validateUserProvidedUrl","URL","userProvidedConfiguration","fallbackConfiguration","defaultConfiguration","mergeOtlpSharedConfigurationWithDefaults","validateAndNormalizeHeaders","agentOptions","getSharedConfigurationDefaults","keepAlive","validateTimeoutMillis","Number","isFinite","compression","isExportRetryable","statusCode","includes","parseRetryAfterToMills","retryAfter","seconds","parseInt","isInteger","delay","Date","getTime","now","createLoggingPartialSuccessResponseHandler","handleResponse","response","hasOwnProperty","isPartialSuccessResponse","partialSuccess","keys","JSON","stringify","createOtlpNetworkExportDelegate","createRetryingTransport","transport","createXhrTransport","createSendBeaconTransport","blobType","OTLPExportDelegate","_transport","_serializer","_responseHandler","_promiseQueue","_timeout","_diagLogger","internalRepresentation","code","FAILED","serializedRequest","serializeRequest","send","status","OTLPExporterError","data","deserializeResponse","SUCCESS","reason","createOtlpExportDelegate","components","settings","promiseHandler","timeout","getJitter","random","RetryingTransport","retry","inMillis","resolve","reject","setTimeout","deadline","result","attempts","nextBackoff","backoff","max","min","retryInMillis","remainingTimeoutMillis","SendBeaconTransport","_params","Blob","parameters","XhrTransport","_parameters","xhr","XMLHttpRequest","open","entries","forEach","k","setRequestHeader","ontimeout","_","onreadystatechange","getResponseHeader","onabort","onerror","partialHeaders","String","intValue","charCode","hexToBinary","hexStr","buf","Uint8Array","offset","hi","charCodeAt","lo","createResource","resource","attributes","toAttributes","droppedAttributesCount","createInstrumentationScope","scope","map","toKeyValue","toAnyValue","t","stringValue","doubleValue","boolValue","bytesValue","isArray","arrayValue","values","kvlistValue","hrTimeToNanos","hrTime","NANOSECONDS","BigInt","encodeAsLongBits","nanos","low","asUintN","high","encodeTimestamp","toString","identity","optionalHexToBinary","str","DEFAULT_ENCODER","encodeHrTime","encodeSpanContext","encodeOptionalSpanContext","getOtlpEncoder","useLongBits","useHex","sdkSpanToOtlpSpan","encoder","parentSpanId","parentSpanContext","traceState","serialize","kind","startTimeUnixNano","startTime","endTimeUnixNano","endTime","events","event","timedEvent","timeUnixNano","toOtlpSpanEvent","droppedEventsCount","links","link","toOtlpLink","droppedLinksCount","createExportTraceServiceRequest","spans","resourceSpans","spanRecordsToResourceSpans","readableSpans","resourceMap","record","ilsMap","instrumentationScopeKey","instrumentationScope","schemaUrl","records","createResourceMap","out","entryIterator","entry","ilmMap","scopeResourceSpans","ilmIterator","ilmEntry","scopeSpans","readableSpan","transformedSpans","arg","request","TextEncoder","encode","decoder","TextDecoder","parse","decode","SamplingDecision","ReflectOwnKeys","R","ReflectApply","receiver","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","isNaN","EventEmitter","init","once","emitter","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","prepend","existing","warning","create","newListener","emit","warned","w","count","console","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","arr","ret","unwrapListeners","arrayClone","listenerCount","copy","addEventListener","wrapListener","removeEventListener","defineProperty","enumerable","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","pop","spliceOne","off","removeAllListeners","rawListeners","eventNames","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","mapToArray","size","setToArray","uid","func","transform","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","exec","IE_PROTO","nativeObjectToString","reIsNative","RegExp","replace","Buffer","propertyIsEnumerable","symToStringTag","toStringTag","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","clear","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","object","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isObject","isMasked","isFunction","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","ctorString","isLength","baseUnary","genTag","isArrayLike","isArrayLikeObject","types","require","objectCtorString","allocUnsafe","getPrototype","objectCreate","nativeMax","nativeNow","baseCreate","assignMergeValue","baseAssignValue","assignValue","fromRight","baseFor","iterable","baseKeysIn","nativeKeysIn","isProto","isPrototype","baseMerge","source","srcIndex","srcValue","mergeFunc","safeGet","newValue","isCommon","isTyped","copyArray","isDeep","cloneBuffer","typedArray","arrayBuffer","isPlainObject","isNew","copyObject","keysIn","toPlainObject","initCloneObject","baseMergeDeep","baseRest","start","setToString","otherArgs","overRest","baseSetToString","string","lastCalled","stamp","remaining","shortOut","assigner","merge","sources","guard","isIterateeCall","arrayIncludes","fromIndex","baseFindIndex","baseIsNaN","baseIndexOf","arrayIncludesWith","comparator","cacheHas","cache","baseDifference","valuesLength","arrayMap","outer","computed","valuesIndex","pattern","isHostObject","baseXor","arrays","createSet","seenIndex","baseUniq","xor","isEqual","_require","FORMAT_REGEXPS","isFormat","helpers","stringFormats","typeNames","getType","val","find","typeName","mergeSchemaObjs","schema1","schema2","schema1Keys","schema2Keys","schemaWithoutItems","schemaWithItems","reduce","acc","current","retObj","x","_defineProperties","descriptor","configurable","writable","defaultOptions","required","postProcessFnc","strings","detectFormat","preProcessFnc","mode","objects","additionalProperties","skipReverseFind","filteredFormats","filter","item","ToJsonSchema","Constructor","_classCallCheck","getObjectSchemaDefault","getStringSchemaDefault","objectPostProcessDefault","commmonPostProcessDefault","protoProps","staticProps","_this","schemas","getSchema","obj","_this2","schema","objKeys","properties","propertyName","commonType","arrOfTypes","lastVal","currentType","getCommonTypeFromArrayOfTypes","getCommonArrayItemsType","itemSchema","getCommonArrayItemSchema","_this3","getArraySchemaNoMerging","getArraySchemaMerging","getArraySchemaUniform","getArraySchemaTuple","findIndex","format","getObjectSchema","getArraySchema","getStringSchema","_typeof","number","integer","date","any","email","ipv6","uri","color","hostname","alpha","alphanumeric","input","parseFloat","regex","style","phone","regexp","ipv4","OTEL_MP_SAMPLE_TRACE_RATIO","SESSION_STOPPED_EVENT","SESSION_SUBSCRIBE_EVENT","SESSION_UNSUBSCRIBE_EVENT","SESSION_AUTO_CREATED","SESSION_ADD_EVENT","DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE","mask","sensitiveFields","sensitiveHeaders","SessionRecorderSdk","DEFAULT_MASKING_CONFIG","maskAllInputs","isContentMaskingEnabled","maskBody","maskHeaders","maskBodyFieldsList","maskHeadersList","headersToInclude","headersToExclude","BASE_CONFIG","apiKey","application","environment","showWidget","showContinuousRecording","widgetButtonPlacement","WidgetButtonPlacement","bottomRight","usePostMessageFallback","apiBaseUrl","MULTIPLAYER_BASE_API_URL","exporterEndpoint","MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL","recordCanvas","schemifyDocSpanPayload","ignoreUrls","propagateTraceHeaderCorsUrls","sampleTraceRatio","maxCapturingHttpPayloadSize","captureBody","captureHeaders","masking","widgetTextOverrides","initialTitleWithContinuous","initialTitleWithoutContinuous","initialDescriptionWithContinuous","initialDescriptionWithoutContinuous","continuousRecordingLabel","startRecordingButtonText","finalTitle","finalDescription","commentPlaceholder","saveButtonText","cancelButtonText","continuousOverlayTitle","continuousOverlayDescription","saveLastSnapshotButtonText","submitDialogTitle","submitDialogSubtitle","submitDialogCommentLabel","submitDialogCommentPlaceholder","submitDialogSubmitText","submitDialogCancelText","getMaskingConfig","baseMasking","isValidArray","isValidBoolean","maskTextClass","maskTextSelector","maskInputOptions","maskInput","isValidFunction","maskText","maskConsoleEvent","isValidString","defaultValue","trim","isValidNumber","isValidEnum","enumValues","recorderEventBus","RrwebEventExporter","socket","queue","isConnecting","isConnected","usePostMessage","sessionId","socketUrl","path","auth","reconnectionAttempts","transports","flushQueue","checkReconnectionAttempts","unsubscribeFromSession","sendViaPostMessage","sendMessage","connected","payload","debugSessionId","subscribeToSession","session","shortId","_id","projectId","project","workspaceId","workspace","sessionType","creationType","close","disconnect","promiseIdCounter","promiseMap","messagingServices","isBrowser","setupMessageListener","generatePromiseId","action","postMessage","sendMessagePromise","promiseId","handlers","DebugSessionDataType","SessionState","SessionRecorderIdGenerator","generateLongId","getIdGenerator","generateShortId","sessionShortId","SessionType","MANUAL","generateTraceId","sessionTypePrefix","CONTINUOUS","MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX","MULTIPLAYER_TRACE_DEBUG_PREFIX","prefix","substring","generateSpanId","setSessionId","SessionRecorderTraceIdRatioBasedSampler","_ratio","_normalize","_upperBound","floor","shouldSample","startsWith","decision","RECORD_AND_SAMPLED","NOT_RECORD","_accumulate","ratio","accumulation","pos","ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE","ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON","ATTR_MULTIPLAYER_HTTP_REQUEST_BODY","ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY","ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS","ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS","ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE","ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE","ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE","ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE","ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY","MASK_PLACEHOLDER","__assign","s","p","SessionRecorderBrowserTraceExporter","_d","_e","_f","postMessageType","_g","postMessageTargetOrigin","exporter","_createExporter","filteredSpans","exportViaPostMessage","_serializeSpan","ended","duration","asyncAttributesPending","setApiKey","SHARED_CHAR_CODES_ARRAY","bytes","fromCharCode","maskAll","depth","maskSelected","keysToMask","_keysToMask","payloadJson","maskedData","Emitter","mixin","_callbacks","cb","callbacks","emitReserved","hasListeners","hasCORS","encodeURIComponent","qs","qry","pair","decodeURIComponent","parts","src","b","host","authority","ipv6uri","pathNames","regx","names","queryKey","query","$0","$1","$2","alphabet","prev","seed","num","encoded","yeast","globalThisShim","Socket","protocol","binaryType","defaultBinaryType","writeBuffer","secure","port","installTimerFunctions","location","prevBufferLen","agent","withCredentials","upgrade","timestampParam","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","offlineEventListener","onClose","createTransport","EIO","sid","priorWebsocketSuccess","setTimeoutFn","readyState","setTransport","onDrain","onPacket","onError","probe","failed","onTransportOpen","msg","upgrading","pause","cleanup","flush","freezeTransport","onTransportClose","onclose","onupgrade","onOpen","packet","resetPingTimeout","onHandshake","sendPacket","filterUpgrades","maxPayload","clearTimeoutFn","autoUnref","unref","packets","getWritablePackets","payloadSize","write","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","j","TransportError","Transport","doOpen","doClose","onData","decodePacket","details","onPause","createUri","_hostname","_port","_query","encodedQuery","websocket","WS","webtransport","WT","polling","Polling","empty","hasXHR2","xdomain","responseType","isSSL","xd","forceBase64","supportsBinary","cookieJar","createCookieJar","poll","total","doPoll","decodePayload","encodePayload","doWrite","timestampRequests","b64","Request","req","method","xhrStatus","pollXhr","pick","extraHeaders","setDisableHeaderCheck","addCookies","requestTimeout","parseCookies","onLoad","document","requestsCount","requests","fromError","abort","responseText","attachEvent","unloadHandler","terminationEvent","nextTick","WebSocket","MozWebSocket","usingBrowserWebSocket","isReactNative","product","toLowerCase","check","protocols","ws","addEventListeners","onopen","_socket","closeEvent","onmessage","ev","lastPacket","encodePacket","WebTransport","closed","catch","ready","createBidirectionalStream","stream","decoderStream","createPacketDecoderStream","reader","readable","pipeThrough","getReader","encoderStream","createPacketEncoderStream","pipeTo","writer","getWriter","read","XHR","join","attr","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","clearTimeout","useNativeTimers","BASE64_OVERHEAD","c","utf8Length","ceil","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","chars","lookup","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","withNativeArrayBuffer","encodedPacket","mapBinary","charAt","decodeBase64Packet","decoded","withNativeBlob","isView","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","readAsDataURL","toArray","TEXT_ENCODER","encodePacketToBinary","SEPARATOR","encodedPackets","encodedPayload","decodedPacket","TransformStream","controller","payloadLength","header","setUint8","view","setUint16","setBigUint64","enqueue","TEXT_DECODER","totalLength","chunks","chunk","concatChunks","expectedLength","isBinary","headerArray","getUint16","getUint32","Backoff","ms","factor","jitter","rand","deviation","reset","setMin","setMax","setJitter","parsed","sameNamespace","io","forceNew","multiplex","Manager","connect","nsps","subs","reconnection","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","_readyState","_parser","parser","Encoder","Decoder","_autoConnect","autoConnect","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","maybeReconnectOnOpen","_reconnecting","reconnect","engine","skipReconnect","openSubDestroy","errorSub","timer","onping","ondata","ondecoded","nsp","_destroy","_close","_packet","subDestroy","destroy","onreconnect","attempt","RESERVED_EVENTS","freeze","connect_error","disconnecting","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","_opts","disconnected","subEvents","onpacket","retries","fromQueue","volatile","_addToQueue","PacketType","EVENT","ack","_registerAckCallback","isTransportWritable","notifyOutgoingListeners","ackTimeout","withError","emitWithAck","arg1","tryCount","pending","responseArgs","_drainQueue","force","_sendConnectPacket","CONNECT","_pid","pid","_lastOffset","_clearAcks","some","onconnect","BINARY_EVENT","onevent","ACK","BINARY_ACK","onack","DISCONNECT","ondisconnect","CONNECT_ERROR","emitEvent","_anyListeners","sent","emitBuffered","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","loc","href","deconstructPacket","buffers","packetData","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","replacer","hasBinary","encodeAsString","encodeAsBinary","deconstruction","reviver","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","tryParse","substr","isPayloadValid","finishedReconstruction","reconPack","binData","withNativeFile","File","toJSON","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","d","a","definition","prop","nmd","paths","children","TraceExporter"],"sourceRoot":""}