@nsshunt/stsvueutils 1.0.80 → 1.0.81

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":"stsvueutils.mjs","sources":["../src/plugins/stsPluginKeys.ts","../node_modules/tiny-emitter/index.js","../src/plugins/emitter.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../src/plugins/stsStorage.ts","../src/plugins/storage.ts","../src/commonTypes.ts","../node_modules/lodash.clonedeep/index.js","../node_modules/detect-node/index.esm.js","../node_modules/@nsshunt/stsobservability/dist/stsobservability.mjs","../src/stores/TelemetryStore.ts","../src/plugins/stsTestWorkerDefinitions.ts","../node_modules/color-name/index.js","../node_modules/color-convert/conversions.js","../node_modules/color-convert/route.js","../node_modules/color-convert/index.js","../node_modules/ansi-styles/index.js","../node_modules/supports-color/browser.js","../node_modules/chalk/source/util.js","../node_modules/chalk/source/templates.js","../node_modules/chalk/source/index.js","../src/plugins/workerManager.ts","../src/plugins/requestResponseHelper.ts","../src/plugins/workerInstance.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSStoragePluginKey = Symbol('storage')\nexport const STSEmitterPluginKey = Symbol('emitter')\nexport const STSWorkerManagerPluginKey = Symbol('workerManager')\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","import { inject } from 'vue'\n\nimport { STSEmitterPluginKey } from './stsPluginKeys';\n\nimport * as te from 'tiny-emitter';\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSEmitterPlugin = (): te.TinyEmitter => inject(STSEmitterPluginKey) as te.TinyEmitter\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSEmitterPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any) => {\n const tinyEmitter: te.TinyEmitter = new te.TinyEmitter();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSEmitterPluginKey, tinyEmitter);\n }\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Debug from 'debug';\nconst debug = Debug(`proc:${process.pid}:storage.ts`);\n\nimport Cookies from 'js-cookie'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\n\nlet PREFIX = '_ststra_';\n\nexport interface IStsStorage<T> {\n\tget(key: string): T | null\n\tset(key: string, value: T, options?: JSONObject): void\n\tremove(key: string): void\n}\n\nexport enum ClientStorageType {\n\tLOCAL_STORAGE = 'LocalStorage', //@@ todo\n\tSESSION_STORAGE = 'SessionStorage',\n\tCOOKIE_STORAGE = 'CookieStorage',\n\tMEMORY_STORAGE = 'MemoryStorage' //@@ todo\n}\n\nclass CookieStorage<T> implements IStsStorage<T>\n{\n get = (key: string): T | null => {\n const raw = Cookies.get(PREFIX + key);\n if (raw) {\n return JSON.parse(raw);\n } else {\n return null;\n }\n }\n\n set = (key: string, value: T, options: JSONObject = { }) => {\n let cookieAttributes: Cookies.CookieAttributes = { };\n if ('https:' === window.location.protocol) {\n cookieAttributes = {\n secure: true,\n sameSite: 'none'\n };\n }\n\t\n if (options && options.daysUntilExpire) {\n cookieAttributes.expires = options.daysUntilExpire;\n } else {\n cookieAttributes.expires = 1;\n }\n debug(`CookieStorage.set: key: ${key}, value: [${value}]`);\n Cookies.set(PREFIX + key, JSON.stringify(value), cookieAttributes);\n }\n\n remove = (key: string): void => {\n Cookies.remove(PREFIX + key);\n }\n}\n\nclass SessionStorage<T> implements IStsStorage<T>\n{\n get = (key: string): T | null => {\n const value: string | null = sessionStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n debug(`SessionStorage.set: key: ${key}, value: [${value}]`);\n sessionStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n sessionStorage.removeItem(PREFIX + key);\n }\n}\n\nclass LocalStorage<T> implements IStsStorage<T>\n{\n get = (key: string): T | null => {\n const value: string | null = localStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n debug(`LocalStorage.set: key: ${key}, value: [${value}]`);\n localStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n localStorage.removeItem(PREFIX + key);\n }\n}\n\nclass MemoryStorage<T> implements IStsStorage<T>\n{\n #store: Record<string, T> = { };\n\n get = (key: string): T | null => {\n const value: T = this.#store[PREFIX + key];\n if (value) {\n return value;\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);\n this.#store[PREFIX + key] = value;\n }\n \n remove = (key: string): void => {\n delete this.#store[PREFIX + key];\n }\n}\n\nexport interface IClientStorageOptions {\n\tclientStorageType: ClientStorageType\n\tusePrefix: boolean\n\tstorageOptions?: JSONObject\n}\n\nexport class ClientStorageFactory<T>\n{\n #storage: IStsStorage<T>;\n\n constructor(options: IClientStorageOptions) {\n if (options.usePrefix === false) {\n PREFIX = '';\n }\n switch (options.clientStorageType) {\n case ClientStorageType.SESSION_STORAGE :\n this.#storage = new SessionStorage<T>();\n break;\n case ClientStorageType.LOCAL_STORAGE :\n this.#storage = new LocalStorage<T>();\n break;\n case ClientStorageType.COOKIE_STORAGE :\n this.#storage = new CookieStorage<T>();\n break;\n case ClientStorageType.MEMORY_STORAGE :\n this.#storage = new MemoryStorage<T>();\n break;\n default:\n throw new Error(`Unknown [${options.clientStorageType}] storage type.`);\n }\n return;\n }\n\n GetStorage(): IStsStorage<T>\n {\n return this.#storage;\n }\n}\n","import { inject } from \"vue\";\n\n// Declare STS plugin keys (for provide)\n// https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\nimport { STSStoragePluginKey } from './stsPluginKeys';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage'\n\nexport interface ISTSStoragePluginOptions {\n\tclientStorageType: ClientStorageType\n}\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSStoragePlugin = <T>(): IStsStorage<T> => inject(STSStoragePluginKey) as IStsStorage<T>\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSStoragePlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: <T>(app: any, options: ISTSStoragePluginOptions) => {\n const cs = new ClientStorageFactory<T>({clientStorageType: options.clientStorageType, usePrefix: true});\n\n const pluginInstance = cs.GetStorage();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n // This allows access to the $sts property within templates.\n // Also, outside of script setup or setup(), this.$sts can be used.\n // If access is required within script setup, use the useSTSStoragePlugin composable function. Example;\n // import { useSTSStoragePlugin } from './storage';\n // const STSStorageString = useSTSStoragePlugin<string>();\n //\n // Note: An alternate to get access to this global is to use the hidden API call such as;\n // const app: ComponentInternalInstance | null = getCurrentInstance();\n // Assign the $sts plugin helper (legacy method - see below (injects) for updated usage)\n // let $sts: any\n // if (app) $sts = app.appContext.config.globalProperties.$sts;\n\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSStoragePluginKey, pluginInstance);\n }\n}\n","import { IContextBase } from '@nsshunt/stsobservability'\n\nexport interface IAsyncRunnerContext extends IContextBase {\n\tid: string\n\thostName: string\n\tagentName: string\n\tthreadId: string\n\tasyncRunnerId: number\n}\n\n/**\n * Inter-Worker (IW) Payload context base.\n */\nexport interface IIWMessagePayloadContentBase {\n messageId?: string\n}\n\n/**\n * Inter-Worker (IW) message commands.\n */\nexport enum eIWMessageCommands {\n\tInstrumentTelemetry ='__STS__InstrumentTelemetry', // Used to send instrument telemetry\n\tMessagePort = '__STS__MessagePort',\n\tMessagePortResponse = '__STS__MessagePortResponse',\n\tAddAsyncRunner = '__STS__AddAsyncRunner',\n\tStopAllAsyncRunners = '__STS__StopAllAsyncRunners',\n}\n\n/**\n * Inter-Worker (IW) message command.\n */\nexport type IIWMessageCommand = eIWMessageCommands\n\n/**\n * Inter-Worker (IW) message payload.\n */\nexport interface IIWMessagePayload {\n command: IIWMessageCommand\n payload: IIWMessagePayloadContentBase\n}\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 MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\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 objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\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 match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\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 supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[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/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\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 `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\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 * 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 `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 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 Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\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 ? 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 * 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 this.__data__ = new ListCache(entries);\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}\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 return this.__data__['delete'](key);\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 cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\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 // 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 * 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 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 `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\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`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\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 `_.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 * 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 result = new buffer.constructor(buffer.length);\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 `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\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 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 assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\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 * Creates an array of the own enumerable symbol properties 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 ? overArg(nativeGetSymbols, Object) : stubArray;\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,\n// for data views in Edge < 14, and promises in Node.js.\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 = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\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 * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(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 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 `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 * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\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 */\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 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 // 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\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 = cloneDeep;\n","// Only Node.JS has a process variable that is of [[Class]] process\nexport default Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar __privateWrapper = (obj, member, setter, getter) => ({\n set _(value) {\n __privateSet(obj, member, value, setter);\n },\n get _() {\n return __privateGet(obj, member, getter);\n }\n});\nvar __privateMethod = (obj, member, method) => {\n __accessCheck(obj, member, \"access private method\");\n return method;\n};\nvar _label, _options, _data, _a, _interval, _timeoutComputeVelocity, _lastVelocity, _delta, _maxVelocity, _timerInterval, _copy, _velocity, _velocityVal, _valStack, _averageValStack, _maxAverageValStack, _maxAverageIterations, _valStackMaxLength, _valStackAverage, _timeStamp, _maxTimeDiff, _vaTimeDiff, _velocityTimeDiff, _autoComputeVelocity, _autoComputeVelocityTimeout, _countDiff, _timeDiff, _deltaCountDiff, _deltaTimeDif, _minTimeForReporting, _averageVelocity, _ComputeVelocityByTimeDiff, ComputeVelocityByTimeDiff_fn, _ComputeVelocity, ComputeVelocity_fn, _SetupAutoComputeVelocity, SetupAutoComputeVelocity_fn, _GetVelocityStackAverage, GetVelocityStackAverage_fn, _GetVal, GetVal_fn, _SetVal, SetVal_fn, _GetVelocity, GetVelocity_fn, _GetMaxVelocity, GetMaxVelocity_fn, _GetDelta, GetDelta_fn, _GetTimeStamp, GetTimeStamp_fn, _GetCountDiff, GetCountDiff_fn, _GetTimeDiff, GetTimeDiff_fn, _GetDeltaCountDiff, GetDeltaCountDiff_fn, _GetDeltaTimeDif, GetDeltaTimeDif_fn, _GetAverageVelocity, GetAverageVelocity_fn, _histogramData, _val, _copy2, _GetVal2, GetVal_fn2, _SetVal2, SetVal_fn2, _GetHistogramData, GetHistogramData_fn, _SetHistogramData, SetHistogramData_fn, _messages, _readPos, _maxSize, _copy3, _useLatestMessages, _consoleLogging, _instrumentLogging, _winstonLogging, _stsLogger, _DumpToConsole, DumpToConsole_fn, _GetVal3, GetVal_fn3, _SetVal3, SetVal_fn3, _start, _copy4, _pauseVal, _GetVal4, GetVal_fn4, _SetVal4, SetVal_fn4, _convertMS, convertMS_fn, _val2, _maxval, _lastObservedValue, _timeSeriesList, _maxSampleSize, _timerInterval2, _observer, _min, _max, _observations, _total, _copy5, _GetVal5, GetVal_fn5, _SetVal5, SetVal_fn5, _GetMin, GetMin_fn, _GetMax, GetMax_fn, _GetAverage, GetAverage_fn, _GetAndResetMaxVal, GetAndResetMaxVal_fn, _NumberCompare, NumberCompare_fn, _GetPercentileData, GetPercentileData_fn, _val3, _copy6, _GetVal6, GetVal_fn6, _SetVal6, SetVal_fn6, _tinyEmitter, _RequestCompleted, _instruments, _inPublish, _observer2, _publishState, _GetInstrument, GetInstrument_fn, _ProcessTelemetryCommand, ProcessTelemetryCommand_fn, _CreateInstrument, CreateInstrument_fn, _CreateInstruments, CreateInstruments_fn, _GetPayloadData, GetPayloadData_fn, _PublishTimeoutLoop, PublishTimeoutLoop_fn, _httpsAgent, _kafkaLog, _maxLogLength, _socketSubscribeKeepAlive, _options2, _LogMessage, LogMessage_fn, _LogDebugMessage, LogDebugMessage_fn, _LogErrorMessage, LogErrorMessage_fn, _InvokeRESTAPI, InvokeRESTAPI_fn, _GetData, _SetupTimeout, SetupTimeout_fn, _AddKeepAlive, AddKeepAlive_fn, _RemoveKeepAlive, RemoveKeepAlive_fn, _messageWithAckPayloadRecords, _socket, _maxReties, _timeoutValue, _options3, _LogDebugMessage2, LogDebugMessage_fn2, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn, _socketSubscribeKeepAlive2, _socket2, _options4, _socketIoMessageSender, _LogDebugMessage3, LogDebugMessage_fn3, _LogErrorMessage2, LogErrorMessage_fn2, _AddKeepAlive2, AddKeepAlive_fn2, _RemoveKeepAlive2, RemoveKeepAlive_fn2, _observabilitySocketIOSubscriber, _subscriptions, _kafkaHelper, _serviceModel, _agentModel, _lambdaModel, _options5, _LogDebugMessage4, LogDebugMessage_fn4, _LogErrorMessage3, LogErrorMessage_fn3, _options6, _sockets, _httpsAgent2, _LogDebugMessage5, LogDebugMessage_fn5, _LogErrorMessage4, LogErrorMessage_fn4, _EstablishSocketConnect, EstablishSocketConnect_fn;\nimport _cloneDeep from \"lodash.clonedeep\";\nimport isNode from \"detect-node\";\nimport { STSOptionsBase } from \"@nsshunt/stsutils\";\nimport { TinyEmitter } from \"tiny-emitter\";\nimport { inject } from \"vue\";\nimport https from \"node:https\";\nimport axios from \"axios\";\nimport debugModule from \"debug\";\nimport { io } from \"socket.io-client\";\nvar Gauge = /* @__PURE__ */ ((Gauge2) => {\n Gauge2[\"ACTIVE_REQUEST_GAUGE\"] = \"a\";\n Gauge2[\"AUTHENTICATION_COUNT_GAUGE\"] = \"b\";\n Gauge2[\"AUTHENTICATION_ERROR_COUNT_GAUGE\"] = \"aa\";\n Gauge2[\"AUTHENTICATION_RETRY_COUNT_GAUGE\"] = \"ab\";\n Gauge2[\"CONNECTION_POOL_IDLE_GAUGE\"] = \"c\";\n Gauge2[\"CONNECTION_POOL_TOTAL_GAUGE\"] = \"d\";\n Gauge2[\"CONNECTION_POOL_WAITING_GAUGE\"] = \"e\";\n Gauge2[\"CPU_LOAD_GAUGE\"] = \"f\";\n Gauge2[\"CPU_SYSTEM_LOAD_GAUGE\"] = \"g\";\n Gauge2[\"DURATION_GAUGE\"] = \"h\";\n Gauge2[\"DURATION_HISTOGRAM_GAUGE\"] = \"i\";\n Gauge2[\"ERROR_COUNT_GAUGE\"] = \"j\";\n Gauge2[\"LATENCY_GAUGE\"] = \"k\";\n Gauge2[\"LATENCY_HISTOGRAM_GAUGE\"] = \"l\";\n Gauge2[\"LOGGER\"] = \"m\";\n Gauge2[\"LOGGER_COPY\"] = \"n\";\n Gauge2[\"NETWORK_RX_GAUGE\"] = \"o\";\n Gauge2[\"NETWORK_TX_GAUGE\"] = \"p\";\n Gauge2[\"REQUEST_COUNT_GAUGE\"] = \"q\";\n Gauge2[\"RETRY_COUNT_GAUGE\"] = \"r\";\n Gauge2[\"TIMER_GAUGE\"] = \"s\";\n Gauge2[\"VELOCITY_GAUGE\"] = \"t\";\n Gauge2[\"CONNECTION_COUNT_GAUGE\"] = \"u\";\n Gauge2[\"OBJECT_GAUGE\"] = \"v\";\n Gauge2[\"PAYLOAD_SIZE\"] = \"w\";\n Gauge2[\"CORE_COUNT_GAUGE\"] = \"x\";\n Gauge2[\"CHILD_COUNT\"] = \"y\";\n Gauge2[\"UNKNOWN\"] = \"z\";\n return Gauge2;\n})(Gauge || {});\nvar GaugeTypes = /* @__PURE__ */ ((GaugeTypes2) => {\n GaugeTypes2[\"GAUGE_TYPE\"] = \"_\";\n GaugeTypes2[\"INSTRUMENT_GAUGE\"] = \"a\";\n GaugeTypes2[\"INSTRUMENT_VELOCITY\"] = \"b\";\n GaugeTypes2[\"INSTRUMENT_HISTOGRAM\"] = \"c\";\n GaugeTypes2[\"INSTRUMENT_LOG\"] = \"d\";\n GaugeTypes2[\"INSTRUMENT_TIMER\"] = \"e\";\n GaugeTypes2[\"INSTRUMENT_OBJECT\"] = \"f\";\n return GaugeTypes2;\n})(GaugeTypes || {});\nclass InstrumentBaseOptions {\n constructor() {\n __publicField(this, \"fixedSize\");\n __publicField(this, \"padLength\");\n __publicField(this, \"label\");\n }\n}\nclass InstrumentBaseTelemetry {\n}\nclass InstrumentBase {\n // Use for copy objects only.\n //protected _data: Record<string, any> = { };\n constructor(options = {}) {\n __privateAdd(this, _label, \"\");\n __privateAdd(this, _options, null);\n __privateAdd(this, _data, {});\n __publicField(this, _a, GaugeTypes.INSTRUMENT_OBJECT);\n // Default Gauge type\n __publicField(this, \"val\");\n if (typeof options === \"string\" || options instanceof String) {\n throw new Error(\"Instrument parameter must be an options object.\");\n }\n __privateSet(this, _options, options);\n if (options.label) {\n __privateSet(this, _label, options.label);\n } else {\n __privateSet(this, _label, \"InstrumentGauge\");\n }\n }\n WithLabel(label) {\n this.label = label;\n return this;\n }\n DefineCopyProperties(propertyNames) {\n propertyNames.forEach((propertyName) => {\n Object.defineProperty(this, propertyName, {\n enumerable: true,\n get: () => __privateGet(this, _data)[propertyName],\n set: (value) => {\n if (value === void 0) {\n return;\n }\n __privateGet(this, _data)[propertyName] = value;\n }\n });\n });\n }\n GetNumber(val) {\n if (Number.isInteger(val)) {\n return val;\n } else {\n return Math.round((val + Number.EPSILON) * 100) / 100;\n }\n }\n get options() {\n return __privateGet(this, _options);\n }\n set options(optionsValue) {\n __privateSet(this, _options, optionsValue);\n }\n get label() {\n return __privateGet(this, _label);\n }\n set label(labelValue) {\n __privateSet(this, _label, labelValue);\n }\n StopTimer() {\n }\n ProcessTelemetry(telemetry) {\n throw new Error(`Must override in extended class: [ProcessTelemetry]: [${telemetry}].`);\n }\n /*\n toJSON()\n {\n \treturn this._serialValue;\n }\n */\n /*\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n [Symbol.iterator]() {\n \t// Use a new index for each iterator. This makes multiple\n \t// iterations over the iterable safe for non-trivial cases,\n \t// such as use of break or nested looping over the same iterable.\n \tlet index = 0;\n \n \treturn {\n \t\tnext: () => {\n \t\t\tif (index < 1) {\n \t\t\t\treturn {value: this.GetFormatted(), done: false}\n \t\t\t} else {\n \t\t\t\treturn {done: true}\n \t\t\t}\n \t\t}\n \t}\n }\n */\n}\n_a = GaugeTypes.GAUGE_TYPE;\n_label = new WeakMap();\n_options = new WeakMap();\n_data = new WeakMap();\nclass InstrumentVelocityOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"interval\");\n __publicField(this, \"valStackMaxLength\");\n __publicField(this, \"maxAverageValStack\");\n __publicField(this, \"maxAverageIterations\");\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n __publicField(this, \"autoComputeVelocity\");\n __publicField(this, \"velocityTimeDiff\");\n __publicField(this, \"vaTimeDiff\");\n __publicField(this, \"autoComputeVelocityTimeout\");\n }\n}\nclass InstrumentVelocityTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n __publicField(this, \"Inc\");\n }\n}\nclass InstrumentVelocity extends InstrumentBase {\n // timeWindow = Number of intervals to use as the sliding time window same size. Uses average value within the time window. Larger window produces a smooth (more laggy) curve. Shorter time\n // window may be \"spikey\" depending on the volatility of the data being recorded.\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _ComputeVelocityByTimeDiff);\n __privateAdd(this, _ComputeVelocity);\n __privateAdd(this, _SetupAutoComputeVelocity);\n __privateAdd(this, _GetVelocityStackAverage);\n __privateAdd(this, _GetVal);\n __privateAdd(this, _SetVal);\n __privateAdd(this, _GetVelocity);\n __privateAdd(this, _GetMaxVelocity);\n __privateAdd(this, _GetDelta);\n __privateAdd(this, _GetTimeStamp);\n __privateAdd(this, _GetCountDiff);\n __privateAdd(this, _GetTimeDiff);\n __privateAdd(this, _GetDeltaCountDiff);\n __privateAdd(this, _GetDeltaTimeDif);\n __privateAdd(this, _GetAverageVelocity);\n //#val = 0;\n __privateAdd(this, _interval, null);\n __privateAdd(this, _timeoutComputeVelocity, null);\n __privateAdd(this, _lastVelocity, 0);\n __privateAdd(this, _delta, 0);\n __privateAdd(this, _maxVelocity, 0);\n __privateAdd(this, _timerInterval, 0);\n __privateAdd(this, _copy, false);\n __privateAdd(this, _velocity, 0);\n __privateAdd(this, _velocityVal, 0);\n __privateAdd(this, _valStack, []);\n __privateAdd(this, _averageValStack, []);\n __privateAdd(this, _maxAverageValStack, 0);\n __privateAdd(this, _maxAverageIterations, 0);\n __privateAdd(this, _valStackMaxLength, 0);\n __privateAdd(this, _valStackAverage, 0);\n __privateAdd(this, _timeStamp, 0);\n __privateAdd(this, _maxTimeDiff, 0);\n __privateAdd(this, _vaTimeDiff, 0);\n __privateAdd(this, _velocityTimeDiff, 0);\n __privateAdd(this, _autoComputeVelocity, false);\n __privateAdd(this, _autoComputeVelocityTimeout, 0);\n // 50ms to auto computer after an update when not in auto compute mode.\n __privateAdd(this, _countDiff, 0);\n __privateAdd(this, _timeDiff, 0);\n __privateAdd(this, _deltaCountDiff, 0);\n __privateAdd(this, _deltaTimeDif, 0);\n __privateAdd(this, _minTimeForReporting, 0);\n __privateAdd(this, _averageVelocity, []);\n __publicField(this, \"maxVelocity\", 0);\n __publicField(this, \"delta\", 0);\n __publicField(this, \"velocity\", 0);\n __publicField(this, \"va\", 0);\n __publicField(this, \"timeStamp\", 0);\n __publicField(this, \"countDiff\", 0);\n __publicField(this, \"timeDiff\", 0);\n __publicField(this, \"deltaCountDiff\", 0);\n __publicField(this, \"deltaTimeDif\", 0);\n __publicField(this, \"averageVelocity\", []);\n __publicField(this, \"val\", 0);\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentVelocity\";\n } else {\n this.label = options.label;\n }\n if (typeof options.interval === \"undefined\") {\n __privateSet(this, _timerInterval, 1e3);\n } else {\n __privateSet(this, _timerInterval, options.interval);\n }\n if (typeof options.valStackMaxLength === \"undefined\") {\n __privateSet(this, _valStackMaxLength, 100);\n } else {\n __privateSet(this, _valStackMaxLength, options.valStackMaxLength);\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy, false);\n } else {\n __privateSet(this, _copy, true);\n }\n if (typeof options.autoComputeVelocity === \"undefined\") {\n __privateSet(this, _autoComputeVelocity, false);\n } else {\n __privateSet(this, _autoComputeVelocity, options.autoComputeVelocity);\n }\n if (typeof options.maxAverageValStack === \"undefined\") {\n __privateSet(this, _maxAverageValStack, 5);\n } else {\n __privateSet(this, _maxAverageValStack, options.maxAverageValStack);\n }\n if (typeof options.maxAverageIterations === \"undefined\") {\n __privateSet(this, _maxAverageIterations, 3);\n } else {\n __privateSet(this, _maxAverageIterations, options.maxAverageIterations);\n }\n if (typeof options.velocityTimeDiff === \"undefined\") {\n __privateSet(this, _velocityTimeDiff, 5e3);\n } else {\n __privateSet(this, _velocityTimeDiff, options.velocityTimeDiff);\n }\n if (typeof options.vaTimeDiff === \"undefined\") {\n __privateSet(this, _vaTimeDiff, 1e4);\n } else {\n __privateSet(this, _vaTimeDiff, options.vaTimeDiff);\n }\n if (typeof options.autoComputeVelocityTimeout === \"undefined\") {\n __privateSet(this, _autoComputeVelocityTimeout, 50);\n } else {\n __privateSet(this, _autoComputeVelocityTimeout, options.autoComputeVelocityTimeout);\n }\n __privateSet(this, _maxTimeDiff, __privateGet(this, _vaTimeDiff) * 2);\n __privateSet(this, _minTimeForReporting, __privateGet(this, _vaTimeDiff) + 2e3);\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_VELOCITY\n });\n if (__privateGet(this, _copy)) {\n this.DefineCopyProperties([\n \"val\",\n \"maxVelocity\",\n \"delta\",\n \"velocity\",\n \"va\",\n \"timeStamp\",\n \"deltaTimeDif\",\n \"deltaCountDiff\",\n \"timeDiff\",\n \"countDiff\",\n \"averageVelocity\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal, GetVal_fn).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal, SetVal_fn).call(this, value);\n }\n });\n Object.defineProperty(this, \"maxVelocity\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetMaxVelocity, GetMaxVelocity_fn).call(this)\n });\n Object.defineProperty(this, \"delta\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetDelta, GetDelta_fn).call(this)\n });\n Object.defineProperty(this, \"velocity\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVelocity, GetVelocity_fn).call(this)\n });\n Object.defineProperty(this, \"va\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVelocityStackAverage, GetVelocityStackAverage_fn).call(this)\n });\n Object.defineProperty(this, \"timeStamp\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetTimeStamp, GetTimeStamp_fn).call(this)\n });\n Object.defineProperty(this, \"countDiff\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetCountDiff, GetCountDiff_fn).call(this)\n });\n Object.defineProperty(this, \"timeDiff\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetTimeDiff, GetTimeDiff_fn).call(this)\n });\n Object.defineProperty(this, \"deltaCountDiff\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetDeltaCountDiff, GetDeltaCountDiff_fn).call(this)\n });\n Object.defineProperty(this, \"deltaTimeDif\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetDeltaTimeDif, GetDeltaTimeDif_fn).call(this)\n });\n Object.defineProperty(this, \"averageVelocity\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetAverageVelocity, GetAverageVelocity_fn).call(this)\n });\n if (__privateGet(this, _timerInterval) > 0 && __privateGet(this, _autoComputeVelocity) === false) {\n this._StartTimer();\n }\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n this.velocity = result.velocity;\n this.maxVelocity = result.maxVelocity;\n this.delta = result.delta;\n this.va = result.va;\n this.timeStamp = result.timeStamp;\n this.countDiff = result.countDiff;\n this.timeDiff = result.timeDiff;\n this.deltaCountDiff = result.deltaCountDiff;\n this.deltaTimeDif = result.deltaTimeDif;\n this.averageVelocity = _cloneDeep(result.averageVelocity);\n }\n }\n WithValStackMaxLength(valStackMaxLength) {\n __privateSet(this, _valStackMaxLength, valStackMaxLength);\n __privateSet(this, _valStack, []);\n return this;\n }\n _StartTimer() {\n __privateSet(this, _interval, setInterval(() => {\n __privateMethod(this, _ComputeVelocity, ComputeVelocity_fn).call(this);\n let pushVal = __privateGet(this, _velocity);\n for (let i = 0; i < __privateGet(this, _maxAverageIterations); i++) {\n if (!__privateGet(this, _averageValStack)[i]) {\n __privateGet(this, _averageValStack)[i] = [];\n }\n __privateGet(this, _averageValStack)[i].push(pushVal);\n if (__privateGet(this, _averageValStack)[i].length > __privateGet(this, _maxAverageValStack)) {\n __privateGet(this, _averageValStack)[i].shift();\n }\n pushVal = __privateGet(this, _averageValStack)[i].reduce((prev, current) => prev + current) / __privateGet(this, _averageValStack)[i].length;\n __privateGet(this, _averageVelocity)[i] = pushVal;\n }\n }, __privateGet(this, _timerInterval)));\n if (isNode) {\n __privateGet(this, _interval).unref();\n }\n }\n Inc(incVal = 1) {\n __privateSet(this, _velocityVal, __privateGet(this, _velocityVal) + incVal);\n if (__privateGet(this, _autoComputeVelocity)) {\n __privateMethod(this, _ComputeVelocity, ComputeVelocity_fn).call(this);\n } else {\n __privateMethod(this, _SetupAutoComputeVelocity, SetupAutoComputeVelocity_fn).call(this);\n }\n }\n StopTimer() {\n if (__privateGet(this, _interval) !== null) {\n clearTimeout(__privateGet(this, _interval));\n __privateSet(this, _interval, null);\n }\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.Inc) {\n this.Inc(telemetry.Inc);\n }\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n }\n}\n_interval = new WeakMap();\n_timeoutComputeVelocity = new WeakMap();\n_lastVelocity = new WeakMap();\n_delta = new WeakMap();\n_maxVelocity = new WeakMap();\n_timerInterval = new WeakMap();\n_copy = new WeakMap();\n_velocity = new WeakMap();\n_velocityVal = new WeakMap();\n_valStack = new WeakMap();\n_averageValStack = new WeakMap();\n_maxAverageValStack = new WeakMap();\n_maxAverageIterations = new WeakMap();\n_valStackMaxLength = new WeakMap();\n_valStackAverage = new WeakMap();\n_timeStamp = new WeakMap();\n_maxTimeDiff = new WeakMap();\n_vaTimeDiff = new WeakMap();\n_velocityTimeDiff = new WeakMap();\n_autoComputeVelocity = new WeakMap();\n_autoComputeVelocityTimeout = new WeakMap();\n_countDiff = new WeakMap();\n_timeDiff = new WeakMap();\n_deltaCountDiff = new WeakMap();\n_deltaTimeDif = new WeakMap();\n_minTimeForReporting = new WeakMap();\n_averageVelocity = new WeakMap();\n_ComputeVelocityByTimeDiff = new WeakSet();\nComputeVelocityByTimeDiff_fn = function(checkTimeDiff, checkDeltaTimeDiff) {\n let val = 0;\n let deltaVal = 0;\n let countDiff = 0;\n let timeDiff = 0;\n let deltaCountDiff = 0;\n let deltaTimeDiff = 0;\n if (__privateGet(this, _valStack).length > 1 && __privateGet(this, _valStack)[__privateGet(this, _valStack).length - 1].timeStamp - __privateGet(this, _valStack)[0].timeStamp > __privateGet(this, _minTimeForReporting)) {\n const dp = __privateGet(this, _valStack)[__privateGet(this, _valStack).length - 1];\n let timeDiffPos = -1;\n let deltaDiffPos = -1;\n for (let i = __privateGet(this, _valStack).length - 2; i > -1; i--) {\n if (timeDiffPos === -1 && __privateGet(this, _timeStamp) - __privateGet(this, _valStack)[i].timeStamp >= checkTimeDiff) {\n timeDiffPos = i;\n if (checkDeltaTimeDiff === 0) {\n break;\n }\n }\n if (deltaDiffPos === -1 && __privateGet(this, _timeStamp) - __privateGet(this, _valStack)[i].timeStamp >= checkDeltaTimeDiff) {\n deltaDiffPos = i;\n }\n if (timeDiffPos !== -1 && deltaDiffPos !== -1) {\n break;\n }\n }\n if (timeDiffPos > -1) {\n countDiff = dp.count - __privateGet(this, _valStack)[timeDiffPos].count;\n if (countDiff > 0) {\n timeDiff = dp.timeStamp - __privateGet(this, _valStack)[timeDiffPos].timeStamp;\n if (timeDiff > 0) {\n val = 1e3 / timeDiff * countDiff;\n } else {\n val = 0;\n }\n } else {\n val = 0;\n }\n } else {\n val = 0;\n }\n if (deltaDiffPos > -1) {\n deltaCountDiff = __privateGet(this, _valStack)[timeDiffPos].count - __privateGet(this, _valStack)[deltaDiffPos].count;\n if (deltaCountDiff > 0) {\n deltaTimeDiff = __privateGet(this, _valStack)[timeDiffPos].timeStamp - __privateGet(this, _valStack)[deltaDiffPos].timeStamp;\n if (deltaTimeDiff > 0) {\n deltaVal = 1e3 / deltaTimeDiff * deltaTimeDiff;\n } else {\n deltaVal = 0;\n }\n } else {\n deltaVal = 0;\n }\n } else {\n deltaVal = 0;\n }\n }\n return {\n val,\n countDiff,\n timeDiff,\n deltaVal,\n deltaCountDiff,\n deltaTimeDiff\n };\n};\n_ComputeVelocity = new WeakSet();\nComputeVelocity_fn = function() {\n const dp = {\n timeStamp: performance.now(),\n count: __privateGet(this, _velocityVal)\n };\n __privateGet(this, _valStack).push(dp);\n __privateSet(this, _timeStamp, dp.timeStamp);\n while (__privateGet(this, _valStack).length > 0 && __privateGet(this, _timeStamp) - __privateGet(this, _valStack)[0].timeStamp > __privateGet(this, _maxTimeDiff)) {\n __privateGet(this, _valStack).shift();\n }\n const valStackAverageDataPoint = __privateMethod(this, _ComputeVelocityByTimeDiff, ComputeVelocityByTimeDiff_fn).call(this, __privateGet(this, _vaTimeDiff), 0);\n __privateSet(this, _valStackAverage, valStackAverageDataPoint.val);\n const velocityDataPoint = __privateMethod(this, _ComputeVelocityByTimeDiff, ComputeVelocityByTimeDiff_fn).call(this, __privateGet(this, _velocityTimeDiff), __privateGet(this, _velocityTimeDiff) * 2);\n __privateSet(this, _velocity, velocityDataPoint.val);\n __privateSet(this, _delta, velocityDataPoint.val - velocityDataPoint.deltaVal);\n __privateSet(this, _countDiff, velocityDataPoint.countDiff);\n __privateSet(this, _timeDiff, velocityDataPoint.timeDiff);\n __privateSet(this, _deltaCountDiff, velocityDataPoint.deltaCountDiff);\n __privateSet(this, _deltaTimeDif, velocityDataPoint.deltaTimeDiff);\n __privateSet(this, _lastVelocity, __privateGet(this, _velocity));\n if (__privateGet(this, _velocity) > __privateGet(this, _maxVelocity)) {\n __privateSet(this, _maxVelocity, __privateGet(this, _velocity));\n }\n};\n_SetupAutoComputeVelocity = new WeakSet();\nSetupAutoComputeVelocity_fn = function() {\n if (__privateGet(this, _timeoutComputeVelocity)) {\n clearTimeout(__privateGet(this, _timeoutComputeVelocity));\n }\n __privateSet(this, _timeoutComputeVelocity, setTimeout(() => {\n __privateMethod(this, _ComputeVelocity, ComputeVelocity_fn).call(this);\n }, __privateGet(this, _autoComputeVelocityTimeout)));\n};\n_GetVelocityStackAverage = new WeakSet();\nGetVelocityStackAverage_fn = function() {\n return this.GetNumber(__privateGet(this, _valStackAverage));\n};\n_GetVal = new WeakSet();\nGetVal_fn = function() {\n return this.GetNumber(__privateGet(this, _velocityVal));\n};\n_SetVal = new WeakSet();\nSetVal_fn = function(updatedValue) {\n __privateSet(this, _velocityVal, updatedValue);\n if (__privateGet(this, _autoComputeVelocity)) {\n __privateMethod(this, _ComputeVelocity, ComputeVelocity_fn).call(this);\n } else {\n __privateMethod(this, _SetupAutoComputeVelocity, SetupAutoComputeVelocity_fn).call(this);\n }\n};\n_GetVelocity = new WeakSet();\nGetVelocity_fn = function() {\n return this.GetNumber(__privateGet(this, _velocity));\n};\n_GetMaxVelocity = new WeakSet();\nGetMaxVelocity_fn = function() {\n return this.GetNumber(__privateGet(this, _maxVelocity));\n};\n_GetDelta = new WeakSet();\nGetDelta_fn = function() {\n return this.GetNumber(__privateGet(this, _delta));\n};\n_GetTimeStamp = new WeakSet();\nGetTimeStamp_fn = function() {\n return this.GetNumber(__privateGet(this, _timeStamp));\n};\n_GetCountDiff = new WeakSet();\nGetCountDiff_fn = function() {\n return this.GetNumber(__privateGet(this, _countDiff));\n};\n_GetTimeDiff = new WeakSet();\nGetTimeDiff_fn = function() {\n return this.GetNumber(__privateGet(this, _timeDiff));\n};\n_GetDeltaCountDiff = new WeakSet();\nGetDeltaCountDiff_fn = function() {\n return this.GetNumber(__privateGet(this, _deltaCountDiff));\n};\n_GetDeltaTimeDif = new WeakSet();\nGetDeltaTimeDif_fn = function() {\n return this.GetNumber(__privateGet(this, _deltaTimeDif));\n};\n_GetAverageVelocity = new WeakSet();\nGetAverageVelocity_fn = function() {\n return __privateGet(this, _averageVelocity);\n};\nvar HistogramDataElementPos = /* @__PURE__ */ ((HistogramDataElementPos2) => {\n HistogramDataElementPos2[HistogramDataElementPos2[\"val\"] = 0] = \"val\";\n HistogramDataElementPos2[HistogramDataElementPos2[\"label\"] = 1] = \"label\";\n HistogramDataElementPos2[HistogramDataElementPos2[\"breakPoint\"] = 2] = \"breakPoint\";\n return HistogramDataElementPos2;\n})(HistogramDataElementPos || {});\nclass InstrumentHistogramOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"histogramData\");\n __publicField(this, \"initValue\");\n __publicField(this, \"fromJSON\");\n }\n}\nclass InstrumentHistogramTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n }\n}\nclass InstrumentHistogram extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _GetVal2);\n __privateAdd(this, _SetVal2);\n __privateAdd(this, _GetHistogramData);\n __privateAdd(this, _SetHistogramData);\n __privateAdd(this, _histogramData, []);\n __privateAdd(this, _val, 0);\n __privateAdd(this, _copy2, false);\n __publicField(this, \"hist\", []);\n __publicField(this, \"val\", 0);\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentHistogram\";\n } else {\n this.label = options.label;\n }\n let histogramData = null;\n if (typeof options.histogramData === \"undefined\") {\n histogramData = null;\n } else {\n histogramData = options.histogramData;\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy2, false);\n } else {\n __privateSet(this, _copy2, true);\n }\n if (histogramData === null) {\n __privateSet(this, _histogramData, [\n [0, \"10\", 10],\n [0, \"20\", 20],\n [0, \"50\", 50],\n [0, \"100\", 100],\n [0, \"1000\", 1e3],\n [0, \"5000\", 5e3],\n [0, \"EE\", 0]\n ]);\n } else if (Array.isArray(histogramData)) {\n __privateSet(this, _histogramData, []);\n for (let i = 0; i < histogramData.length; i++) {\n __privateGet(this, _histogramData).push([0, \"\" + histogramData[i], parseFloat(histogramData[i].toString())]);\n }\n __privateGet(this, _histogramData).push([0, \"EE\", 0]);\n } else {\n throw new Error(`Passed [${histogramData}] must be an array.`);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_HISTOGRAM\n });\n if (__privateGet(this, _copy2)) {\n this.DefineCopyProperties([\n \"val\",\n \"hist\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal2, GetVal_fn2).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal2, SetVal_fn2).call(this, value);\n }\n });\n Object.defineProperty(this, \"hist\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetHistogramData, GetHistogramData_fn).call(this),\n set: (value) => {\n __privateMethod(this, _SetHistogramData, SetHistogramData_fn).call(this, value);\n }\n });\n }\n if (typeof options.initValue !== \"undefined\") {\n __privateSet(this, _val, options.initValue);\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n __privateSet(this, _val, result.val);\n this.hist = result.hist;\n }\n }\n WithInitVal(initVal) {\n __privateSet(this, _val, initVal);\n return this;\n }\n ResetHistogramData() {\n for (let i = 0; i < this.hist.length; i++) {\n this.hist[i][0] = 0;\n }\n }\n AddObservation(updateValue) {\n if (__privateGet(this, _copy2)) {\n throw new Error(\"Cannot add observations from the copy version of this class.\");\n }\n let i = 0;\n for (; i < __privateGet(this, _histogramData).length - 1; i++) {\n if (updateValue <= __privateGet(this, _histogramData)[i][\n 2\n /* breakPoint */\n ]) {\n __privateGet(this, _histogramData)[i][\n 0\n /* val */\n ]++;\n return;\n }\n }\n __privateGet(this, _histogramData)[i][\n 0\n /* val */\n ]++;\n }\n get formattedHistogramData() {\n let retVal = \"\";\n let sep = \"\";\n for (let i = 0; i < this.hist.length; i++) {\n retVal += sep + \"[\" + (this.hist[i][\n 0\n /* val */\n ] + \"/\" + this.hist[i][\n 1\n /* label */\n ]).padStart(10, \" \") + \"]\";\n sep = \" \";\n }\n return retVal;\n }\n static AddHistogramDataEx(histoA, histoB) {\n if (histoA === null) {\n return _cloneDeep(histoB);\n }\n const result = _cloneDeep(histoA);\n const histogramAData = result.hist;\n const histogramBData = histoB.hist;\n if (histogramAData.length !== histogramBData.length) {\n throw new Error(\"Invalid HistogramData. HistogramData bucket lengths must be the same.\");\n }\n for (let i = 0; i < histogramAData.length; i++) {\n if (histogramAData[i][\n 2\n /* breakPoint */\n ] !== histogramBData[i][\n 2\n /* breakPoint */\n ]) {\n throw new Error(`Invalid HistogramData. HistogramData bucket break-point at index [${i}] must be the same.`);\n }\n if (histogramAData[i][\n 1\n /* label */\n ] !== histogramBData[i][\n 1\n /* label */\n ]) {\n throw new Error(`Invalid HistogramData. HistogramData bucket label at index [${i}] must be the same.`);\n }\n histogramAData[i][\n 0\n /* val */\n ] += histogramBData[i][\n 0\n /* val */\n ];\n }\n return result;\n }\n /**\n * Adds a value object (from GetFormatted()) to this instance.\n * @param {*} value \n */\n AddHistogramData(histogramData) {\n if (histogramData === null) {\n return;\n }\n if (this.hist.length !== histogramData.hist.length) {\n throw new Error(\"Invalid HistogramData. HistogramData bucket lengths must be the same.\");\n }\n for (let i = 0; i < histogramData.hist.length; i++) {\n if (this.hist[i][\n 2\n /* breakPoint */\n ] !== histogramData.hist[i][\n 2\n /* breakPoint */\n ]) {\n throw new Error(`Invalid HistogramData. HistogramData bucket break-point at index [${i}] must be the same.`);\n }\n if (this.hist[i][\n 1\n /* label */\n ] !== histogramData.hist[i][\n 1\n /* label */\n ]) {\n throw new Error(`Invalid HistogramData. HistogramData bucket label at index [${i}] must be the same.`);\n }\n this.hist[i][\n 0\n /* val */\n ] += histogramData.hist[i][\n 0\n /* val */\n ];\n }\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n }\n}\n_histogramData = new WeakMap();\n_val = new WeakMap();\n_copy2 = new WeakMap();\n_GetVal2 = new WeakSet();\nGetVal_fn2 = function() {\n return this.GetNumber(__privateGet(this, _val));\n};\n_SetVal2 = new WeakSet();\nSetVal_fn2 = function(value) {\n __privateSet(this, _val, value);\n this.AddObservation(value);\n};\n_GetHistogramData = new WeakSet();\nGetHistogramData_fn = function() {\n return __privateGet(this, _histogramData);\n};\n_SetHistogramData = new WeakSet();\nSetHistogramData_fn = function(value) {\n __privateSet(this, _histogramData, value);\n};\nclass InstrumentLogOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"maxSize\");\n __publicField(this, \"useLatestMessages\");\n __publicField(this, \"consoleLogging\");\n __publicField(this, \"instrumentLogging\");\n __publicField(this, \"winstonLogging\");\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n __publicField(this, \"logger\");\n }\n}\nclass InstrumentLogTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"Append\");\n __publicField(this, \"LogMessage\");\n __publicField(this, \"val\");\n __publicField(this, \"ResetLog\");\n }\n}\nclass InstrumentLog extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _DumpToConsole);\n __privateAdd(this, _GetVal3);\n __privateAdd(this, _SetVal3);\n __privateAdd(this, _messages, []);\n __privateAdd(this, _readPos, 0);\n __privateAdd(this, _maxSize, 200);\n // Max length of cached log messages\n __privateAdd(this, _copy3, false);\n __privateAdd(this, _useLatestMessages, false);\n __privateAdd(this, _consoleLogging, false);\n __privateAdd(this, _instrumentLogging, true);\n __privateAdd(this, _winstonLogging, false);\n __privateAdd(this, _stsLogger, void 0);\n __publicField(this, \"val\", []);\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentLog\";\n } else {\n this.label = options.label;\n }\n if (typeof options.maxSize === \"undefined\") {\n __privateSet(this, _maxSize, 200);\n } else {\n __privateSet(this, _maxSize, options.maxSize);\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy3, false);\n } else {\n __privateSet(this, _copy3, true);\n }\n if (typeof options.useLatestMessages === \"undefined\") {\n __privateSet(this, _useLatestMessages, false);\n } else {\n __privateSet(this, _useLatestMessages, options.useLatestMessages);\n }\n if (typeof options.consoleLogging === \"undefined\") {\n __privateSet(this, _consoleLogging, false);\n } else {\n __privateSet(this, _consoleLogging, options.consoleLogging);\n }\n if (typeof options.instrumentLogging === \"undefined\") {\n __privateSet(this, _instrumentLogging, true);\n } else {\n __privateSet(this, _instrumentLogging, options.instrumentLogging);\n }\n if (typeof options.winstonLogging === \"undefined\") {\n __privateSet(this, _winstonLogging, false);\n } else {\n __privateSet(this, _winstonLogging, options.winstonLogging);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_LOG\n });\n if (__privateGet(this, _copy3)) {\n this.DefineCopyProperties([\n \"val\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => _cloneDeep(__privateMethod(this, _GetVal3, GetVal_fn3).call(this)),\n set: (value) => {\n __privateMethod(this, _SetVal3, SetVal_fn3).call(this, value);\n }\n });\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n }\n }\n WithMaxSize(maxSize) {\n __privateSet(this, _maxSize, maxSize);\n return this;\n }\n WithUseLatestMessages(useLatestMessages) {\n __privateSet(this, _useLatestMessages, useLatestMessages);\n return this;\n }\n WithConsoleLogging(consoleLogging) {\n __privateSet(this, _consoleLogging, consoleLogging);\n return this;\n }\n WithInstrumentLogging(instrumentLogging) {\n __privateSet(this, _instrumentLogging, instrumentLogging);\n return this;\n }\n get MaxSize() {\n return __privateGet(this, _maxSize);\n }\n set MaxSize(maxSize) {\n __privateSet(this, _maxSize, maxSize);\n }\n get consoleLogging() {\n return __privateGet(this, _consoleLogging);\n }\n set consoleLogging(value) {\n __privateSet(this, _consoleLogging, value);\n if (value === true) {\n __privateMethod(this, _DumpToConsole, DumpToConsole_fn).call(this);\n }\n }\n get instrumentLogging() {\n return __privateGet(this, _instrumentLogging);\n }\n set instrumentLogging(value) {\n __privateSet(this, _instrumentLogging, value);\n }\n Append(messageArray) {\n for (let i = 0; i < messageArray.length; i++) {\n this.LogMessage(messageArray[i]);\n }\n }\n error(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).error(message);\n }\n warn(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).warn(message);\n }\n info(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).info(message);\n }\n http(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).http(message);\n }\n verbose(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).verbose(message);\n }\n debug(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).debug(message);\n }\n silly(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).silly(message);\n }\n LogMessage(message) {\n if (__privateGet(this, _copy3)) {\n throw new Error(\"Cannot add log messages from the copy version of this class.\");\n }\n if (__privateGet(this, _consoleLogging)) {\n console.log(message);\n }\n if (__privateGet(this, _instrumentLogging) === false) {\n return;\n }\n __privateGet(this, _messages).push(message);\n if (__privateGet(this, _messages).length > __privateGet(this, _maxSize)) {\n __privateGet(this, _messages).shift();\n __privateSet(this, _readPos, __privateGet(this, _readPos) > 0 ? __privateGet(this, _readPos) - 1 : 0);\n }\n }\n GetMessagesNoUpdate() {\n return __privateGet(this, _messages).slice(__privateGet(this, _readPos));\n }\n // This will return only those messages that have been added since the last read\n GetMessagesSinceLastRead() {\n const retVal = __privateGet(this, _messages).slice(__privateGet(this, _readPos));\n __privateSet(this, _readPos, __privateGet(this, _messages).length);\n return retVal;\n }\n ResetLog() {\n __privateSet(this, _messages, []);\n __privateSet(this, _readPos, 0);\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n if (telemetry.Append) {\n this.Append(telemetry.Append);\n }\n if (telemetry.LogMessage) {\n this.LogMessage(telemetry.LogMessage);\n }\n if (telemetry.ResetLog) {\n this.ResetLog();\n }\n }\n}\n_messages = new WeakMap();\n_readPos = new WeakMap();\n_maxSize = new WeakMap();\n_copy3 = new WeakMap();\n_useLatestMessages = new WeakMap();\n_consoleLogging = new WeakMap();\n_instrumentLogging = new WeakMap();\n_winstonLogging = new WeakMap();\n_stsLogger = new WeakMap();\n_DumpToConsole = new WeakSet();\nDumpToConsole_fn = function() {\n const logReport = this.GetMessagesSinceLastRead();\n for (let i = 0; i < logReport.length; i++) {\n console.log(logReport[i]);\n }\n};\n_GetVal3 = new WeakSet();\nGetVal_fn3 = function() {\n if (__privateGet(this, _useLatestMessages)) {\n return this.GetMessagesSinceLastRead();\n } else {\n return __privateGet(this, _messages);\n }\n};\n_SetVal3 = new WeakSet();\nSetVal_fn3 = function(updatedValue) {\n __privateSet(this, _messages, updatedValue);\n __privateSet(this, _readPos, 0);\n};\nclass InstrumentTimerOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n }\n}\nclass InstrumentTimerTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n __publicField(this, \"Pause\");\n __publicField(this, \"Resume\");\n __publicField(this, \"Reset\");\n }\n}\nclass InstrumentTimerGauge extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _GetVal4);\n __privateAdd(this, _SetVal4);\n __privateAdd(this, _convertMS);\n __privateAdd(this, _start, 0);\n __privateAdd(this, _copy4, false);\n __privateAdd(this, _pauseVal, 0);\n __publicField(this, \"val\", 0);\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentTimerGauge\";\n } else {\n this.label = options.label;\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy4, false);\n } else {\n __privateSet(this, _copy4, true);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_TIMER\n });\n if (__privateGet(this, _copy4)) {\n this.DefineCopyProperties([\n \"val\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal4, GetVal_fn4).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal4, SetVal_fn4).call(this, value);\n }\n });\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n }\n this.Reset();\n }\n // Take a snap shot of the current elapsed time. The 'clock' will still keep running.\n Pause() {\n __privateSet(this, _pauseVal, this.val);\n }\n Resume() {\n __privateSet(this, _pauseVal, 0);\n }\n Reset() {\n if (isNode) {\n __privateSet(this, _start, performance.now());\n } else {\n __privateSet(this, _start, performance.now());\n }\n }\n get start() {\n return __privateGet(this, _start);\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n if (telemetry.Pause) {\n this.Pause();\n }\n if (telemetry.Resume) {\n this.Resume();\n }\n if (telemetry.Reset) {\n this.Reset();\n }\n }\n}\n_start = new WeakMap();\n_copy4 = new WeakMap();\n_pauseVal = new WeakMap();\n_GetVal4 = new WeakSet();\nGetVal_fn4 = function() {\n if (__privateGet(this, _pauseVal) !== 0) {\n return this.GetNumber(__privateGet(this, _pauseVal));\n }\n if (isNode) {\n return this.GetNumber(performance.now() - __privateGet(this, _start));\n } else {\n return this.GetNumber(performance.now() - __privateGet(this, _start));\n }\n};\n_SetVal4 = new WeakSet();\nSetVal_fn4 = function(updatedValue) {\n if (isNode) {\n __privateSet(this, _start, performance.now() - updatedValue);\n } else {\n __privateSet(this, _start, performance.now() - updatedValue);\n }\n};\n_convertMS = new WeakSet();\nconvertMS_fn = function(ms) {\n let s = Math.floor(ms / 1e3);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n const pad = function(n) {\n return n < 10 ? \"0\" + n : n.toString();\n };\n return (d + \".\" + pad(h) + \":\" + pad(m) + \":\" + pad(s)).padStart(12);\n};\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar timsort$1 = {};\n(function(exports) {\n (function(global2, factory) {\n {\n factory(exports);\n }\n })(commonjsGlobal, function(exports2) {\n exports2.__esModule = true;\n exports2.sort = sort;\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n var DEFAULT_MIN_MERGE = 32;\n var DEFAULT_MIN_GALLOPING = 7;\n var DEFAULT_TMP_STORAGE_LENGTH = 256;\n var POWERS_OF_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9];\n function log10(x) {\n if (x < 1e5) {\n if (x < 100) {\n return x < 10 ? 0 : 1;\n }\n if (x < 1e4) {\n return x < 1e3 ? 2 : 3;\n }\n return 4;\n }\n if (x < 1e7) {\n return x < 1e6 ? 5 : 6;\n }\n if (x < 1e9) {\n return x < 1e8 ? 7 : 8;\n }\n return 9;\n }\n function alphabeticalCompare(a, b) {\n if (a === b) {\n return 0;\n }\n if (~~a === a && ~~b === b) {\n if (a === 0 || b === 0) {\n return a < b ? -1 : 1;\n }\n if (a < 0 || b < 0) {\n if (b >= 0) {\n return -1;\n }\n if (a >= 0) {\n return 1;\n }\n a = -a;\n b = -b;\n }\n var al = log10(a);\n var bl = log10(b);\n var t = 0;\n if (al < bl) {\n a *= POWERS_OF_TEN[bl - al - 1];\n b /= 10;\n t = -1;\n } else if (al > bl) {\n b *= POWERS_OF_TEN[al - bl - 1];\n a /= 10;\n t = 1;\n }\n if (a === b) {\n return t;\n }\n return a < b ? -1 : 1;\n }\n var aStr = String(a);\n var bStr = String(b);\n if (aStr === bStr) {\n return 0;\n }\n return aStr < bStr ? -1 : 1;\n }\n function minRunLength(n) {\n var r = 0;\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n return n + r;\n }\n function makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n if (runHi === hi) {\n return 1;\n }\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n return runHi - lo;\n }\n function reverseRun(array, lo, hi) {\n hi--;\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n }\n function binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n while (left < right) {\n var mid = left + right >>> 1;\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n var n = start - left;\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n case 2:\n array[left + 2] = array[left + 1];\n case 1:\n array[left + 1] = array[left];\n break;\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n }\n array[left] = pivot;\n }\n }\n function gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n return offset;\n }\n function gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n return offset;\n }\n var TimSort = function() {\n function TimSort2(array, compare) {\n _classCallCheck(this, TimSort2);\n this.array = null;\n this.compare = null;\n this.minGallop = DEFAULT_MIN_GALLOPING;\n this.length = 0;\n this.tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n this.stackLength = 0;\n this.runStart = null;\n this.runLength = null;\n this.stackSize = 0;\n this.array = array;\n this.compare = compare;\n this.length = array.length;\n if (this.length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n this.tmpStorageLength = this.length >>> 1;\n }\n this.tmp = new Array(this.tmpStorageLength);\n this.stackLength = this.length < 120 ? 5 : this.length < 1542 ? 10 : this.length < 119151 ? 19 : 40;\n this.runStart = new Array(this.stackLength);\n this.runLength = new Array(this.stackLength);\n }\n TimSort2.prototype.pushRun = function pushRun(runStart, runLength) {\n this.runStart[this.stackSize] = runStart;\n this.runLength[this.stackSize] = runLength;\n this.stackSize += 1;\n };\n TimSort2.prototype.mergeRuns = function mergeRuns() {\n while (this.stackSize > 1) {\n var n = this.stackSize - 2;\n if (n >= 1 && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1] || n >= 2 && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]) {\n if (this.runLength[n - 1] < this.runLength[n + 1]) {\n n--;\n }\n } else if (this.runLength[n] > this.runLength[n + 1]) {\n break;\n }\n this.mergeAt(n);\n }\n };\n TimSort2.prototype.forceMergeRuns = function forceMergeRuns() {\n while (this.stackSize > 1) {\n var n = this.stackSize - 2;\n if (n > 0 && this.runLength[n - 1] < this.runLength[n + 1]) {\n n--;\n }\n this.mergeAt(n);\n }\n };\n TimSort2.prototype.mergeAt = function mergeAt(i) {\n var compare = this.compare;\n var array = this.array;\n var start1 = this.runStart[i];\n var length1 = this.runLength[i];\n var start2 = this.runStart[i + 1];\n var length2 = this.runLength[i + 1];\n this.runLength[i] = length1 + length2;\n if (i === this.stackSize - 3) {\n this.runStart[i + 1] = this.runStart[i + 2];\n this.runLength[i + 1] = this.runLength[i + 2];\n }\n this.stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n if (length1 === 0) {\n return;\n }\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n if (length2 === 0) {\n return;\n }\n if (length1 <= length2) {\n this.mergeLow(start1, length1, start2, length2);\n } else {\n this.mergeHigh(start1, length1, start2, length2);\n }\n };\n TimSort2.prototype.mergeLow = function mergeLow(start1, length1, start2, length2) {\n var compare = this.compare;\n var array = this.array;\n var tmp = this.tmp;\n var i = 0;\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n return;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n return;\n }\n var minGallop = this.minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n exit = true;\n break;\n }\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n array[dest++] = tmp[cursor1++];\n if (--length1 === 1) {\n exit = true;\n break;\n }\n minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (minGallop < 0) {\n minGallop = 0;\n }\n minGallop += 2;\n }\n this.minGallop = minGallop;\n if (minGallop < 1) {\n this.minGallop = 1;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(\"mergeLow preconditions were not respected\");\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n };\n TimSort2.prototype.mergeHigh = function mergeHigh(start1, length1, start2, length2) {\n var compare = this.compare;\n var array = this.array;\n var tmp = this.tmp;\n var i = 0;\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n return;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n return;\n }\n var minGallop = this.minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n array[dest--] = tmp[cursor2--];\n if (--length2 === 1) {\n exit = true;\n break;\n }\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n exit = true;\n break;\n }\n minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (minGallop < 0) {\n minGallop = 0;\n }\n minGallop += 2;\n }\n this.minGallop = minGallop;\n if (minGallop < 1) {\n this.minGallop = 1;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(\"mergeHigh preconditions were not respected\");\n } else {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n };\n return TimSort2;\n }();\n function sort(array, compare, lo, hi) {\n if (!Array.isArray(array)) {\n throw new TypeError(\"Can only sort arrays\");\n }\n if (!compare) {\n compare = alphabeticalCompare;\n } else if (typeof compare !== \"function\") {\n hi = lo;\n lo = compare;\n compare = alphabeticalCompare;\n }\n if (!lo) {\n lo = 0;\n }\n if (!hi) {\n hi = array.length;\n }\n var remaining = hi - lo;\n if (remaining < 2) {\n return;\n }\n var runLength = 0;\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n if (runLength < minRun) {\n var force = remaining;\n if (force > minRun) {\n force = minRun;\n }\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n ts.forceMergeRuns();\n }\n });\n})(timsort$1);\nvar timsort = timsort$1;\nfunction lessThanZeroError(p) {\n return 'Expect percentile to be >= 0 but given \"' + p + '\" and its type is \"' + typeof p + '\".';\n}\nfunction greaterThanHundredError(p) {\n return 'Expect percentile to be <= 100 but given \"' + p + '\" and its type is \"' + typeof p + '\".';\n}\nfunction nanError(p) {\n return 'Expect percentile to be a number but given \"' + p + '\" and its type is \"' + typeof p + '\".';\n}\nfunction validateInput(ps) {\n return ps.reduce(function(errors, p) {\n if (isNaN(Number(p))) {\n errors.push(nanError(p));\n } else if (p < 0) {\n errors.push(lessThanZeroError(p));\n } else if (p > 100) {\n errors.push(greaterThanHundredError(p));\n }\n return errors;\n }, []);\n}\nfunction getPsValue(p, list) {\n if (p === 0)\n return list[0];\n var kIndex = Math.ceil(list.length * (p / 100)) - 1;\n return list[kIndex];\n}\nfunction percentile(pOrPs, list, fn) {\n var ps = Array.isArray(pOrPs) ? pOrPs : [pOrPs];\n var validationErrors = validateInput(ps);\n if (validationErrors.length) {\n throw new Error(validationErrors.join(\" \"));\n }\n list = list.slice().sort(function(a, b) {\n if (fn) {\n a = fn(a);\n b = fn(b);\n }\n a = Number.isNaN(a) ? Number.NEGATIVE_INFINITY : a;\n b = Number.isNaN(b) ? Number.NEGATIVE_INFINITY : b;\n if (a > b)\n return 1;\n if (a < b)\n return -1;\n return 0;\n });\n if (ps.length === 1) {\n return getPsValue(ps[0], list);\n }\n return ps.map(function(p) {\n return getPsValue(p, list);\n });\n}\nvar lib = percentile;\nconst percentile$1 = /* @__PURE__ */ getDefaultExportFromCjs(lib);\nclass InstrumentGaugeOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"interval\");\n __publicField(this, \"sampleSize\");\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n }\n}\nclass InstrumentGaugeTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n __publicField(this, \"Inc\");\n __publicField(this, \"Dec\");\n }\n}\nclass InstrumentGauge extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n /**\n * If the gauge is being monitored as part of a time series, get the most recent recorded value (max value) from within the time interval\n * otherwise, just return the current instant value.\n */\n __privateAdd(this, _GetVal5);\n __privateAdd(this, _SetVal5);\n __privateAdd(this, _GetMin);\n __privateAdd(this, _GetMax);\n __privateAdd(this, _GetAverage);\n __privateAdd(this, _GetAndResetMaxVal);\n __privateAdd(this, _NumberCompare);\n __privateAdd(this, _GetPercentileData);\n __privateAdd(this, _val2, 0);\n __privateAdd(this, _maxval, null);\n __privateAdd(this, _lastObservedValue, 0);\n __privateAdd(this, _timeSeriesList, []);\n __privateAdd(this, _maxSampleSize, 0);\n __privateAdd(this, _timerInterval2, 0);\n __privateAdd(this, _observer, null);\n //@@ extras\n __privateAdd(this, _min, null);\n __privateAdd(this, _max, 0);\n __privateAdd(this, _observations, 0);\n __privateAdd(this, _total, 0);\n __privateAdd(this, _copy5, false);\n __publicField(this, \"percentile\");\n __publicField(this, \"min\");\n __publicField(this, \"max\");\n __publicField(this, \"avg\");\n __publicField(this, \"val\", 0);\n if (!options.label) {\n this.label = \"InstrumentGauge\";\n } else {\n this.label = options.label;\n }\n if (typeof options.interval === \"undefined\") {\n __privateSet(this, _timerInterval2, 0);\n } else {\n __privateSet(this, _timerInterval2, options.interval);\n }\n if (typeof options.sampleSize === \"undefined\") {\n __privateSet(this, _maxSampleSize, 600);\n } else {\n __privateSet(this, _maxSampleSize, options.sampleSize);\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy5, false);\n } else {\n __privateSet(this, _copy5, true);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_GAUGE\n });\n if (__privateGet(this, _copy5)) {\n this.DefineCopyProperties([\n \"val\",\n \"min\",\n \"max\",\n \"avg\",\n \"percentile\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal5, GetVal_fn5).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal5, SetVal_fn5).call(this, value);\n }\n });\n if (__privateGet(this, _timerInterval2) > 0) {\n Object.defineProperty(this, \"percentile\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetPercentileData, GetPercentileData_fn).call(this)\n });\n this._StartTimer();\n }\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n if (result.percentile) {\n this.percentile = result.percentile;\n }\n if (result.min) {\n this.min = result.min;\n }\n if (result.max) {\n this.max = result.max;\n }\n if (result.avg) {\n this.avg = result.avg;\n }\n }\n }\n WithInitVal(initVal) {\n this.val = initVal;\n return this;\n }\n WithMin() {\n Object.defineProperty(this, \"min\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetMin, GetMin_fn).call(this)\n });\n return this;\n }\n WithMax() {\n Object.defineProperty(this, \"max\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetMax, GetMax_fn).call(this)\n });\n return this;\n }\n WithAverage() {\n Object.defineProperty(this, \"avg\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetAverage, GetAverage_fn).call(this)\n });\n return this;\n }\n _StartTimer() {\n if (__privateGet(this, _timerInterval2) > 0) {\n __privateSet(this, _timeSeriesList, []);\n __privateSet(this, _observer, setInterval(() => {\n if (__privateGet(this, _timeSeriesList).length > __privateGet(this, _maxSampleSize)) {\n __privateGet(this, _timeSeriesList).shift();\n }\n const maxval = __privateMethod(this, _GetAndResetMaxVal, GetAndResetMaxVal_fn).call(this);\n __privateGet(this, _timeSeriesList).push(maxval);\n }, __privateGet(this, _timerInterval2)));\n if (isNode) {\n __privateGet(this, _observer).unref();\n }\n } else {\n throw new Error(`Unable to StartTimer for this instrument. The interval is set to <= 0.`);\n }\n }\n StopTimer() {\n if (__privateGet(this, _observer)) {\n clearTimeout(__privateGet(this, _observer));\n __privateSet(this, _observer, null);\n __privateSet(this, _timeSeriesList, []);\n }\n }\n Reset() {\n this.StopTimer();\n __privateSet(this, _maxval, 0);\n __privateSet(this, _lastObservedValue, 0);\n __privateSet(this, _val2, 0);\n __privateSet(this, _min, null);\n __privateSet(this, _max, 0);\n __privateSet(this, _observations, 0);\n __privateSet(this, _total, 0);\n if (__privateGet(this, _timerInterval2) > 0) {\n this._StartTimer();\n }\n }\n Inc(incVal = 1) {\n __privateMethod(this, _SetVal5, SetVal_fn5).call(this, __privateGet(this, _val2) + incVal);\n }\n Dec(decVal = 1) {\n __privateMethod(this, _SetVal5, SetVal_fn5).call(this, __privateGet(this, _val2) - decVal);\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.Inc) {\n this.Inc(telemetry.Inc);\n }\n if (telemetry.Dec) {\n this.Dec(telemetry.Dec);\n }\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n }\n}\n_val2 = new WeakMap();\n_maxval = new WeakMap();\n_lastObservedValue = new WeakMap();\n_timeSeriesList = new WeakMap();\n_maxSampleSize = new WeakMap();\n_timerInterval2 = new WeakMap();\n_observer = new WeakMap();\n_min = new WeakMap();\n_max = new WeakMap();\n_observations = new WeakMap();\n_total = new WeakMap();\n_copy5 = new WeakMap();\n_GetVal5 = new WeakSet();\nGetVal_fn5 = function() {\n if (__privateGet(this, _timerInterval2) > 0 && __privateGet(this, _observer) !== null) {\n if (__privateGet(this, _maxval) === null) {\n return this.GetNumber(__privateGet(this, _lastObservedValue));\n } else {\n return this.GetNumber(__privateGet(this, _maxval));\n }\n }\n return this.GetNumber(__privateGet(this, _val2));\n};\n_SetVal5 = new WeakSet();\nSetVal_fn5 = function(updatedValue) {\n __privateSet(this, _val2, updatedValue);\n __privateWrapper(this, _observations)._++;\n __privateSet(this, _total, __privateGet(this, _total) + updatedValue);\n if (__privateGet(this, _val2) > __privateGet(this, _max)) {\n __privateSet(this, _max, __privateGet(this, _val2));\n }\n if (__privateGet(this, _min) !== null) {\n if (__privateGet(this, _val2) < __privateGet(this, _min)) {\n __privateSet(this, _min, __privateGet(this, _val2));\n }\n } else {\n __privateSet(this, _min, __privateGet(this, _val2));\n }\n if (__privateGet(this, _timerInterval2) > 0) {\n __privateSet(this, _lastObservedValue, updatedValue);\n if (__privateGet(this, _maxval) === null) {\n __privateSet(this, _maxval, __privateGet(this, _val2));\n } else if (__privateGet(this, _val2) > __privateGet(this, _maxval)) {\n __privateSet(this, _maxval, __privateGet(this, _val2));\n }\n }\n};\n_GetMin = new WeakSet();\nGetMin_fn = function() {\n if (__privateGet(this, _min) !== null) {\n return __privateGet(this, _min);\n }\n return 0;\n};\n_GetMax = new WeakSet();\nGetMax_fn = function() {\n return __privateGet(this, _max);\n};\n_GetAverage = new WeakSet();\nGetAverage_fn = function() {\n if (__privateGet(this, _observations) > 0) {\n return __privateGet(this, _total) / __privateGet(this, _observations);\n }\n return 0;\n};\n_GetAndResetMaxVal = new WeakSet();\nGetAndResetMaxVal_fn = function() {\n if (__privateGet(this, _maxval) === null) {\n return __privateGet(this, _lastObservedValue);\n }\n const retVal = __privateGet(this, _maxval);\n __privateSet(this, _maxval, null);\n return retVal;\n};\n_NumberCompare = new WeakSet();\nNumberCompare_fn = function(a, b) {\n return a - b;\n};\n_GetPercentileData = new WeakSet();\nGetPercentileData_fn = function() {\n const sortedList = __privateGet(this, _timeSeriesList).slice(0);\n timsort.sort(sortedList, __privateMethod(this, _NumberCompare, NumberCompare_fn));\n return percentile$1([50, 80, 90, 95, 99, 99.95], sortedList);\n};\nclass InstrumentObjectOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n }\n}\nclass InstrumentObjectTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n }\n}\nclass InstrumentObject extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _GetVal6);\n __privateAdd(this, _SetVal6);\n __privateAdd(this, _val3, {});\n __privateAdd(this, _copy6, false);\n __publicField(this, \"val\");\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentObject\";\n } else {\n this.label = options.label;\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy6, false);\n } else {\n __privateSet(this, _copy6, true);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_OBJECT\n });\n if (__privateGet(this, _copy6)) {\n this.DefineCopyProperties([\n \"val\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal6, GetVal_fn6).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal6, SetVal_fn6).call(this, value);\n }\n });\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n } else {\n this.val = {};\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n }\n }\n WithInitVal(initVal) {\n this.val = initVal;\n return this;\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n }\n}\n_val3 = new WeakMap();\n_copy6 = new WeakMap();\n_GetVal6 = new WeakSet();\nGetVal_fn6 = function() {\n return __privateGet(this, _val3);\n};\n_SetVal6 = new WeakSet();\nSetVal_fn6 = function(updatedValue) {\n __privateSet(this, _val3, updatedValue);\n};\nfunction CreateInstrument(sourceInstrument) {\n switch (sourceInstrument[GaugeTypes.GAUGE_TYPE]) {\n case GaugeTypes.INSTRUMENT_GAUGE:\n return new InstrumentGauge({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_VELOCITY:\n return new InstrumentVelocity({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_HISTOGRAM:\n return new InstrumentHistogram({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_LOG:\n return new InstrumentLog({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_TIMER:\n return new InstrumentTimerGauge({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_OBJECT:\n return new InstrumentObject({ fromJSON: sourceInstrument });\n }\n throw new Error(`Cannot create instrument from type: [${sourceInstrument[GaugeTypes.GAUGE_TYPE]}]`);\n}\nfunction GetInstrumentName(gauge) {\n switch (gauge) {\n case Gauge.ACTIVE_REQUEST_GAUGE:\n return \"Active Requests\";\n case Gauge.AUTHENTICATION_COUNT_GAUGE:\n return \"Authentication Count\";\n case Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE:\n return \"Authentication Error Count\";\n case Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE:\n return \"Authentication Retry Count\";\n case Gauge.CONNECTION_POOL_IDLE_GAUGE:\n return \"Connection Pool Idle\";\n case Gauge.CONNECTION_POOL_TOTAL_GAUGE:\n return \"Connection Pool Total\";\n case Gauge.CONNECTION_POOL_WAITING_GAUGE:\n return \"Connection Pool Waiting\";\n case Gauge.CPU_LOAD_GAUGE:\n return \"CPU Load\";\n case Gauge.CPU_SYSTEM_LOAD_GAUGE:\n return \"CPU SYstem Load\";\n case Gauge.DURATION_GAUGE:\n return \"Duration\";\n case Gauge.DURATION_HISTOGRAM_GAUGE:\n return \"Diration Histogram\";\n case Gauge.ERROR_COUNT_GAUGE:\n return \"Errors\";\n case Gauge.LATENCY_GAUGE:\n return \"Latency\";\n case Gauge.LATENCY_HISTOGRAM_GAUGE:\n return \"Latency Histogram\";\n case Gauge.LOGGER:\n return \"Logger\";\n case Gauge.LOGGER_COPY:\n return \"_Logger\";\n case Gauge.NETWORK_RX_GAUGE:\n return \"Network Receive\";\n case Gauge.NETWORK_TX_GAUGE:\n return \"Network Transmit\";\n case Gauge.REQUEST_COUNT_GAUGE:\n return \"Requests\";\n case Gauge.RETRY_COUNT_GAUGE:\n return \"Retries\";\n case Gauge.TIMER_GAUGE:\n return \"Timer\";\n case Gauge.VELOCITY_GAUGE:\n return \"Velocity\";\n case Gauge.CONNECTION_COUNT_GAUGE:\n return \"TCP Connection\";\n case Gauge.OBJECT_GAUGE:\n return \"Object\";\n case Gauge.CORE_COUNT_GAUGE:\n return \"Core Count\";\n default:\n return \"Unknown\";\n }\n}\nfunction StopInstruments(instruments) {\n if (instruments) {\n if (Array.isArray(instruments)) {\n instruments.forEach((instrument) => {\n if (instrument.StopTimer) {\n instrument.StopTimer();\n }\n });\n } else {\n for (const [, value] of Object.entries(instruments)) {\n if (value.StopTimer) {\n value.StopTimer();\n }\n }\n }\n }\n}\nvar TransportType = /* @__PURE__ */ ((TransportType2) => {\n TransportType2[TransportType2[\"none\"] = 0] = \"none\";\n TransportType2[TransportType2[\"IPC\"] = 1] = \"IPC\";\n TransportType2[TransportType2[\"websocket\"] = 2] = \"websocket\";\n TransportType2[TransportType2[\"RESTAPI\"] = 4] = \"RESTAPI\";\n TransportType2[TransportType2[\"redis\"] = 8] = \"redis\";\n TransportType2[TransportType2[\"kafka\"] = 16] = \"kafka\";\n TransportType2[TransportType2[\"influxdb\"] = 32] = \"influxdb\";\n TransportType2[TransportType2[\"prometheus\"] = 64] = \"prometheus\";\n TransportType2[TransportType2[\"gRPC\"] = 128] = \"gRPC\";\n TransportType2[TransportType2[\"unixsocket\"] = 256] = \"unixsocket\";\n TransportType2[TransportType2[\"socketio\"] = 512] = \"socketio\";\n TransportType2[TransportType2[\"otelcollector\"] = 1024] = \"otelcollector\";\n TransportType2[TransportType2[\"messageport\"] = 2048] = \"messageport\";\n TransportType2[TransportType2[\"jsonrpc\"] = 4096] = \"jsonrpc\";\n TransportType2[TransportType2[\"postgresql\"] = 8192] = \"postgresql\";\n TransportType2[TransportType2[\"grafanaloki\"] = 16384] = \"grafanaloki\";\n TransportType2[TransportType2[\"logstash\"] = 32768] = \"logstash\";\n TransportType2[TransportType2[\"fluentbit\"] = 65536] = \"fluentbit\";\n TransportType2[TransportType2[\"fluentd\"] = 131072] = \"fluentd\";\n TransportType2[TransportType2[\"inmemory\"] = 262144] = \"inmemory\";\n return TransportType2;\n})(TransportType || {});\nfunction GetTransportMode(transport) {\n let trans = 0;\n try {\n transport.split(\"|\").forEach((item) => {\n switch (item) {\n case \"IPC\":\n trans |= 1;\n break;\n case \"websocket\":\n trans |= 2;\n break;\n case \"RESTAPI\":\n trans |= 4;\n break;\n case \"redis\":\n trans |= 8;\n break;\n case \"kafka\":\n trans |= 16;\n break;\n case \"influxdb\":\n trans |= 32;\n break;\n case \"prometheus\":\n trans |= 64;\n break;\n case \"gRPC\":\n trans |= 128;\n break;\n case \"unixsocket\":\n trans |= 256;\n break;\n case \"socketio\":\n trans |= 512;\n break;\n case \"otelcollector\":\n trans |= 1024;\n break;\n case \"messageport\":\n trans |= 2048;\n break;\n case \"jsonrpc\":\n trans |= 4096;\n break;\n case \"postgresql\":\n trans |= 8192;\n break;\n case \"grafanaloki\":\n trans |= 16384;\n break;\n case \"logstash\":\n trans |= 32768;\n break;\n case \"fluentbit\":\n trans |= 65536;\n break;\n case \"fluentd\":\n trans |= 131072;\n break;\n case \"inmemory\":\n trans |= 262144;\n break;\n }\n });\n } catch (error) {\n throw new Error(`GetTransportMode(): Error: [${error}]`);\n }\n return trans;\n}\nvar InstrumentPayloadType = /* @__PURE__ */ ((InstrumentPayloadType2) => {\n InstrumentPayloadType2[\"agent\"] = \"agent\";\n InstrumentPayloadType2[\"service\"] = \"service\";\n return InstrumentPayloadType2;\n})(InstrumentPayloadType || {});\nvar RequestLoggerMiddlewareEventName = /* @__PURE__ */ ((RequestLoggerMiddlewareEventName2) => {\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_AR_DEC\"] = \"UpdateInstrument_AR_DEC\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_AR_INC\"] = \"UpdateInstrument_AR_INC\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_RC_INC\"] = \"UpdateInstrument_RC_INC\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_V_INC\"] = \"UpdateInstrument_V_INC\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_DH_VAL\"] = \"UpdateInstrument_DH_VAL\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_D_VAL\"] = \"UpdateInstrument_D_VAL\";\n return RequestLoggerMiddlewareEventName2;\n})(RequestLoggerMiddlewareEventName || {});\nclass RequestLoggerMiddleware extends STSOptionsBase {\n constructor(options) {\n super(options);\n __privateAdd(this, _tinyEmitter, new TinyEmitter());\n __privateAdd(this, _RequestCompleted, (start) => {\n __privateGet(this, _tinyEmitter).emit(\n \"UpdateInstrument_AR_DEC\"\n /* UpdateInstrument_AR_DEC */\n );\n let timeInMs = 0;\n const end = process.hrtime(start);\n timeInMs = (end[0] * 1e9 + end[1]) / 1e6;\n timeInMs = parseFloat(timeInMs.toFixed(4));\n __privateGet(this, _tinyEmitter).emit(\"UpdateInstrument_DH_VAL\", timeInMs);\n __privateGet(this, _tinyEmitter).emit(\"UpdateInstrument_D_VAL\", timeInMs);\n });\n // https://stackoverflow.com/questions/18031839/how-to-use-process-hrtime-to-get-execution-time-of-async-function/18031945\n /**\n * Use with .bind(class instance).\n * Example;\n * ---\n * `let requestLoggerMiddleware = new RequestLoggerMiddleware();\n * app.use(requestLoggerMiddleware.Middleware.bind(requestLoggerMiddleware));`\n * @param {*} req \n * @param {*} res \n * @param {*} next \n * @returns \n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any \n __publicField(this, \"Middleware\", async (req, res, next) => {\n if (this.options.ignoresocketio && req.originalUrl.includes(\"socket.io\")) {\n return;\n }\n const start = process.hrtime();\n __privateGet(this, _tinyEmitter).emit(\n \"UpdateInstrument_AR_INC\"\n /* UpdateInstrument_AR_INC */\n );\n __privateGet(this, _tinyEmitter).emit(\n \"UpdateInstrument_RC_INC\"\n /* UpdateInstrument_RC_INC */\n );\n __privateGet(this, _tinyEmitter).emit(\n \"UpdateInstrument_V_INC\"\n /* UpdateInstrument_V_INC */\n );\n req.on(\"aborted\", () => {\n });\n req.on(\"close\", () => {\n __privateGet(this, _RequestCompleted).call(this, start);\n });\n req.on(\"end\", () => {\n });\n res.on(\"finish\", () => {\n });\n next();\n });\n }\n get options() {\n return super.options;\n }\n on(eventName, callBackFn) {\n __privateGet(this, _tinyEmitter).on(eventName, callBackFn);\n }\n}\n_tinyEmitter = new WeakMap();\n_RequestCompleted = new WeakMap();\nvar ansiStyles$1 = { exports: {} };\nvar colorName;\nvar hasRequiredColorName;\nfunction requireColorName() {\n if (hasRequiredColorName)\n return colorName;\n hasRequiredColorName = 1;\n colorName = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n };\n return colorName;\n}\nvar conversions;\nvar hasRequiredConversions;\nfunction requireConversions() {\n if (hasRequiredConversions)\n return conversions;\n hasRequiredConversions = 1;\n const cssKeywords = requireColorName();\n const reverseKeywords = {};\n for (const key of Object.keys(cssKeywords)) {\n reverseKeywords[cssKeywords[key]] = key;\n }\n const convert = {\n rgb: { channels: 3, labels: \"rgb\" },\n hsl: { channels: 3, labels: \"hsl\" },\n hsv: { channels: 3, labels: \"hsv\" },\n hwb: { channels: 3, labels: \"hwb\" },\n cmyk: { channels: 4, labels: \"cmyk\" },\n xyz: { channels: 3, labels: \"xyz\" },\n lab: { channels: 3, labels: \"lab\" },\n lch: { channels: 3, labels: \"lch\" },\n hex: { channels: 1, labels: [\"hex\"] },\n keyword: { channels: 1, labels: [\"keyword\"] },\n ansi16: { channels: 1, labels: [\"ansi16\"] },\n ansi256: { channels: 1, labels: [\"ansi256\"] },\n hcg: { channels: 3, labels: [\"h\", \"c\", \"g\"] },\n apple: { channels: 3, labels: [\"r16\", \"g16\", \"b16\"] },\n gray: { channels: 1, labels: [\"gray\"] }\n };\n conversions = convert;\n for (const model of Object.keys(convert)) {\n if (!(\"channels\" in convert[model])) {\n throw new Error(\"missing channels property: \" + model);\n }\n if (!(\"labels\" in convert[model])) {\n throw new Error(\"missing channel labels property: \" + model);\n }\n if (convert[model].labels.length !== convert[model].channels) {\n throw new Error(\"channel and label counts mismatch: \" + model);\n }\n const { channels, labels } = convert[model];\n delete convert[model].channels;\n delete convert[model].labels;\n Object.defineProperty(convert[model], \"channels\", { value: channels });\n Object.defineProperty(convert[model], \"labels\", { value: labels });\n }\n convert.rgb.hsl = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n let h;\n let s;\n if (max === min) {\n h = 0;\n } else if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h = Math.min(h * 60, 360);\n if (h < 0) {\n h += 360;\n }\n const l = (min + max) / 2;\n if (max === min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n return [h, s * 100, l * 100];\n };\n convert.rgb.hsv = function(rgb) {\n let rdif;\n let gdif;\n let bdif;\n let h;\n let s;\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const v = Math.max(r, g, b);\n const diff = v - Math.min(r, g, b);\n const diffc = function(c) {\n return (v - c) / 6 / diff + 1 / 2;\n };\n if (diff === 0) {\n h = 0;\n s = 0;\n } else {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n if (r === v) {\n h = bdif - gdif;\n } else if (g === v) {\n h = 1 / 3 + rdif - bdif;\n } else if (b === v) {\n h = 2 / 3 + gdif - rdif;\n }\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n return [\n h * 360,\n s * 100,\n v * 100\n ];\n };\n convert.rgb.hwb = function(rgb) {\n const r = rgb[0];\n const g = rgb[1];\n let b = rgb[2];\n const h = convert.rgb.hsl(rgb)[0];\n const w = 1 / 255 * Math.min(r, Math.min(g, b));\n b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n return [h, w * 100, b * 100];\n };\n convert.rgb.cmyk = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const k = Math.min(1 - r, 1 - g, 1 - b);\n const c = (1 - r - k) / (1 - k) || 0;\n const m = (1 - g - k) / (1 - k) || 0;\n const y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n };\n function comparativeDistance(x, y) {\n return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2;\n }\n convert.rgb.keyword = function(rgb) {\n const reversed = reverseKeywords[rgb];\n if (reversed) {\n return reversed;\n }\n let currentClosestDistance = Infinity;\n let currentClosestKeyword;\n for (const keyword of Object.keys(cssKeywords)) {\n const value = cssKeywords[keyword];\n const distance = comparativeDistance(rgb, value);\n if (distance < currentClosestDistance) {\n currentClosestDistance = distance;\n currentClosestKeyword = keyword;\n }\n }\n return currentClosestKeyword;\n };\n convert.keyword.rgb = function(keyword) {\n return cssKeywords[keyword];\n };\n convert.rgb.xyz = function(rgb) {\n let r = rgb[0] / 255;\n let g = rgb[1] / 255;\n let b = rgb[2] / 255;\n r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92;\n g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;\n b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;\n const x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n const y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n const z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x * 100, y * 100, z * 100];\n };\n convert.rgb.lab = function(rgb) {\n const xyz = convert.rgb.xyz(rgb);\n let x = xyz[0];\n let y = xyz[1];\n let z = xyz[2];\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return [l, a, b];\n };\n convert.hsl.rgb = function(hsl) {\n const h = hsl[0] / 360;\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return [val, val, val];\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n } else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return rgb;\n };\n convert.hsl.hsv = function(hsl) {\n const h = hsl[0];\n let s = hsl[1] / 100;\n let l = hsl[2] / 100;\n let smin = s;\n const lmin = Math.max(l, 0.01);\n l *= 2;\n s *= l <= 1 ? l : 2 - l;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n const v = (l + s) / 2;\n const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n return [h, sv * 100, v * 100];\n };\n convert.hsv.rgb = function(hsv) {\n const h = hsv[0] / 60;\n const s = hsv[1] / 100;\n let v = hsv[2] / 100;\n const hi = Math.floor(h) % 6;\n const f = h - Math.floor(h);\n const p = 255 * v * (1 - s);\n const q = 255 * v * (1 - s * f);\n const t = 255 * v * (1 - s * (1 - f));\n v *= 255;\n switch (hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n };\n convert.hsv.hsl = function(hsv) {\n const h = hsv[0];\n const s = hsv[1] / 100;\n const v = hsv[2] / 100;\n const vmin = Math.max(v, 0.01);\n let sl;\n let l;\n l = (2 - s) * v;\n const lmin = (2 - s) * vmin;\n sl = s * vmin;\n sl /= lmin <= 1 ? lmin : 2 - lmin;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n };\n convert.hwb.rgb = function(hwb) {\n const h = hwb[0] / 360;\n let wh = hwb[1] / 100;\n let bl = hwb[2] / 100;\n const ratio = wh + bl;\n let f;\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n const i = Math.floor(6 * h);\n const v = 1 - bl;\n f = 6 * h - i;\n if ((i & 1) !== 0) {\n f = 1 - f;\n }\n const n = wh + f * (v - wh);\n let r;\n let g;\n let b;\n switch (i) {\n default:\n case 6:\n case 0:\n r = v;\n g = n;\n b = wh;\n break;\n case 1:\n r = n;\n g = v;\n b = wh;\n break;\n case 2:\n r = wh;\n g = v;\n b = n;\n break;\n case 3:\n r = wh;\n g = n;\n b = v;\n break;\n case 4:\n r = n;\n g = wh;\n b = v;\n break;\n case 5:\n r = v;\n g = wh;\n b = n;\n break;\n }\n return [r * 255, g * 255, b * 255];\n };\n convert.cmyk.rgb = function(cmyk) {\n const c = cmyk[0] / 100;\n const m = cmyk[1] / 100;\n const y = cmyk[2] / 100;\n const k = cmyk[3] / 100;\n const r = 1 - Math.min(1, c * (1 - k) + k);\n const g = 1 - Math.min(1, m * (1 - k) + k);\n const b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n };\n convert.xyz.rgb = function(xyz) {\n const x = xyz[0] / 100;\n const y = xyz[1] / 100;\n const z = xyz[2] / 100;\n let r;\n let g;\n let b;\n r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n b = x * 0.0557 + y * -0.204 + z * 1.057;\n r = r > 31308e-7 ? 1.055 * r ** (1 / 2.4) - 0.055 : r * 12.92;\n g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92;\n b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92;\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n return [r * 255, g * 255, b * 255];\n };\n convert.xyz.lab = function(xyz) {\n let x = xyz[0];\n let y = xyz[1];\n let z = xyz[2];\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return [l, a, b];\n };\n convert.lab.xyz = function(lab) {\n const l = lab[0];\n const a = lab[1];\n const b = lab[2];\n let x;\n let y;\n let z;\n y = (l + 16) / 116;\n x = a / 500 + y;\n z = y - b / 200;\n const y2 = y ** 3;\n const x2 = x ** 3;\n const z2 = z ** 3;\n y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787;\n x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787;\n z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787;\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return [x, y, z];\n };\n convert.lab.lch = function(lab) {\n const l = lab[0];\n const a = lab[1];\n const b = lab[2];\n let h;\n const hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n const c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n };\n convert.lch.lab = function(lch) {\n const l = lch[0];\n const c = lch[1];\n const h = lch[2];\n const hr = h / 360 * 2 * Math.PI;\n const a = c * Math.cos(hr);\n const b = c * Math.sin(hr);\n return [l, a, b];\n };\n convert.rgb.ansi16 = function(args, saturation = null) {\n const [r, g, b] = args;\n let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation;\n value = Math.round(value / 50);\n if (value === 0) {\n return 30;\n }\n let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n if (value === 2) {\n ansi += 60;\n }\n return ansi;\n };\n convert.hsv.ansi16 = function(args) {\n return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n };\n convert.rgb.ansi256 = function(args) {\n const r = args[0];\n const g = args[1];\n const b = args[2];\n if (r === g && g === b) {\n if (r < 8) {\n return 16;\n }\n if (r > 248) {\n return 231;\n }\n return Math.round((r - 8) / 247 * 24) + 232;\n }\n const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n return ansi;\n };\n convert.ansi16.rgb = function(args) {\n let color = args % 10;\n if (color === 0 || color === 7) {\n if (args > 50) {\n color += 3.5;\n }\n color = color / 10.5 * 255;\n return [color, color, color];\n }\n const mult = (~~(args > 50) + 1) * 0.5;\n const r = (color & 1) * mult * 255;\n const g = (color >> 1 & 1) * mult * 255;\n const b = (color >> 2 & 1) * mult * 255;\n return [r, g, b];\n };\n convert.ansi256.rgb = function(args) {\n if (args >= 232) {\n const c = (args - 232) * 10 + 8;\n return [c, c, c];\n }\n args -= 16;\n let rem;\n const r = Math.floor(args / 36) / 5 * 255;\n const g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n const b = rem % 6 / 5 * 255;\n return [r, g, b];\n };\n convert.rgb.hex = function(args) {\n const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);\n const string = integer.toString(16).toUpperCase();\n return \"000000\".substring(string.length) + string;\n };\n convert.hex.rgb = function(args) {\n const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n if (!match) {\n return [0, 0, 0];\n }\n let colorString = match[0];\n if (match[0].length === 3) {\n colorString = colorString.split(\"\").map((char) => {\n return char + char;\n }).join(\"\");\n }\n const integer = parseInt(colorString, 16);\n const r = integer >> 16 & 255;\n const g = integer >> 8 & 255;\n const b = integer & 255;\n return [r, g, b];\n };\n convert.rgb.hcg = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(Math.max(r, g), b);\n const min = Math.min(Math.min(r, g), b);\n const chroma = max - min;\n let grayscale;\n let hue;\n if (chroma < 1) {\n grayscale = min / (1 - chroma);\n } else {\n grayscale = 0;\n }\n if (chroma <= 0) {\n hue = 0;\n } else if (max === r) {\n hue = (g - b) / chroma % 6;\n } else if (max === g) {\n hue = 2 + (b - r) / chroma;\n } else {\n hue = 4 + (r - g) / chroma;\n }\n hue /= 6;\n hue %= 1;\n return [hue * 360, chroma * 100, grayscale * 100];\n };\n convert.hsl.hcg = function(hsl) {\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l);\n let f = 0;\n if (c < 1) {\n f = (l - 0.5 * c) / (1 - c);\n }\n return [hsl[0], c * 100, f * 100];\n };\n convert.hsv.hcg = function(hsv) {\n const s = hsv[1] / 100;\n const v = hsv[2] / 100;\n const c = s * v;\n let f = 0;\n if (c < 1) {\n f = (v - c) / (1 - c);\n }\n return [hsv[0], c * 100, f * 100];\n };\n convert.hcg.rgb = function(hcg) {\n const h = hcg[0] / 360;\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n if (c === 0) {\n return [g * 255, g * 255, g * 255];\n }\n const pure = [0, 0, 0];\n const hi = h % 1 * 6;\n const v = hi % 1;\n const w = 1 - v;\n let mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure[0] = 1;\n pure[1] = v;\n pure[2] = 0;\n break;\n case 1:\n pure[0] = w;\n pure[1] = 1;\n pure[2] = 0;\n break;\n case 2:\n pure[0] = 0;\n pure[1] = 1;\n pure[2] = v;\n break;\n case 3:\n pure[0] = 0;\n pure[1] = w;\n pure[2] = 1;\n break;\n case 4:\n pure[0] = v;\n pure[1] = 0;\n pure[2] = 1;\n break;\n default:\n pure[0] = 1;\n pure[1] = 0;\n pure[2] = w;\n }\n mg = (1 - c) * g;\n return [\n (c * pure[0] + mg) * 255,\n (c * pure[1] + mg) * 255,\n (c * pure[2] + mg) * 255\n ];\n };\n convert.hcg.hsv = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const v = c + g * (1 - c);\n let f = 0;\n if (v > 0) {\n f = c / v;\n }\n return [hcg[0], f * 100, v * 100];\n };\n convert.hcg.hsl = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const l = g * (1 - c) + 0.5 * c;\n let s = 0;\n if (l > 0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1) {\n s = c / (2 * (1 - l));\n }\n return [hcg[0], s * 100, l * 100];\n };\n convert.hcg.hwb = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const v = c + g * (1 - c);\n return [hcg[0], (v - c) * 100, (1 - v) * 100];\n };\n convert.hwb.hcg = function(hwb) {\n const w = hwb[1] / 100;\n const b = hwb[2] / 100;\n const v = 1 - b;\n const c = v - w;\n let g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return [hwb[0], c * 100, g * 100];\n };\n convert.apple.rgb = function(apple) {\n return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n };\n convert.rgb.apple = function(rgb) {\n return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n };\n convert.gray.rgb = function(args) {\n return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n };\n convert.gray.hsl = function(args) {\n return [0, 0, args[0]];\n };\n convert.gray.hsv = convert.gray.hsl;\n convert.gray.hwb = function(gray) {\n return [0, 100, gray[0]];\n };\n convert.gray.cmyk = function(gray) {\n return [0, 0, 0, gray[0]];\n };\n convert.gray.lab = function(gray) {\n return [gray[0], 0, 0];\n };\n convert.gray.hex = function(gray) {\n const val = Math.round(gray[0] / 100 * 255) & 255;\n const integer = (val << 16) + (val << 8) + val;\n const string = integer.toString(16).toUpperCase();\n return \"000000\".substring(string.length) + string;\n };\n convert.rgb.gray = function(rgb) {\n const val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n return [val / 255 * 100];\n };\n return conversions;\n}\nvar route;\nvar hasRequiredRoute;\nfunction requireRoute() {\n if (hasRequiredRoute)\n return route;\n hasRequiredRoute = 1;\n const conversions2 = requireConversions();\n function buildGraph() {\n const graph = {};\n const models = Object.keys(conversions2);\n for (let len = models.length, i = 0; i < len; i++) {\n graph[models[i]] = {\n // http://jsperf.com/1-vs-infinity\n // micro-opt, but this is simple.\n distance: -1,\n parent: null\n };\n }\n return graph;\n }\n function deriveBFS(fromModel) {\n const graph = buildGraph();\n const queue = [fromModel];\n graph[fromModel].distance = 0;\n while (queue.length) {\n const current = queue.pop();\n const adjacents = Object.keys(conversions2[current]);\n for (let len = adjacents.length, i = 0; i < len; i++) {\n const adjacent = adjacents[i];\n const node = graph[adjacent];\n if (node.distance === -1) {\n node.distance = graph[current].distance + 1;\n node.parent = current;\n queue.unshift(adjacent);\n }\n }\n }\n return graph;\n }\n function link(from, to) {\n return function(args) {\n return to(from(args));\n };\n }\n function wrapConversion(toModel, graph) {\n const path = [graph[toModel].parent, toModel];\n let fn = conversions2[graph[toModel].parent][toModel];\n let cur = graph[toModel].parent;\n while (graph[cur].parent) {\n path.unshift(graph[cur].parent);\n fn = link(conversions2[graph[cur].parent][cur], fn);\n cur = graph[cur].parent;\n }\n fn.conversion = path;\n return fn;\n }\n route = function(fromModel) {\n const graph = deriveBFS(fromModel);\n const conversion = {};\n const models = Object.keys(graph);\n for (let len = models.length, i = 0; i < len; i++) {\n const toModel = models[i];\n const node = graph[toModel];\n if (node.parent === null) {\n continue;\n }\n conversion[toModel] = wrapConversion(toModel, graph);\n }\n return conversion;\n };\n return route;\n}\nvar colorConvert;\nvar hasRequiredColorConvert;\nfunction requireColorConvert() {\n if (hasRequiredColorConvert)\n return colorConvert;\n hasRequiredColorConvert = 1;\n const conversions2 = requireConversions();\n const route2 = requireRoute();\n const convert = {};\n const models = Object.keys(conversions2);\n function wrapRaw(fn) {\n const wrappedFn = function(...args) {\n const arg0 = args[0];\n if (arg0 === void 0 || arg0 === null) {\n return arg0;\n }\n if (arg0.length > 1) {\n args = arg0;\n }\n return fn(args);\n };\n if (\"conversion\" in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n }\n function wrapRounded(fn) {\n const wrappedFn = function(...args) {\n const arg0 = args[0];\n if (arg0 === void 0 || arg0 === null) {\n return arg0;\n }\n if (arg0.length > 1) {\n args = arg0;\n }\n const result = fn(args);\n if (typeof result === \"object\") {\n for (let len = result.length, i = 0; i < len; i++) {\n result[i] = Math.round(result[i]);\n }\n }\n return result;\n };\n if (\"conversion\" in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n }\n models.forEach((fromModel) => {\n convert[fromModel] = {};\n Object.defineProperty(convert[fromModel], \"channels\", { value: conversions2[fromModel].channels });\n Object.defineProperty(convert[fromModel], \"labels\", { value: conversions2[fromModel].labels });\n const routes = route2(fromModel);\n const routeModels = Object.keys(routes);\n routeModels.forEach((toModel) => {\n const fn = routes[toModel];\n convert[fromModel][toModel] = wrapRounded(fn);\n convert[fromModel][toModel].raw = wrapRaw(fn);\n });\n });\n colorConvert = convert;\n return colorConvert;\n}\nansiStyles$1.exports;\n(function(module) {\n const wrapAnsi16 = (fn, offset) => (...args) => {\n const code = fn(...args);\n return `\\x1B[${code + offset}m`;\n };\n const wrapAnsi256 = (fn, offset) => (...args) => {\n const code = fn(...args);\n return `\\x1B[${38 + offset};5;${code}m`;\n };\n const wrapAnsi16m = (fn, offset) => (...args) => {\n const rgb = fn(...args);\n return `\\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n };\n const ansi2ansi = (n) => n;\n const rgb2rgb = (r, g, b) => [r, g, b];\n const setLazyProperty = (object, property, get) => {\n Object.defineProperty(object, property, {\n get: () => {\n const value = get();\n Object.defineProperty(object, property, {\n value,\n enumerable: true,\n configurable: true\n });\n return value;\n },\n enumerable: true,\n configurable: true\n });\n };\n let colorConvert2;\n const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n if (colorConvert2 === void 0) {\n colorConvert2 = requireColorConvert();\n }\n const offset = isBackground ? 10 : 0;\n const styles2 = {};\n for (const [sourceSpace, suite] of Object.entries(colorConvert2)) {\n const name = sourceSpace === \"ansi16\" ? \"ansi\" : sourceSpace;\n if (sourceSpace === targetSpace) {\n styles2[name] = wrap(identity, offset);\n } else if (typeof suite === \"object\") {\n styles2[name] = wrap(suite[targetSpace], offset);\n }\n }\n return styles2;\n };\n function assembleStyles() {\n const codes = /* @__PURE__ */ new Map();\n const styles2 = {\n modifier: {\n reset: [0, 0],\n // 21 isn't widely supported and 22 does the same thing\n bold: [1, 22],\n dim: [2, 22],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29]\n },\n color: {\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n // Bright color\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39]\n },\n bgColor: {\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n // Bright color\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49]\n }\n };\n styles2.color.gray = styles2.color.blackBright;\n styles2.bgColor.bgGray = styles2.bgColor.bgBlackBright;\n styles2.color.grey = styles2.color.blackBright;\n styles2.bgColor.bgGrey = styles2.bgColor.bgBlackBright;\n for (const [groupName, group] of Object.entries(styles2)) {\n for (const [styleName, style] of Object.entries(group)) {\n styles2[styleName] = {\n open: `\\x1B[${style[0]}m`,\n close: `\\x1B[${style[1]}m`\n };\n group[styleName] = styles2[styleName];\n codes.set(style[0], style[1]);\n }\n Object.defineProperty(styles2, groupName, {\n value: group,\n enumerable: false\n });\n }\n Object.defineProperty(styles2, \"codes\", {\n value: codes,\n enumerable: false\n });\n styles2.color.close = \"\\x1B[39m\";\n styles2.bgColor.close = \"\\x1B[49m\";\n setLazyProperty(styles2.color, \"ansi\", () => makeDynamicStyles(wrapAnsi16, \"ansi16\", ansi2ansi, false));\n setLazyProperty(styles2.color, \"ansi256\", () => makeDynamicStyles(wrapAnsi256, \"ansi256\", ansi2ansi, false));\n setLazyProperty(styles2.color, \"ansi16m\", () => makeDynamicStyles(wrapAnsi16m, \"rgb\", rgb2rgb, false));\n setLazyProperty(styles2.bgColor, \"ansi\", () => makeDynamicStyles(wrapAnsi16, \"ansi16\", ansi2ansi, true));\n setLazyProperty(styles2.bgColor, \"ansi256\", () => makeDynamicStyles(wrapAnsi256, \"ansi256\", ansi2ansi, true));\n setLazyProperty(styles2.bgColor, \"ansi16m\", () => makeDynamicStyles(wrapAnsi16m, \"rgb\", rgb2rgb, true));\n return styles2;\n }\n Object.defineProperty(module, \"exports\", {\n enumerable: true,\n get: assembleStyles\n });\n})(ansiStyles$1);\nvar ansiStylesExports = ansiStyles$1.exports;\nvar browser = {\n stdout: false,\n stderr: false\n};\nconst stringReplaceAll$1 = (string, substring, replacer) => {\n let index = string.indexOf(substring);\n if (index === -1) {\n return string;\n }\n const substringLength = substring.length;\n let endIndex = 0;\n let returnValue = \"\";\n do {\n returnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n endIndex = index + substringLength;\n index = string.indexOf(substring, endIndex);\n } while (index !== -1);\n returnValue += string.substr(endIndex);\n return returnValue;\n};\nconst stringEncaseCRLFWithFirstIndex$1 = (string, prefix, postfix, index) => {\n let endIndex = 0;\n let returnValue = \"\";\n do {\n const gotCR = string[index - 1] === \"\\r\";\n returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? \"\\r\\n\" : \"\\n\") + postfix;\n endIndex = index + 1;\n index = string.indexOf(\"\\n\", endIndex);\n } while (index !== -1);\n returnValue += string.substr(endIndex);\n return returnValue;\n};\nvar util = {\n stringReplaceAll: stringReplaceAll$1,\n stringEncaseCRLFWithFirstIndex: stringEncaseCRLFWithFirstIndex$1\n};\nvar templates;\nvar hasRequiredTemplates;\nfunction requireTemplates() {\n if (hasRequiredTemplates)\n return templates;\n hasRequiredTemplates = 1;\n const TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\n const STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\n const STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\n const ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n const ESCAPES = /* @__PURE__ */ new Map([\n [\"n\", \"\\n\"],\n [\"r\", \"\\r\"],\n [\"t\", \"\t\"],\n [\"b\", \"\\b\"],\n [\"f\", \"\\f\"],\n [\"v\", \"\\v\"],\n [\"0\", \"\\0\"],\n [\"\\\\\", \"\\\\\"],\n [\"e\", \"\\x1B\"],\n [\"a\", \"\\x07\"]\n ]);\n function unescape(c) {\n const u = c[0] === \"u\";\n const bracket = c[1] === \"{\";\n if (u && !bracket && c.length === 5 || c[0] === \"x\" && c.length === 3) {\n return String.fromCharCode(parseInt(c.slice(1), 16));\n }\n if (u && bracket) {\n return String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n }\n return ESCAPES.get(c) || c;\n }\n function parseArguments(name, arguments_) {\n const results = [];\n const chunks = arguments_.trim().split(/\\s*,\\s*/g);\n let matches;\n for (const chunk of chunks) {\n const number = Number(chunk);\n if (!Number.isNaN(number)) {\n results.push(number);\n } else if (matches = chunk.match(STRING_REGEX)) {\n results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n } else {\n throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n }\n }\n return results;\n }\n function parseStyle(style) {\n STYLE_REGEX.lastIndex = 0;\n const results = [];\n let matches;\n while ((matches = STYLE_REGEX.exec(style)) !== null) {\n const name = matches[1];\n if (matches[2]) {\n const args = parseArguments(name, matches[2]);\n results.push([name].concat(args));\n } else {\n results.push([name]);\n }\n }\n return results;\n }\n function buildStyle(chalk2, styles2) {\n const enabled = {};\n for (const layer of styles2) {\n for (const style of layer.styles) {\n enabled[style[0]] = layer.inverse ? null : style.slice(1);\n }\n }\n let current = chalk2;\n for (const [styleName, styles3] of Object.entries(enabled)) {\n if (!Array.isArray(styles3)) {\n continue;\n }\n if (!(styleName in current)) {\n throw new Error(`Unknown Chalk style: ${styleName}`);\n }\n current = styles3.length > 0 ? current[styleName](...styles3) : current[styleName];\n }\n return current;\n }\n templates = (chalk2, temporary) => {\n const styles2 = [];\n const chunks = [];\n let chunk = [];\n temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n if (escapeCharacter) {\n chunk.push(unescape(escapeCharacter));\n } else if (style) {\n const string = chunk.join(\"\");\n chunk = [];\n chunks.push(styles2.length === 0 ? string : buildStyle(chalk2, styles2)(string));\n styles2.push({ inverse, styles: parseStyle(style) });\n } else if (close) {\n if (styles2.length === 0) {\n throw new Error(\"Found extraneous } in Chalk template literal\");\n }\n chunks.push(buildStyle(chalk2, styles2)(chunk.join(\"\")));\n chunk = [];\n styles2.pop();\n } else {\n chunk.push(character);\n }\n });\n chunks.push(chunk.join(\"\"));\n if (styles2.length > 0) {\n const errMessage = `Chalk template literal is missing ${styles2.length} closing bracket${styles2.length === 1 ? \"\" : \"s\"} (\\`}\\`)`;\n throw new Error(errMessage);\n }\n return chunks.join(\"\");\n };\n return templates;\n}\nconst ansiStyles = ansiStylesExports;\nconst { stdout: stdoutColor, stderr: stderrColor } = browser;\nconst {\n stringReplaceAll,\n stringEncaseCRLFWithFirstIndex\n} = util;\nconst { isArray } = Array;\nconst levelMapping = [\n \"ansi\",\n \"ansi\",\n \"ansi256\",\n \"ansi16m\"\n];\nconst styles = /* @__PURE__ */ Object.create(null);\nconst applyOptions = (object, options = {}) => {\n if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n throw new Error(\"The `level` option should be an integer from 0 to 3\");\n }\n const colorLevel = stdoutColor ? stdoutColor.level : 0;\n object.level = options.level === void 0 ? colorLevel : options.level;\n};\nclass ChalkClass {\n constructor(options) {\n return chalkFactory(options);\n }\n}\nconst chalkFactory = (options) => {\n const chalk2 = {};\n applyOptions(chalk2, options);\n chalk2.template = (...arguments_) => chalkTag(chalk2.template, ...arguments_);\n Object.setPrototypeOf(chalk2, Chalk.prototype);\n Object.setPrototypeOf(chalk2.template, chalk2);\n chalk2.template.constructor = () => {\n throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\");\n };\n chalk2.template.Instance = ChalkClass;\n return chalk2.template;\n};\nfunction Chalk(options) {\n return chalkFactory(options);\n}\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n styles[styleName] = {\n get() {\n const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n Object.defineProperty(this, styleName, { value: builder });\n return builder;\n }\n };\n}\nstyles.visible = {\n get() {\n const builder = createBuilder(this, this._styler, true);\n Object.defineProperty(this, \"visible\", { value: builder });\n return builder;\n }\n};\nconst usedModels = [\"rgb\", \"hex\", \"keyword\", \"hsl\", \"hsv\", \"hwb\", \"ansi\", \"ansi256\"];\nfor (const model of usedModels) {\n styles[model] = {\n get() {\n const { level } = this;\n return function(...arguments_) {\n const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n return createBuilder(this, styler, this._isEmpty);\n };\n }\n };\n}\nfor (const model of usedModels) {\n const bgModel = \"bg\" + model[0].toUpperCase() + model.slice(1);\n styles[bgModel] = {\n get() {\n const { level } = this;\n return function(...arguments_) {\n const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n return createBuilder(this, styler, this._isEmpty);\n };\n }\n };\n}\nconst proto = Object.defineProperties(() => {\n}, {\n ...styles,\n level: {\n enumerable: true,\n get() {\n return this._generator.level;\n },\n set(level) {\n this._generator.level = level;\n }\n }\n});\nconst createStyler = (open, close, parent) => {\n let openAll;\n let closeAll;\n if (parent === void 0) {\n openAll = open;\n closeAll = close;\n } else {\n openAll = parent.openAll + open;\n closeAll = close + parent.closeAll;\n }\n return {\n open,\n close,\n openAll,\n closeAll,\n parent\n };\n};\nconst createBuilder = (self2, _styler, _isEmpty) => {\n const builder = (...arguments_) => {\n if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n return applyStyle(builder, chalkTag(builder, ...arguments_));\n }\n return applyStyle(builder, arguments_.length === 1 ? \"\" + arguments_[0] : arguments_.join(\" \"));\n };\n Object.setPrototypeOf(builder, proto);\n builder._generator = self2;\n builder._styler = _styler;\n builder._isEmpty = _isEmpty;\n return builder;\n};\nconst applyStyle = (self2, string) => {\n if (self2.level <= 0 || !string) {\n return self2._isEmpty ? \"\" : string;\n }\n let styler = self2._styler;\n if (styler === void 0) {\n return string;\n }\n const { openAll, closeAll } = styler;\n if (string.indexOf(\"\\x1B\") !== -1) {\n while (styler !== void 0) {\n string = stringReplaceAll(string, styler.close, styler.open);\n styler = styler.parent;\n }\n }\n const lfIndex = string.indexOf(\"\\n\");\n if (lfIndex !== -1) {\n string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n }\n return openAll + string + closeAll;\n};\nlet template;\nconst chalkTag = (chalk2, ...strings) => {\n const [firstString] = strings;\n if (!isArray(firstString) || !isArray(firstString.raw)) {\n return strings.join(\" \");\n }\n const arguments_ = strings.slice(1);\n const parts = [firstString.raw[0]];\n for (let i = 1; i < firstString.length; i++) {\n parts.push(\n String(arguments_[i - 1]).replace(/[{}\\\\]/g, \"\\\\$&\"),\n String(firstString.raw[i])\n );\n }\n if (template === void 0) {\n template = requireTemplates();\n }\n return template(chalk2, parts.join(\"\"));\n};\nObject.defineProperties(Chalk.prototype, styles);\nconst chalk = Chalk();\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({ level: stderrColor ? stderrColor.level : 0 });\nchalk.stderr.supportsColor = stderrColor;\nvar source = chalk;\nconst chalk$1 = /* @__PURE__ */ getDefaultExportFromCjs(source);\nvar ePublishState = /* @__PURE__ */ ((ePublishState2) => {\n ePublishState2[ePublishState2[\"init\"] = 0] = \"init\";\n ePublishState2[ePublishState2[\"started\"] = 1] = \"started\";\n ePublishState2[ePublishState2[\"stopping\"] = 2] = \"stopping\";\n return ePublishState2;\n})(ePublishState || {});\nclass PublishInstrumentController extends STSOptionsBase {\n constructor(options) {\n super(options);\n __privateAdd(this, _GetInstrument);\n __privateAdd(this, _ProcessTelemetryCommand);\n // Instrument factory\n __privateAdd(this, _CreateInstrument);\n __privateAdd(this, _CreateInstruments);\n __privateAdd(this, _GetPayloadData);\n __privateAdd(this, _PublishTimeoutLoop);\n __privateAdd(this, _instruments, {});\n __privateAdd(this, _inPublish, false);\n __privateAdd(this, _observer2, null);\n __privateAdd(this, _publishState, 0);\n __publicField(this, \"LogEx\", (message) => {\n this.UpdateInstrument(Gauge.LOGGER, {\n LogMessage: message\n });\n });\n this.SetupInstrumentation();\n this.StartPublish();\n }\n get options() {\n return super.options;\n }\n async Publish() {\n if (__privateGet(this, _inPublish)) {\n return false;\n }\n try {\n __privateSet(this, _inPublish, true);\n if (Object.keys(__privateGet(this, _instruments)).length > 0) {\n const instrumentPayload = __privateMethod(this, _GetPayloadData, GetPayloadData_fn).call(this, this.options.processContext, __privateGet(this, _instruments));\n return await this.options.publisherTransport.Publish(instrumentPayload);\n } else {\n return true;\n }\n } catch (error) {\n return false;\n } finally {\n __privateSet(this, _inPublish, false);\n }\n }\n async StartPublish() {\n if (__privateGet(this, _publishState) !== 0) {\n this.options.logger.debug(chalk$1.yellow(`StartPublish:${this.options.processContext.nid}: StartPublish called when not currently in the init state.`));\n return false;\n }\n __privateSet(this, _publishState, 1);\n __privateMethod(this, _PublishTimeoutLoop, PublishTimeoutLoop_fn).call(this, this.options.publishInterval);\n return true;\n }\n async EndPublish() {\n if (__privateGet(this, _publishState) !== 1) {\n this.options.logger.debug(chalk$1.yellow(`EndPublish:${this.options.processContext.nid}: EndPublish called when not within the started state.`));\n return false;\n }\n __privateSet(this, _publishState, 2);\n if (__privateGet(this, _observer2) !== null) {\n clearInterval(__privateGet(this, _observer2));\n __privateSet(this, _observer2, null);\n await this.Publish();\n }\n await this.options.publisherTransport.Close();\n __privateSet(this, _publishState, 0);\n return true;\n }\n SetupInstrumentation() {\n if (!this.options.instrumentDefinitions) {\n this.options.logger.debug(chalk$1.yellow(`SetupInstrumentation:${this.options.processContext.nid}: No instrument(s) defined within supplied options.`));\n return;\n }\n if (!this.options.processContext) {\n this.options.logger.debug(chalk$1.yellow(`SetupInstrumentation: No context defined within supplied options.`));\n return;\n }\n __privateMethod(this, _CreateInstruments, CreateInstruments_fn).call(this, this.options.instrumentDefinitions);\n }\n /**\n * Check if an instrument exists within the managed instrument collection\n * @param instrumentName \n * @returns \n */\n InstrumentExists(instrumentName) {\n if (__privateGet(this, _instruments)[instrumentName]) {\n return true;\n }\n return false;\n }\n /**\n * Update instrument telemetry.\n * @param instrumentName \n * @param telemetry \n */\n UpdateInstrument(instrumentName, telemetry) {\n if (__privateGet(this, _instruments)[instrumentName]) {\n __privateMethod(this, _ProcessTelemetryCommand, ProcessTelemetryCommand_fn).call(this, instrumentName, telemetry);\n } else {\n this.options.logger.debug(chalk$1.red(`UpdateInstrument:${this.options.processContext.nid}: Attempted to UpdateInstrument before initialised.`));\n }\n }\n /*\n #GetHttpAgentInstruments(): InstrumentDefinitions {\n if (isNode) {\n return [ ];\n } else {\n return [\n [ Gauge.REQUEST_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of requests serviced\n [ Gauge.ERROR_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.AUTHENTICATION_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests\n [ Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests errors\n [ Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests retries\n [ Gauge.ACTIVE_REQUEST_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, { // Total number of runners (in-flight) requests\n interval: this.options.instrumentationObservationInterval, \n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.DURATION_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, { // Duration of latest http(s) request.\n interval: this.options.instrumentationObservationInterval,\n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.DURATION_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],\n [ Gauge.VELOCITY_GAUGE, GaugeTypes.INSTRUMENT_VELOCITY ], // Requests per second\n [ Gauge.CORE_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Thread count (for http agents)\n [ Gauge.LATENCY_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval,\n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.LATENCY_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],\n [ Gauge.CHILD_COUNT, GaugeTypes.INSTRUMENT_GAUGE ], // Number of async runners idle or running\n ]\n }\n }\n */\n /*\n #GetHttpNodeServerInstruments(): InstrumentDefinitions {\n if (isNode) {\n if (this.options.httpServer === true) {\n return [\n [ Gauge.REQUEST_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of requests serviced\n [ Gauge.AUTHENTICATION_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests\n [ Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests errors\n [ Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests retries\n \n [ Gauge.ACTIVE_REQUEST_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval, \n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.DURATION_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval,\n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.DURATION_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],\n [ Gauge.CONNECTION_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, { \n interval: this.options.instrumentationObservationInterval, \n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n \t\t\n [ Gauge.CONNECTION_POOL_TOTAL_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.CONNECTION_POOL_IDLE_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.CONNECTION_POOL_WAITING_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.VELOCITY_GAUGE, GaugeTypes.INSTRUMENT_VELOCITY ], // Requests per second\n [ Gauge.ERROR_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.LATENCY_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval,\n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.LATENCY_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],\n [ Gauge.CORE_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ]\n ]\n } else {\n return [ ];\n }\n } else {\n return [ ];\n }\n }\n */\n /*\n #GetAdditionalInstruments(): InstrumentDefinitions {\n if (this.options.instrumentDefinitions) {\n return this.options.instrumentDefinitions;\n } else {\n return [ ];\n }\n }\n */\n /*\n #SetupInstruments() {\n this.options.logger.debug(chalk.yellow(`#SetupInstruments:${this.options.processContext.nid}: Started`));\n \n const standardInstruments: InstrumentDefinitions = [\n [ Gauge.TIMER_GAUGE, GaugeTypes.INSTRUMENT_TIMER ],\n [ Gauge.LOGGER, GaugeTypes.INSTRUMENT_LOG, {\n consoleLogging: this.options.consoleLogging,\n instrumentLogging: this.options.instrumentLogging } as InstrumentLogOptions],\n [ Gauge.NETWORK_RX_GAUGE , GaugeTypes.INSTRUMENT_VELOCITY ],\n [ Gauge.NETWORK_TX_GAUGE, GaugeTypes.INSTRUMENT_VELOCITY ]\n ];\n \n let nodeStandardInstruments: InstrumentDefinitions = [ ];\n if (isNode) {\n nodeStandardInstruments = [\n [ Gauge.CPU_LOAD_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval, \n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.OBJECT_GAUGE, GaugeTypes.INSTRUMENT_OBJECT, {\n label:'InstrumentObjectMaster' } as InstrumentObjectOptions]\n ];\n }\n \n const instruments: InstrumentDefinitions = [\n ...standardInstruments,\n ...nodeStandardInstruments,\n ...this.#GetHttpAgentInstruments(),\n ...this.#GetHttpNodeServerInstruments(),\n ...this.#GetAdditionalInstruments()\n ]\n \n this.options.logger.debug(chalk.green(`#SetupInstruments:${this.options.processContext.nid}: Completed`));\n }\n */\n}\n_instruments = new WeakMap();\n_inPublish = new WeakMap();\n_observer2 = new WeakMap();\n_publishState = new WeakMap();\n_GetInstrument = new WeakSet();\nGetInstrument_fn = function(instrumentName) {\n return __privateGet(this, _instruments)[instrumentName];\n};\n_ProcessTelemetryCommand = new WeakSet();\nProcessTelemetryCommand_fn = function(instrumentName, telemetry) {\n const instrument = __privateMethod(this, _GetInstrument, GetInstrument_fn).call(this, instrumentName);\n if (instrument) {\n instrument.ProcessTelemetry(telemetry);\n }\n};\n_CreateInstrument = new WeakSet();\nCreateInstrument_fn = function(instrumentType, options) {\n let instrument;\n switch (instrumentType) {\n case GaugeTypes.INSTRUMENT_GAUGE:\n instrument = new InstrumentGauge(options);\n break;\n case GaugeTypes.INSTRUMENT_HISTOGRAM:\n instrument = new InstrumentHistogram(options);\n break;\n case GaugeTypes.INSTRUMENT_LOG:\n instrument = new InstrumentLog(options);\n break;\n case GaugeTypes.INSTRUMENT_OBJECT:\n instrument = new InstrumentObject(options);\n break;\n case GaugeTypes.INSTRUMENT_TIMER:\n instrument = new InstrumentTimerGauge(options);\n break;\n case GaugeTypes.INSTRUMENT_VELOCITY:\n instrument = new InstrumentVelocity(options);\n break;\n default:\n throw new Error(`Gauge type: [${instrumentType} not known.]`);\n }\n return instrument;\n};\n_CreateInstruments = new WeakSet();\nCreateInstruments_fn = function(payload) {\n payload.forEach((instrumentDefinition) => {\n const g = instrumentDefinition[0];\n const gt = instrumentDefinition[1];\n const instrumentBaseOptions = instrumentDefinition[2];\n const instrument = __privateMethod(this, _CreateInstrument, CreateInstrument_fn).call(this, gt, instrumentBaseOptions);\n __privateGet(this, _instruments)[g] = instrument;\n });\n};\n_GetPayloadData = new WeakSet();\nGetPayloadData_fn = function(context, instruments) {\n const payloadInstruments = {};\n for (const [key, value] of Object.entries(instruments)) {\n if (value instanceof InstrumentLog) {\n payloadInstruments[key] = { ...value.WithUseLatestMessages(true) };\n } else {\n payloadInstruments[key] = { ...value };\n }\n }\n return {\n context,\n instruments: payloadInstruments\n };\n};\n_PublishTimeoutLoop = new WeakSet();\nPublishTimeoutLoop_fn = function(publishInterval) {\n __privateSet(this, _observer2, setTimeout(async () => {\n const start = performance.now();\n await this.Publish();\n const end = performance.now();\n const diff = end - start;\n if (__privateGet(this, _publishState) === 1) {\n __privateMethod(this, _PublishTimeoutLoop, PublishTimeoutLoop_fn).call(this, this.options.publishInterval - diff);\n }\n }, publishInterval));\n if (isNode)\n __privateGet(this, _observer2).unref();\n};\nconst STSInstrumentControllerPluginKey = Symbol();\nclass AgentInstrumentController extends PublishInstrumentController {\n /**\n * Create the primary instrument publisher\n * @param options\n */\n constructor(options) {\n super(options);\n }\n /**\n * Add additional instrument publishers. Usually invoked when adding workers to the app and/or async runners within a worker.\n * @param processContext \n * @returns Returns the newly created PublishInstrumentController\n */\n AddPublishInstrumentController(processContext) {\n const options = { ...this.options };\n options.processContext = processContext;\n return new PublishInstrumentController(options);\n }\n}\nconst GetSTSInstrumentControllerPluginKey = () => STSInstrumentControllerPluginKey;\nconst CompareSTSInstrumentControllerPluginKey = (val) => val === STSInstrumentControllerPluginKey;\nconst useSTSInstrumentControllerPlugin = () => inject(STSInstrumentControllerPluginKey);\nconst GetSTSInstrumentController = (app) => {\n return app.config.globalProperties.$sts[STSInstrumentControllerPluginKey];\n};\nconst STSInstrumentControllerPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any \n install: (app, options) => {\n options.logger.debug(chalk$1.yellow(`STSInstrumentControllerPlugin:install:Start`));\n const aic = new AgentInstrumentController(options);\n if (!app.config.globalProperties.$sts) {\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: [app.config.globalProperties.$sts] does not exist.`));\n app.config.globalProperties.$sts = {};\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: created empty [app.config.globalProperties.$sts].`));\n } else {\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: [app.config.globalProperties.$sts] already exists.`));\n }\n app.config.globalProperties.$sts.aic = aic;\n app.config.globalProperties.$sts[STSInstrumentControllerPluginKey] = aic;\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: AgentInstrumentController installed into [app.config.globalProperties.$sts] using: [${String(STSInstrumentControllerPluginKey)}].`));\n app.provide(STSInstrumentControllerPluginKey, aic);\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: AgentInstrumentController installed into 'provide' using: [${String(STSInstrumentControllerPluginKey)}].`));\n options.logger.debug(chalk$1.green(`STSInstrumentControllerPlugin:install:End`));\n }\n};\nfunction utf8Count(str) {\n var strLength = str.length;\n var byteLength = 0;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 4294967168) === 0) {\n byteLength++;\n continue;\n } else if ((value & 4294965248) === 0) {\n byteLength += 2;\n } else {\n if (value >= 55296 && value <= 56319) {\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 64512) === 56320) {\n ++pos;\n value = ((value & 1023) << 10) + (extra & 1023) + 65536;\n }\n }\n }\n if ((value & 4294901760) === 0) {\n byteLength += 3;\n } else {\n byteLength += 4;\n }\n }\n }\n return byteLength;\n}\nfunction utf8EncodeJs(str, output, outputOffset) {\n var strLength = str.length;\n var offset = outputOffset;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 4294967168) === 0) {\n output[offset++] = value;\n continue;\n } else if ((value & 4294965248) === 0) {\n output[offset++] = value >> 6 & 31 | 192;\n } else {\n if (value >= 55296 && value <= 56319) {\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 64512) === 56320) {\n ++pos;\n value = ((value & 1023) << 10) + (extra & 1023) + 65536;\n }\n }\n }\n if ((value & 4294901760) === 0) {\n output[offset++] = value >> 12 & 15 | 224;\n output[offset++] = value >> 6 & 63 | 128;\n } else {\n output[offset++] = value >> 18 & 7 | 240;\n output[offset++] = value >> 12 & 63 | 128;\n output[offset++] = value >> 6 & 63 | 128;\n }\n }\n output[offset++] = value & 63 | 128;\n }\n}\nvar sharedTextEncoder = new TextEncoder();\nvar TEXT_ENCODER_THRESHOLD = 50;\nfunction utf8EncodeTE(str, output, outputOffset) {\n sharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nfunction utf8Encode(str, output, outputOffset) {\n if (str.length > TEXT_ENCODER_THRESHOLD) {\n utf8EncodeTE(str, output, outputOffset);\n } else {\n utf8EncodeJs(str, output, outputOffset);\n }\n}\nnew TextDecoder();\nvar ExtData = (\n /** @class */\n /* @__PURE__ */ function() {\n function ExtData2(type, data) {\n this.type = type;\n this.data = data;\n }\n return ExtData2;\n }()\n);\nvar __extends = /* @__PURE__ */ function() {\n var extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {\n d2.__proto__ = b2;\n } || function(d2, b2) {\n for (var p in b2)\n if (Object.prototype.hasOwnProperty.call(b2, p))\n d2[p] = b2[p];\n };\n return extendStatics(d, b);\n };\n return function(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar DecodeError = (\n /** @class */\n function(_super) {\n __extends(DecodeError2, _super);\n function DecodeError2(message) {\n var _this = _super.call(this, message) || this;\n var proto2 = Object.create(DecodeError2.prototype);\n Object.setPrototypeOf(_this, proto2);\n Object.defineProperty(_this, \"name\", {\n configurable: true,\n enumerable: false,\n value: DecodeError2.name\n });\n return _this;\n }\n return DecodeError2;\n }(Error)\n);\nfunction setUint64(view, offset, value) {\n var high = value / 4294967296;\n var low = value;\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nfunction setInt64(view, offset, value) {\n var high = Math.floor(value / 4294967296);\n var low = value;\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nfunction getInt64(view, offset) {\n var high = view.getInt32(offset);\n var low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\nvar EXT_TIMESTAMP = -1;\nvar TIMESTAMP32_MAX_SEC = 4294967296 - 1;\nvar TIMESTAMP64_MAX_SEC = 17179869184 - 1;\nfunction encodeTimeSpecToTimestamp(_a2) {\n var sec = _a2.sec, nsec = _a2.nsec;\n if (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) {\n if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n var rv = new Uint8Array(4);\n var view = new DataView(rv.buffer);\n view.setUint32(0, sec);\n return rv;\n } else {\n var secHigh = sec / 4294967296;\n var secLow = sec & 4294967295;\n var rv = new Uint8Array(8);\n var view = new DataView(rv.buffer);\n view.setUint32(0, nsec << 2 | secHigh & 3);\n view.setUint32(4, secLow);\n return rv;\n }\n } else {\n var rv = new Uint8Array(12);\n var view = new DataView(rv.buffer);\n view.setUint32(0, nsec);\n setInt64(view, 4, sec);\n return rv;\n }\n}\nfunction encodeDateToTimeSpec(date) {\n var msec = date.getTime();\n var sec = Math.floor(msec / 1e3);\n var nsec = (msec - sec * 1e3) * 1e6;\n var nsecInSec = Math.floor(nsec / 1e9);\n return {\n sec: sec + nsecInSec,\n nsec: nsec - nsecInSec * 1e9\n };\n}\nfunction encodeTimestampExtension(object) {\n if (object instanceof Date) {\n var timeSpec = encodeDateToTimeSpec(object);\n return encodeTimeSpecToTimestamp(timeSpec);\n } else {\n return null;\n }\n}\nfunction decodeTimestampToTimeSpec(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n switch (data.byteLength) {\n case 4: {\n var sec = view.getUint32(0);\n var nsec = 0;\n return { sec, nsec };\n }\n case 8: {\n var nsec30AndSecHigh2 = view.getUint32(0);\n var secLow32 = view.getUint32(4);\n var sec = (nsec30AndSecHigh2 & 3) * 4294967296 + secLow32;\n var nsec = nsec30AndSecHigh2 >>> 2;\n return { sec, nsec };\n }\n case 12: {\n var sec = getInt64(view, 4);\n var nsec = view.getUint32(0);\n return { sec, nsec };\n }\n default:\n throw new DecodeError(\"Unrecognized data size for timestamp (expected 4, 8, or 12): \".concat(data.length));\n }\n}\nfunction decodeTimestampExtension(data) {\n var timeSpec = decodeTimestampToTimeSpec(data);\n return new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nvar timestampExtension = {\n type: EXT_TIMESTAMP,\n encode: encodeTimestampExtension,\n decode: decodeTimestampExtension\n};\nvar ExtensionCodec = (\n /** @class */\n function() {\n function ExtensionCodec2() {\n this.builtInEncoders = [];\n this.builtInDecoders = [];\n this.encoders = [];\n this.decoders = [];\n this.register(timestampExtension);\n }\n ExtensionCodec2.prototype.register = function(_a2) {\n var type = _a2.type, encode2 = _a2.encode, decode = _a2.decode;\n if (type >= 0) {\n this.encoders[type] = encode2;\n this.decoders[type] = decode;\n } else {\n var index = 1 + type;\n this.builtInEncoders[index] = encode2;\n this.builtInDecoders[index] = decode;\n }\n };\n ExtensionCodec2.prototype.tryToEncode = function(object, context) {\n for (var i = 0; i < this.builtInEncoders.length; i++) {\n var encodeExt = this.builtInEncoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = -1 - i;\n return new ExtData(type, data);\n }\n }\n }\n for (var i = 0; i < this.encoders.length; i++) {\n var encodeExt = this.encoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = i;\n return new ExtData(type, data);\n }\n }\n }\n if (object instanceof ExtData) {\n return object;\n }\n return null;\n };\n ExtensionCodec2.prototype.decode = function(data, type, context) {\n var decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n if (decodeExt) {\n return decodeExt(data, type, context);\n } else {\n return new ExtData(type, data);\n }\n };\n ExtensionCodec2.defaultCodec = new ExtensionCodec2();\n return ExtensionCodec2;\n }()\n);\nfunction ensureUint8Array(buffer) {\n if (buffer instanceof Uint8Array) {\n return buffer;\n } else if (ArrayBuffer.isView(buffer)) {\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n } else if (buffer instanceof ArrayBuffer) {\n return new Uint8Array(buffer);\n } else {\n return Uint8Array.from(buffer);\n }\n}\nvar DEFAULT_MAX_DEPTH = 100;\nvar DEFAULT_INITIAL_BUFFER_SIZE = 2048;\nvar Encoder = (\n /** @class */\n function() {\n function Encoder2(options) {\n var _a2, _b, _c, _d, _e, _f, _g, _h;\n this.extensionCodec = (_a2 = options === null || options === void 0 ? void 0 : options.extensionCodec) !== null && _a2 !== void 0 ? _a2 : ExtensionCodec.defaultCodec;\n this.context = options === null || options === void 0 ? void 0 : options.context;\n this.useBigInt64 = (_b = options === null || options === void 0 ? void 0 : options.useBigInt64) !== null && _b !== void 0 ? _b : false;\n this.maxDepth = (_c = options === null || options === void 0 ? void 0 : options.maxDepth) !== null && _c !== void 0 ? _c : DEFAULT_MAX_DEPTH;\n this.initialBufferSize = (_d = options === null || options === void 0 ? void 0 : options.initialBufferSize) !== null && _d !== void 0 ? _d : DEFAULT_INITIAL_BUFFER_SIZE;\n this.sortKeys = (_e = options === null || options === void 0 ? void 0 : options.sortKeys) !== null && _e !== void 0 ? _e : false;\n this.forceFloat32 = (_f = options === null || options === void 0 ? void 0 : options.forceFloat32) !== null && _f !== void 0 ? _f : false;\n this.ignoreUndefined = (_g = options === null || options === void 0 ? void 0 : options.ignoreUndefined) !== null && _g !== void 0 ? _g : false;\n this.forceIntegerToFloat = (_h = options === null || options === void 0 ? void 0 : options.forceIntegerToFloat) !== null && _h !== void 0 ? _h : false;\n this.pos = 0;\n this.view = new DataView(new ArrayBuffer(this.initialBufferSize));\n this.bytes = new Uint8Array(this.view.buffer);\n }\n Encoder2.prototype.reinitializeState = function() {\n this.pos = 0;\n };\n Encoder2.prototype.encodeSharedRef = function(object) {\n this.reinitializeState();\n this.doEncode(object, 1);\n return this.bytes.subarray(0, this.pos);\n };\n Encoder2.prototype.encode = function(object) {\n this.reinitializeState();\n this.doEncode(object, 1);\n return this.bytes.slice(0, this.pos);\n };\n Encoder2.prototype.doEncode = function(object, depth) {\n if (depth > this.maxDepth) {\n throw new Error(\"Too deep objects in depth \".concat(depth));\n }\n if (object == null) {\n this.encodeNil();\n } else if (typeof object === \"boolean\") {\n this.encodeBoolean(object);\n } else if (typeof object === \"number\") {\n if (!this.forceIntegerToFloat) {\n this.encodeNumber(object);\n } else {\n this.encodeNumberAsFloat(object);\n }\n } else if (typeof object === \"string\") {\n this.encodeString(object);\n } else if (this.useBigInt64 && typeof object === \"bigint\") {\n this.encodeBigInt64(object);\n } else {\n this.encodeObject(object, depth);\n }\n };\n Encoder2.prototype.ensureBufferSizeToWrite = function(sizeToWrite) {\n var requiredSize = this.pos + sizeToWrite;\n if (this.view.byteLength < requiredSize) {\n this.resizeBuffer(requiredSize * 2);\n }\n };\n Encoder2.prototype.resizeBuffer = function(newSize) {\n var newBuffer = new ArrayBuffer(newSize);\n var newBytes = new Uint8Array(newBuffer);\n var newView = new DataView(newBuffer);\n newBytes.set(this.bytes);\n this.view = newView;\n this.bytes = newBytes;\n };\n Encoder2.prototype.encodeNil = function() {\n this.writeU8(192);\n };\n Encoder2.prototype.encodeBoolean = function(object) {\n if (object === false) {\n this.writeU8(194);\n } else {\n this.writeU8(195);\n }\n };\n Encoder2.prototype.encodeNumber = function(object) {\n if (!this.forceIntegerToFloat && Number.isSafeInteger(object)) {\n if (object >= 0) {\n if (object < 128) {\n this.writeU8(object);\n } else if (object < 256) {\n this.writeU8(204);\n this.writeU8(object);\n } else if (object < 65536) {\n this.writeU8(205);\n this.writeU16(object);\n } else if (object < 4294967296) {\n this.writeU8(206);\n this.writeU32(object);\n } else if (!this.useBigInt64) {\n this.writeU8(207);\n this.writeU64(object);\n } else {\n this.encodeNumberAsFloat(object);\n }\n } else {\n if (object >= -32) {\n this.writeU8(224 | object + 32);\n } else if (object >= -128) {\n this.writeU8(208);\n this.writeI8(object);\n } else if (object >= -32768) {\n this.writeU8(209);\n this.writeI16(object);\n } else if (object >= -2147483648) {\n this.writeU8(210);\n this.writeI32(object);\n } else if (!this.useBigInt64) {\n this.writeU8(211);\n this.writeI64(object);\n } else {\n this.encodeNumberAsFloat(object);\n }\n }\n } else {\n this.encodeNumberAsFloat(object);\n }\n };\n Encoder2.prototype.encodeNumberAsFloat = function(object) {\n if (this.forceFloat32) {\n this.writeU8(202);\n this.writeF32(object);\n } else {\n this.writeU8(203);\n this.writeF64(object);\n }\n };\n Encoder2.prototype.encodeBigInt64 = function(object) {\n if (object >= BigInt(0)) {\n this.writeU8(207);\n this.writeBigUint64(object);\n } else {\n this.writeU8(211);\n this.writeBigInt64(object);\n }\n };\n Encoder2.prototype.writeStringHeader = function(byteLength) {\n if (byteLength < 32) {\n this.writeU8(160 + byteLength);\n } else if (byteLength < 256) {\n this.writeU8(217);\n this.writeU8(byteLength);\n } else if (byteLength < 65536) {\n this.writeU8(218);\n this.writeU16(byteLength);\n } else if (byteLength < 4294967296) {\n this.writeU8(219);\n this.writeU32(byteLength);\n } else {\n throw new Error(\"Too long string: \".concat(byteLength, \" bytes in UTF-8\"));\n }\n };\n Encoder2.prototype.encodeString = function(object) {\n var maxHeaderSize = 1 + 4;\n var byteLength = utf8Count(object);\n this.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n this.writeStringHeader(byteLength);\n utf8Encode(object, this.bytes, this.pos);\n this.pos += byteLength;\n };\n Encoder2.prototype.encodeObject = function(object, depth) {\n var ext = this.extensionCodec.tryToEncode(object, this.context);\n if (ext != null) {\n this.encodeExtension(ext);\n } else if (Array.isArray(object)) {\n this.encodeArray(object, depth);\n } else if (ArrayBuffer.isView(object)) {\n this.encodeBinary(object);\n } else if (typeof object === \"object\") {\n this.encodeMap(object, depth);\n } else {\n throw new Error(\"Unrecognized object: \".concat(Object.prototype.toString.apply(object)));\n }\n };\n Encoder2.prototype.encodeBinary = function(object) {\n var size = object.byteLength;\n if (size < 256) {\n this.writeU8(196);\n this.writeU8(size);\n } else if (size < 65536) {\n this.writeU8(197);\n this.writeU16(size);\n } else if (size < 4294967296) {\n this.writeU8(198);\n this.writeU32(size);\n } else {\n throw new Error(\"Too large binary: \".concat(size));\n }\n var bytes = ensureUint8Array(object);\n this.writeU8a(bytes);\n };\n Encoder2.prototype.encodeArray = function(object, depth) {\n var size = object.length;\n if (size < 16) {\n this.writeU8(144 + size);\n } else if (size < 65536) {\n this.writeU8(220);\n this.writeU16(size);\n } else if (size < 4294967296) {\n this.writeU8(221);\n this.writeU32(size);\n } else {\n throw new Error(\"Too large array: \".concat(size));\n }\n for (var _i = 0, object_1 = object; _i < object_1.length; _i++) {\n var item = object_1[_i];\n this.doEncode(item, depth + 1);\n }\n };\n Encoder2.prototype.countWithoutUndefined = function(object, keys) {\n var count = 0;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (object[key] !== void 0) {\n count++;\n }\n }\n return count;\n };\n Encoder2.prototype.encodeMap = function(object, depth) {\n var keys = Object.keys(object);\n if (this.sortKeys) {\n keys.sort();\n }\n var size = this.ignoreUndefined ? this.countWithoutUndefined(object, keys) : keys.length;\n if (size < 16) {\n this.writeU8(128 + size);\n } else if (size < 65536) {\n this.writeU8(222);\n this.writeU16(size);\n } else if (size < 4294967296) {\n this.writeU8(223);\n this.writeU32(size);\n } else {\n throw new Error(\"Too large map object: \".concat(size));\n }\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var value = object[key];\n if (!(this.ignoreUndefined && value === void 0)) {\n this.encodeString(key);\n this.doEncode(value, depth + 1);\n }\n }\n };\n Encoder2.prototype.encodeExtension = function(ext) {\n var size = ext.data.length;\n if (size === 1) {\n this.writeU8(212);\n } else if (size === 2) {\n this.writeU8(213);\n } else if (size === 4) {\n this.writeU8(214);\n } else if (size === 8) {\n this.writeU8(215);\n } else if (size === 16) {\n this.writeU8(216);\n } else if (size < 256) {\n this.writeU8(199);\n this.writeU8(size);\n } else if (size < 65536) {\n this.writeU8(200);\n this.writeU16(size);\n } else if (size < 4294967296) {\n this.writeU8(201);\n this.writeU32(size);\n } else {\n throw new Error(\"Too large extension object: \".concat(size));\n }\n this.writeI8(ext.type);\n this.writeU8a(ext.data);\n };\n Encoder2.prototype.writeU8 = function(value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setUint8(this.pos, value);\n this.pos++;\n };\n Encoder2.prototype.writeU8a = function(values) {\n var size = values.length;\n this.ensureBufferSizeToWrite(size);\n this.bytes.set(values, this.pos);\n this.pos += size;\n };\n Encoder2.prototype.writeI8 = function(value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setInt8(this.pos, value);\n this.pos++;\n };\n Encoder2.prototype.writeU16 = function(value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setUint16(this.pos, value);\n this.pos += 2;\n };\n Encoder2.prototype.writeI16 = function(value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setInt16(this.pos, value);\n this.pos += 2;\n };\n Encoder2.prototype.writeU32 = function(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setUint32(this.pos, value);\n this.pos += 4;\n };\n Encoder2.prototype.writeI32 = function(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setInt32(this.pos, value);\n this.pos += 4;\n };\n Encoder2.prototype.writeF32 = function(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setFloat32(this.pos, value);\n this.pos += 4;\n };\n Encoder2.prototype.writeF64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setFloat64(this.pos, value);\n this.pos += 8;\n };\n Encoder2.prototype.writeU64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n setUint64(this.view, this.pos, value);\n this.pos += 8;\n };\n Encoder2.prototype.writeI64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n setInt64(this.view, this.pos, value);\n this.pos += 8;\n };\n Encoder2.prototype.writeBigUint64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setBigUint64(this.pos, value);\n this.pos += 8;\n };\n Encoder2.prototype.writeBigInt64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setBigInt64(this.pos, value);\n this.pos += 8;\n };\n return Encoder2;\n }()\n);\nfunction encode(value, options) {\n var encoder = new Encoder(options);\n return encoder.encodeSharedRef(value);\n}\nclass PublishTransportRESTServer extends STSOptionsBase {\n constructor(options) {\n super(options);\n __privateAdd(this, _httpsAgent, void 0);\n // Returns true for success or false for failure.\n __publicField(this, \"Publish\", async (payload) => {\n try {\n const encodedData = encode(payload, { ignoreUndefined: true });\n const headers = { \"Content-Type\": \"application/octet-stream\" };\n let retVal = null;\n if (this.options.socketPath) {\n retVal = await axios({\n method: \"post\",\n //data: payload,\n data: Buffer.from(encodedData),\n headers,\n httpsAgent: __privateGet(this, _httpsAgent),\n socketPath: this.options.socketPath\n });\n } else {\n if (isNode) {\n retVal = await axios({\n //url: `${goptions.imendpoint}:${goptions.import}${goptions.imapiroot}/publishmessage`,\n url: this.options.url,\n method: \"post\",\n data: Buffer.from(encodedData),\n // payload,\n headers,\n httpsAgent: __privateGet(this, _httpsAgent)\n });\n } else {\n const blob = new Blob([encodedData], { type: \"application/octet-stream\" });\n retVal = await axios({\n //url: `${goptions.imendpoint}:${goptions.import}${goptions.imapiroot}/publishmessage`,\n url: this.options.url,\n method: \"post\",\n data: blob,\n //payload,\n headers\n });\n }\n }\n if (retVal.status !== 200) {\n this.options.logger.debug(chalk$1.red(`Error (_PerformPublishRESTAPI:_PerformPublish:#publishmessage): Invalid response from server: [${retVal.status}]`));\n return false;\n } else {\n this.options.logger.debug(chalk$1.green(`_PerformPublishRESTAPI:_PerformPublish:#publishmessage: [${this.options.url}] - Valid response from server: [${retVal.status}]`));\n }\n return true;\n } catch (error) {\n this.options.logger.error(chalk$1.red(`Error (PublishRESTServer:_PerformPublishRESTAPI:Error: [${error}]`));\n return false;\n }\n });\n if (isNode) {\n const agentOptions = this.options.agentOptions;\n __privateSet(this, _httpsAgent, new https.Agent({\n keepAlive: agentOptions == null ? void 0 : agentOptions.keepAlive,\n maxSockets: agentOptions == null ? void 0 : agentOptions.maxSockets,\n maxTotalSockets: agentOptions == null ? void 0 : agentOptions.maxTotalSockets,\n maxFreeSockets: agentOptions == null ? void 0 : agentOptions.maxFreeSockets,\n timeout: agentOptions == null ? void 0 : agentOptions.timeout,\n rejectUnauthorized: agentOptions == null ? void 0 : agentOptions.rejectUnauthorized\n // Allows self signed certs in non production mode(s)\n }));\n }\n options.url += \"V3\";\n }\n get options() {\n return super.options;\n }\n async Close() {\n if (__privateGet(this, _httpsAgent)) {\n __privateGet(this, _httpsAgent).destroy();\n }\n return true;\n }\n}\n_httpsAgent = new WeakMap();\nvar SubscriptionTopic = /* @__PURE__ */ ((SubscriptionTopic2) => {\n SubscriptionTopic2[\"AllServicesCombined\"] = \"AllServicesCombined\";\n SubscriptionTopic2[\"Services\"] = \"Services\";\n SubscriptionTopic2[\"ServiceInstances\"] = \"ServiceInstances\";\n SubscriptionTopic2[\"ServiceInstance\"] = \"ServiceInstance\";\n SubscriptionTopic2[\"AllAgentsCombined\"] = \"AllAgentsCombined\";\n SubscriptionTopic2[\"Agents\"] = \"Agents\";\n SubscriptionTopic2[\"AgentWorkers\"] = \"AgentWorkers\";\n SubscriptionTopic2[\"AgentWorker\"] = \"AgentWorker\";\n SubscriptionTopic2[\"AllLambdasCombined\"] = \"AllLambdasCombined\";\n SubscriptionTopic2[\"LambdaTechnologies\"] = \"LambdaTechnologies\";\n SubscriptionTopic2[\"LambdaSubTechnologies\"] = \"LambdaSubTechnologies\";\n SubscriptionTopic2[\"LambdaSubTechnologiesInstance\"] = \"LambdaSubTechnologiesInstance\";\n SubscriptionTopic2[\"LogProcessing\"] = \"LogProcessing\";\n return SubscriptionTopic2;\n})(SubscriptionTopic || {});\nconst GetSocketIOSubscriptionKey = (subscriptionKey) => {\n return `SubscriptionData_${subscriptionKey.id}`;\n};\nconst KAFKA_PREFIX = \"__STS__\";\nconst _ObservabilityModelUtils = class _ObservabilityModelUtils {\n static GetModelNode(data) {\n const fixedSize = 2;\n const padLength = 9;\n try {\n return {\n val: data,\n vf: parseFloat(data.toString()).toFixed(fixedSize).padStart(padLength, \" \"),\n value: parseFloat(data.toString()).toFixed(fixedSize)\n };\n } catch (error) {\n return {\n val: 0,\n vf: \"\",\n value: \"\"\n };\n }\n }\n static GetModelNodeRawStringArray(data) {\n try {\n return {\n val: data\n };\n } catch (error) {\n return {\n val: []\n };\n }\n }\n static GetModelNodeObject(data) {\n try {\n return {\n val: JSON.parse(data)\n };\n } catch (error) {\n return {\n val: null\n };\n }\n }\n static GetModelNodeWithQuantile(data, quantileData) {\n let quantile2 = \"\";\n const quantileDataElementArray = [];\n for (const [key, val] of Object.entries(quantileData)) {\n quantile2 += parseFloat(val.toFixed(2)).toString().padStart(8, \" \");\n quantileDataElementArray.push([\n key,\n val\n ]);\n }\n const fixedSize = 2;\n const padLength = 9;\n try {\n return {\n val: data,\n vf: parseFloat(data.toString()).toFixed(fixedSize).padStart(padLength, \" \"),\n value: parseFloat(data.toString()).toFixed(fixedSize),\n percentile: quantileDataElementArray,\n percentileFormatted: quantile2\n };\n } catch (error) {\n return {\n val: 0,\n vf: \"\",\n value: \"\",\n percentile: [],\n percentileFormatted: \"\"\n };\n }\n }\n static GetModelNodeHistFromInfluxData(data) {\n try {\n const histVal = [];\n if (data) {\n for (const [key, val] of Object.entries(data)) {\n const dataElement = [\n val,\n key,\n parseInt(key)\n ];\n histVal.push(dataElement);\n }\n }\n try {\n return {\n hist: histVal\n };\n } catch (error) {\n return {\n hist: []\n };\n }\n } catch (error) {\n return {\n hist: []\n };\n }\n }\n static GetModelForService(id, data, subscribeToKafka, logger) {\n try {\n const parseLog = [];\n const model = {\n id,\n instruments: {}\n };\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.REQUEST_COUNT_GAUGE, \"requestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ERROR_COUNT_GAUGE, \"errorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.RETRY_COUNT_GAUGE, \"retryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_COUNT_GAUGE, \"authenticationCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, \"authenticationErrorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, \"authenticationRetryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.VELOCITY_GAUGE, \"velocity\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ACTIVE_REQUEST_GAUGE, \"activeRequestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_COUNT_GAUGE, \"connectionCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_TOTAL_GAUGE, \"connectionPoolCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_IDLE_GAUGE, \"connectionIdleCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_WAITING_GAUGE, \"connectionWaitingCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CORE_COUNT_GAUGE, \"coreCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.TIMER_GAUGE, \"timer\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_RX_GAUGE, \"rx\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_TX_GAUGE, \"tx\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.CPU_LOAD_GAUGE, \"cpu\", \"cpu_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.CPU_SYSTEM_LOAD_GAUGE, \"systemcpu\", \"systemcpu_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.DURATION_GAUGE, \"duration\", \"duration_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.LATENCY_GAUGE, \"latency\", \"latency_quantile\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.DURATION_HISTOGRAM_GAUGE, \"duration_histo\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.LATENCY_HISTOGRAM_GAUGE, \"latency_histo\");\n _ObservabilityModelUtils.ParseModelNodeObject(model, data, parseLog, Gauge.OBJECT_GAUGE, \"memory\");\n if (!subscribeToKafka) {\n model.instruments[Gauge.LOGGER] = _ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n }\n if (parseLog.length > 0) {\n parseLog.forEach((logEntry) => logger.debug(logEntry));\n }\n return model;\n } catch (error) {\n return null;\n }\n }\n static GetModelForLambda(id, data, subscribeToKafka, logger) {\n try {\n const parseLog = [];\n const model = {\n id,\n instruments: {}\n };\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.REQUEST_COUNT_GAUGE, \"requestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ERROR_COUNT_GAUGE, \"errorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.RETRY_COUNT_GAUGE, \"retryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_COUNT_GAUGE, \"authenticationCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, \"authenticationErrorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, \"authenticationRetryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.VELOCITY_GAUGE, \"velocity\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ACTIVE_REQUEST_GAUGE, \"activeRequestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_COUNT_GAUGE, \"connectionCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_TOTAL_GAUGE, \"connectionPoolCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_IDLE_GAUGE, \"connectionIdleCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_WAITING_GAUGE, \"connectionWaitingCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CORE_COUNT_GAUGE, \"coreCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.TIMER_GAUGE, \"timer\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_RX_GAUGE, \"rx\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_TX_GAUGE, \"tx\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.CPU_LOAD_GAUGE, \"cpu\", \"cpu_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.CPU_SYSTEM_LOAD_GAUGE, \"systemcpu\", \"systemcpu_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.DURATION_GAUGE, \"duration\", \"duration_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.LATENCY_GAUGE, \"latency\", \"latency_quantile\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.DURATION_HISTOGRAM_GAUGE, \"duration_histo\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.LATENCY_HISTOGRAM_GAUGE, \"latency_histo\");\n _ObservabilityModelUtils.ParseModelNodeObject(model, data, parseLog, Gauge.OBJECT_GAUGE, \"memory\");\n if (!subscribeToKafka) {\n model.instruments[Gauge.LOGGER] = _ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n }\n if (parseLog.length > 0) {\n parseLog.forEach((logEntry) => logger.debug(logEntry));\n }\n return model;\n } catch (error) {\n return null;\n }\n }\n static GetModelForAgent(id, data, subscribeToKafka, logger) {\n try {\n if (Object.keys(data).length === 0) {\n return null;\n }\n const parseLog = [];\n const model = {\n id,\n instruments: {}\n };\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.REQUEST_COUNT_GAUGE, \"requestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ERROR_COUNT_GAUGE, \"errorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.RETRY_COUNT_GAUGE, \"retryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_COUNT_GAUGE, \"authenticationCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, \"authenticationErrorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, \"authenticationRetryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.VELOCITY_GAUGE, \"velocity\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CORE_COUNT_GAUGE, \"coreCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.TIMER_GAUGE, \"timer\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ACTIVE_REQUEST_GAUGE, \"activeRequestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_RX_GAUGE, \"rx\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_TX_GAUGE, \"tx\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.DURATION_GAUGE, \"duration\", \"duration_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.LATENCY_GAUGE, \"latency\", \"latency_quantile\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.DURATION_HISTOGRAM_GAUGE, \"duration_histo\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.LATENCY_HISTOGRAM_GAUGE, \"latency_histo\");\n if (!subscribeToKafka) {\n model.instruments[Gauge.LOGGER] = _ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n }\n if (parseLog.length > 0) {\n parseLog.forEach((logEntry) => logger.debug(logEntry));\n }\n return model;\n } catch (error) {\n return null;\n }\n }\n};\n__publicField(_ObservabilityModelUtils, \"ParseModelNode\", (model, data, parseLog, gaugeName, fieldName) => {\n if (fieldName in data) {\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNode(data[fieldName]);\n } else {\n parseLog.push(`ObservabilityModelUtils:ParseModelNode(): Field not present: [${fieldName}], default to [0]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNode(0);\n }\n});\n__publicField(_ObservabilityModelUtils, \"ParseModelNodeWithQuantile\", (model, data, parseLog, gaugeName, fieldName, quantileFieldName) => {\n if (fieldName in data && quantileFieldName in data) {\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeWithQuantile(data[fieldName], data[quantileFieldName]);\n } else if (fieldName in data) {\n const dataVal = data[fieldName];\n parseLog.push(`ObservabilityModelUtils:ParseModelNodeWithQuantile(): QuantileFieldName not present: [${quantileFieldName}], default to [${dataVal},{}]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeWithQuantile(dataVal, {});\n } else {\n parseLog.push(`ObservabilityModelUtils:ParseModelNodeWithQuantile(): Field not present: [${fieldName}], QuantileFieldName not present: [${quantileFieldName}], default to [0,{}]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeWithQuantile(0, {});\n }\n});\n__publicField(_ObservabilityModelUtils, \"ParseModelNodeHisto\", (model, data, parseLog, gaugeName, fieldName) => {\n if (fieldName in data) {\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeHistFromInfluxData(data[fieldName]);\n } else {\n parseLog.push(`ObservabilityModelUtils:ParseModelNodeHisto(): Field not present: [${fieldName}], default to [{}]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeHistFromInfluxData({});\n }\n});\n__publicField(_ObservabilityModelUtils, \"ParseModelNodeObject\", (model, data, parseLog, gaugeName, fieldName) => {\n if (fieldName in data) {\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeObject(data[fieldName]);\n } else {\n parseLog.push(`ObservabilityModelUtils:ParseModelNodeObject(): Field not present: [${fieldName}], default to [{}]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeObject({});\n }\n});\nlet ObservabilityModelUtils = _ObservabilityModelUtils;\nclass KafkaHelper {\n constructor(options) {\n __privateAdd(this, _kafkaLog, {});\n __privateAdd(this, _maxLogLength, void 0);\n __publicField(this, \"GetKafkaLogData\", (kafkaTopic, modelNode) => {\n if (__privateGet(this, _kafkaLog)[kafkaTopic]) {\n modelNode.instruments[Gauge.LOGGER] = ObservabilityModelUtils.GetModelNodeRawStringArray(__privateGet(this, _kafkaLog)[kafkaTopic].kafkaLog);\n }\n });\n __publicField(this, \"ProcessKafkaData\", (payload) => {\n const { data } = payload;\n if (data) {\n const kafkaData = data;\n const { kafkaTopic, value } = kafkaData;\n if (!__privateGet(this, _kafkaLog)[kafkaTopic]) {\n __privateGet(this, _kafkaLog)[kafkaTopic] = {\n kafkaTopic: `${kafkaTopic}`,\n //@@ why is this needed\n kafkaLog: []\n };\n }\n __privateGet(this, _kafkaLog)[kafkaTopic].kafkaLog.push(value);\n while (__privateGet(this, _kafkaLog)[kafkaTopic].kafkaLog.length > __privateGet(this, _maxLogLength)) {\n __privateGet(this, _kafkaLog)[kafkaTopic].kafkaLog.shift();\n }\n }\n });\n __privateSet(this, _maxLogLength, options.maxLogLength);\n }\n}\n_kafkaLog = new WeakMap();\n_maxLogLength = new WeakMap();\nconst debug = debugModule(`proc:${process.pid}`);\nclass ObservabilityRESTAPISubscriber {\n constructor(options) {\n __privateAdd(this, _LogMessage);\n __privateAdd(this, _LogDebugMessage);\n __privateAdd(this, _LogErrorMessage);\n __privateAdd(this, _InvokeRESTAPI);\n __privateAdd(this, _SetupTimeout);\n __privateAdd(this, _AddKeepAlive);\n __privateAdd(this, _RemoveKeepAlive);\n __privateAdd(this, _socketSubscribeKeepAlive, {});\n __privateAdd(this, _options2, void 0);\n // This is required becuase each call to .bind create a new replica bound function - so we need the same instance for on/off event bindings.\n __publicField(this, \"KeepAliveAckBoundFunction\");\n __privateAdd(this, _GetData, async (subscription) => {\n try {\n const retVal = await __privateMethod(this, _InvokeRESTAPI, InvokeRESTAPI_fn).call(this, subscription);\n if (retVal) {\n const payload = {\n subscriptionKey: subscription.subscriptionKey,\n data: retVal\n };\n subscription.cb(payload);\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage, LogErrorMessage_fn).call(this, chalk$1.red(`ObservabilityRESTAPISubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subscription);\n }\n });\n __privateSet(this, _options2, options);\n }\n SubscribeOne(subscription) {\n this.Subscribe([subscription]);\n }\n async Subscribe(subscriptions) {\n subscriptions.map(async (subId) => {\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subId);\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.yellow(`ObservabilityRESTAPISubscriber:Subscribe(): Sending subscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n try {\n __privateMethod(this, _AddKeepAlive, AddKeepAlive_fn).call(this, subId);\n } catch (error) {\n __privateMethod(this, _LogErrorMessage, LogErrorMessage_fn).call(this, chalk$1.red(`ObservabilityRESTAPISubscriber:Subscribe(): Error: response: [${JSON.stringify(error)}]`));\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subId);\n }\n });\n }\n UnSubscribeOne(subscription) {\n this.UnSubscribe([subscription]);\n }\n UnSubscribe(subscriptions) {\n subscriptions.map(async (subId) => {\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subId);\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.yellow(`ObservabilityRESTAPISubscriber:UnSubscribe(): Sending unsubscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n });\n }\n}\n_socketSubscribeKeepAlive = new WeakMap();\n_options2 = new WeakMap();\n_LogMessage = new WeakSet();\nLogMessage_fn = function(message) {\n debug(message);\n};\n_LogDebugMessage = new WeakSet();\nLogDebugMessage_fn = function(message) {\n __privateGet(this, _options2).logger.debug(message);\n};\n_LogErrorMessage = new WeakSet();\nLogErrorMessage_fn = function(message) {\n __privateGet(this, _options2).logger.error(message);\n};\n_InvokeRESTAPI = new WeakSet();\nInvokeRESTAPI_fn = async function(subscription) {\n const { subscriptionKey } = subscription;\n let url = \"\";\n switch (subscriptionKey.topic) {\n case SubscriptionTopic.AllServicesCombined:\n url = `/metrics`;\n break;\n case SubscriptionTopic.Services:\n url = `/metrics/services`;\n break;\n case SubscriptionTopic.ServiceInstances:\n if (subscriptionKey.key) {\n url = `/metrics/services/${subscriptionKey.key}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Services): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.ServiceInstance:\n url = `/metrics/services/${subscriptionKey.key}`;\n if (subscriptionKey.key && subscriptionKey.subkey) {\n url = `/metrics/services/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Services): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.AllLambdasCombined:\n url = `/metrics`;\n break;\n case SubscriptionTopic.LambdaTechnologies:\n url = `/metrics/lambdas`;\n break;\n case SubscriptionTopic.LambdaSubTechnologies:\n if (subscriptionKey.key) {\n url = `/metrics/lambdas/${subscriptionKey.key}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Lambdas): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.LambdaSubTechnologiesInstance:\n url = `/metrics/lambdas/${subscriptionKey.key}`;\n if (subscriptionKey.key && subscriptionKey.subkey) {\n url = `/metrics/lambdas/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Lambdas): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.AllAgentsCombined:\n url = `/metrics`;\n break;\n case SubscriptionTopic.Agents:\n url = `/metrics/agents`;\n break;\n case SubscriptionTopic.AgentWorkers:\n if (subscriptionKey.key) {\n url = `/metrics/agents/${subscriptionKey.key}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Agents): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.AgentWorker:\n if (subscriptionKey.key && subscriptionKey.subkey) {\n url = `/metrics/agents/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Agents): key and/or subkey not provided for subscription: [${JSON.stringify(subscriptionKey.topic)}]`);\n }\n }\n if (url.localeCompare(\"\") !== 0) {\n const endPointUrl = `${__privateGet(this, _options2).urlBase}${url}`;\n const headers = {\n \"Content-Type\": \"application/json\"\n };\n let retVal;\n const start = performance.now();\n try {\n if (isNode && __privateGet(this, _options2).agent) {\n retVal = await axios({\n url: endPointUrl,\n method: \"get\",\n headers,\n httpsAgent: __privateGet(this, _options2).agent\n });\n } else {\n retVal = await axios({\n url: endPointUrl,\n method: \"get\",\n headers\n });\n }\n const end = performance.now();\n const diff = end - start;\n if (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined) === 0) {\n return retVal.data[\"services\"].data;\n }\n if (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined) === 0) {\n return retVal.data[\"agents\"].data;\n }\n if (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllLambdasCombined) === 0) {\n return retVal.data[\"lambdas\"].data;\n }\n return retVal.data;\n } catch (error) {\n return null;\n }\n } else {\n return null;\n }\n};\n_GetData = new WeakMap();\n_SetupTimeout = new WeakSet();\nSetupTimeout_fn = function(socketSubscribeKeepAlive, subscription, timeout) {\n return setTimeout(async () => {\n try {\n const start = performance.now();\n await __privateGet(this, _GetData).call(this, subscription);\n if (socketSubscribeKeepAlive.timeout) {\n const end = performance.now();\n const diff = end - start;\n let timeoutDuration = __privateGet(this, _options2).keepAlive - diff;\n if (timeoutDuration < 500) {\n timeoutDuration = 500;\n }\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.yellow(`Total duration for subscription: [${diff}], waiting: [${timeoutDuration}]`));\n socketSubscribeKeepAlive.timeout = __privateMethod(this, _SetupTimeout, SetupTimeout_fn).call(this, socketSubscribeKeepAlive, subscription, timeoutDuration);\n } else {\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.yellow(`Subscription removed: [${socketSubscribeKeepAlive.id}]. Processing terminate.`));\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage, LogErrorMessage_fn).call(this, chalk$1.red(`ObservabilityRESTAPISubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subscription);\n }\n }, timeout);\n};\n_AddKeepAlive = new WeakSet();\nAddKeepAlive_fn = function(subscription) {\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subscription);\n const socketSubscribeKeepAlive = {\n id: subscription.subscriptionKey.id\n };\n socketSubscribeKeepAlive.timeout = __privateMethod(this, _SetupTimeout, SetupTimeout_fn).call(this, socketSubscribeKeepAlive, subscription, __privateGet(this, _options2).keepAlive);\n __privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id] = socketSubscribeKeepAlive;\n __privateGet(this, _GetData).call(this, subscription);\n};\n_RemoveKeepAlive = new WeakSet();\nRemoveKeepAlive_fn = function(subscription) {\n if (__privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id]) {\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.gray(`ObservabilityRESTAPISubscriber:#RemoveKeepAlive(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n clearTimeout(__privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id].timeout);\n delete __privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id].timeout;\n delete __privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id];\n }\n};\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n if (!getRandomValues) {\n getRandomValues = typeof crypto !== \"undefined\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n }\n }\n return getRandomValues(rnds8);\n}\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 256).toString(16).slice(1));\n}\nfunction unsafeStringify(arr, offset = 0) {\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + \"-\" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + \"-\" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + \"-\" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + \"-\" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\nconst randomUUID = typeof crypto !== \"undefined\" && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nconst native = {\n randomUUID\n};\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = rnds[6] & 15 | 64;\n rnds[8] = rnds[8] & 63 | 128;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nclass SocketIoMessageSender {\n constructor(options) {\n __privateAdd(this, _LogDebugMessage2);\n __privateAdd(this, _GetSubscribeKeepAliveAckEventName);\n __privateAdd(this, _messageWithAckPayloadRecords, {});\n __privateAdd(this, _socket, void 0);\n __privateAdd(this, _maxReties, 3);\n //@@\n __privateAdd(this, _timeoutValue, 5e3);\n //@@\n __privateAdd(this, _options3, void 0);\n __privateSet(this, _options3, options);\n __privateSet(this, _socket, options.socket);\n }\n get socket() {\n return __privateGet(this, _socket);\n }\n set socket(socket) {\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.cyan(`SocketIoMessageSender:set socket(): new socket assigned`));\n __privateSet(this, _socket, socket);\n }\n AckListener(message, payload) {\n if (message.subscriptionKey.id.localeCompare(payload.id) === 0) {\n clearTimeout(message.timeoutId);\n delete message.timeoutId;\n __privateGet(this, _socket).off(__privateMethod(this, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn).call(this, message.eventName, message.subscriptionKey), message.BoundAckListenerCallback);\n message.endTime = performance.now();\n message.duration = message.endTime - message.startTime;\n message.status = \"SUCCESS\";\n message.subscriptionKeyResponse = payload;\n delete __privateGet(this, _messageWithAckPayloadRecords)[message.id];\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.grey(`SocketIoMessageSender:AckListener(): ack received, event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n message.resolve(message);\n }\n }\n ResponseTimout(message) {\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.magenta(`SocketIoMessageSender:ResponseTimout(): timeout reached: [${__privateGet(this, _timeoutValue)}], event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n delete message.timeoutId;\n __privateGet(this, _socket).off(__privateMethod(this, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn).call(this, message.eventName, message.subscriptionKey), message.BoundAckListenerCallback);\n message.endTime = performance.now();\n if (message.retryCount >= __privateGet(this, _maxReties)) {\n message.status = \"FAIL\";\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.red(`SocketIoMessageSender:ResponseTimout(): timeout reached after ${__privateGet(this, _maxReties)} retries, event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n delete __privateGet(this, _messageWithAckPayloadRecords)[message.id];\n message.reject(message);\n return;\n }\n message.status = \"INRETRY\";\n message.retryCount++;\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.magenta(`SocketIoMessageSender:ResponseTimout(): timeout reached, retrying. Retries: [${message.retryCount}], event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n this.SendMessage(message);\n }\n SendMessage(message) {\n message.startTime = performance.now();\n message.timeoutId = setTimeout(() => {\n this.ResponseTimout(message);\n }, __privateGet(this, _timeoutValue));\n const AckListenerCallback = (payload) => {\n this.AckListener(message, payload);\n };\n message.BoundAckListenerCallback = AckListenerCallback.bind(this);\n __privateGet(this, _socket).on(__privateMethod(this, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn).call(this, message.eventName, message.subscriptionKey), message.BoundAckListenerCallback);\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.gray(`SocketIoMessageSender:SendMessage(): event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n __privateGet(this, _socket).emit(message.eventName, message.subscriptionKey);\n }\n SendMessageWithAck(eventName, subscriptionKey) {\n const promise = new Promise((resolve, reject) => {\n const message = {\n id: v4(),\n subscriptionKey,\n retryCount: 0,\n startTime: performance.now(),\n status: \"INPROGRESS\",\n eventName,\n resolve,\n reject\n };\n __privateGet(this, _messageWithAckPayloadRecords)[message.id] = message;\n this.SendMessage(message);\n });\n return promise;\n }\n KillMessageInFlight(subscriptionKey) {\n const killIds = [];\n for (const [, message] of Object.entries(__privateGet(this, _messageWithAckPayloadRecords))) {\n if (message.subscriptionKey.id.localeCompare(subscriptionKey.id) === 0) {\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.blue(`SocketIoMessageSender:KillMessageInFlight(): event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n clearTimeout(message.timeoutId);\n delete message.timeoutId;\n __privateGet(this, _socket).off(__privateMethod(this, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn).call(this, message.eventName, message.subscriptionKey), message.BoundAckListenerCallback);\n killIds.push(message.id);\n message.status = \"KILLED\";\n message.reject(message);\n }\n }\n killIds.forEach((id) => {\n delete __privateGet(this, _messageWithAckPayloadRecords)[id];\n });\n }\n}\n_messageWithAckPayloadRecords = new WeakMap();\n_socket = new WeakMap();\n_maxReties = new WeakMap();\n_timeoutValue = new WeakMap();\n_options3 = new WeakMap();\n_LogDebugMessage2 = new WeakSet();\nLogDebugMessage_fn2 = function(message) {\n __privateGet(this, _options3).logger.debug(message);\n};\n_GetSubscribeKeepAliveAckEventName = new WeakSet();\nGetSubscribeKeepAliveAckEventName_fn = function(eventName, subscriptionKey) {\n return `${eventName}Ack_${subscriptionKey.id}`;\n};\nclass ObservabilitySocketIOSubscriber {\n constructor(options) {\n __privateAdd(this, _LogDebugMessage3);\n __privateAdd(this, _LogErrorMessage2);\n __privateAdd(this, _AddKeepAlive2);\n __privateAdd(this, _RemoveKeepAlive2);\n __privateAdd(this, _socketSubscribeKeepAlive2, {});\n __privateAdd(this, _socket2, void 0);\n __privateAdd(this, _options4, void 0);\n __privateAdd(this, _socketIoMessageSender, void 0);\n // This is required becuase each call to .bind create a new replica bound function - so we need the same instance for on/off event bindings.\n __publicField(this, \"KeepAliveAckBoundFunction\");\n __privateSet(this, _options4, options);\n __privateSet(this, _socket2, options.socket);\n __privateSet(this, _socketIoMessageSender, new SocketIoMessageSender({\n socket: __privateGet(this, _socket2),\n logger: __privateGet(this, _options4).logger\n }));\n }\n get socket() {\n return __privateGet(this, _socket2);\n }\n set socket(socket) {\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.cyan(`ObservabilitySocketIOSubscriber:set socket(): new socket assigned`));\n __privateSet(this, _socket2, socket);\n __privateGet(this, _socketIoMessageSender).socket = socket;\n }\n SubscribeOne(subscription) {\n this.Subscribe([subscription]);\n }\n async Subscribe(subscriptions) {\n const socket = __privateGet(this, _socket2);\n subscriptions.map(async (subId) => {\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subId);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.yellow(`ObservabilitySocketIOSubscriber:Subscribe(): Sending subscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n try {\n const retVal = await __privateGet(this, _socketIoMessageSender).SendMessageWithAck(\"subscribe\", subId.subscriptionKey);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.green(`ObservabilitySocketIOSubscriber:Subscribe(): SendMessageWithAck response: [${JSON.stringify(retVal)}]`));\n __privateMethod(this, _AddKeepAlive2, AddKeepAlive_fn2).call(this, socket, subId);\n socket.on(GetSocketIOSubscriptionKey(subId.subscriptionKey), subId.cb);\n } catch (error) {\n __privateMethod(this, _LogErrorMessage2, LogErrorMessage_fn2).call(this, chalk$1.red(`ObservabilitySocketIOSubscriber:Subscribe(): Error: response: [${JSON.stringify(error)}]`));\n socket.off(GetSocketIOSubscriptionKey(subId.subscriptionKey), subId.cb);\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subId);\n }\n });\n }\n UnSubscribeOne(subscription) {\n this.UnSubscribe([subscription]);\n }\n UnSubscribe(subscriptions) {\n const socket = __privateGet(this, _socket2);\n subscriptions.map(async (subId) => {\n socket.off(GetSocketIOSubscriptionKey(subId.subscriptionKey), subId.cb);\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subId);\n __privateGet(this, _socketIoMessageSender).KillMessageInFlight(subId.subscriptionKey);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.yellow(`ObservabilitySocketIOSubscriber:UnSubscribe(): Sending unsubscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n try {\n const retVal = await __privateGet(this, _socketIoMessageSender).SendMessageWithAck(\"unsubscribe\", subId.subscriptionKey);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.green(`ObservabilitySocketIOSubscriber:UnSubscribe(): SendMessageWithAck response: [${JSON.stringify(retVal)}]`));\n } catch (error) {\n __privateMethod(this, _LogErrorMessage2, LogErrorMessage_fn2).call(this, chalk$1.red(`ObservabilitySocketIOSubscriber:UnSubscribe(): Error response: [${JSON.stringify(error)}]`));\n }\n });\n }\n /*\n override SocketIOConnect(socket: Socket<ServerToClientEvents, ClientToServerEvents>): void {\n if (this.#observabilitySocketIOSubscriber instanceof ObservabilitySocketIOSubscriber) {\n if (socket.id.localeCompare((this.#observabilitySocketIOSubscriber as ObservabilitySocketIOSubscriber).socket.id) === 0) {\n //this.#LogMessage(chalk.gray(`Socket ids are the same - ignoring`));\n } else {\n //this.#LogMessage(chalk.yellow(`Socket ids are different - update with new socket`));\n (this.#observabilitySocketIOSubscriber as ObservabilitySocketIOSubscriber).socket = socket;\n this.#observabilitySubscriptionManager.Start();\n }\n }\n }\n */\n}\n_socketSubscribeKeepAlive2 = new WeakMap();\n_socket2 = new WeakMap();\n_options4 = new WeakMap();\n_socketIoMessageSender = new WeakMap();\n_LogDebugMessage3 = new WeakSet();\nLogDebugMessage_fn3 = function(message) {\n __privateGet(this, _options4).logger.debug(message);\n};\n_LogErrorMessage2 = new WeakSet();\nLogErrorMessage_fn2 = function(message) {\n __privateGet(this, _options4).logger.error(message);\n};\n_AddKeepAlive2 = new WeakSet();\nAddKeepAlive_fn2 = function(socket, subscription) {\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subscription);\n __privateGet(this, _socketSubscribeKeepAlive2)[subscription.subscriptionKey.id] = {\n id: subscription.subscriptionKey.id,\n timeout: setTimeout(async () => {\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.yellow(`ObservabilitySocketIOSubscriber:#AddKeepAlive:timeoutCheck(): Sending keepAlive: subscriptionKey: [${subscription.subscriptionKey.id}]`));\n try {\n const retVal = await __privateGet(this, _socketIoMessageSender).SendMessageWithAck(\"subscribeKeepAlive\", subscription.subscriptionKey);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.green(`ObservabilitySocketIOSubscriber:#AddKeepAlive(): SendMessageWithAck response: [${JSON.stringify(retVal)}]`));\n __privateMethod(this, _AddKeepAlive2, AddKeepAlive_fn2).call(this, socket, subscription);\n } catch (error) {\n __privateMethod(this, _LogErrorMessage2, LogErrorMessage_fn2).call(this, chalk$1.red(`ObservabilitySocketIOSubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n socket.off(GetSocketIOSubscriptionKey(subscription.subscriptionKey), subscription.cb);\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subscription);\n }\n }, __privateGet(this, _options4).keepAlive)\n };\n};\n_RemoveKeepAlive2 = new WeakSet();\nRemoveKeepAlive_fn2 = function(subscription) {\n if (__privateGet(this, _socketSubscribeKeepAlive2)[subscription.subscriptionKey.id]) {\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.gray(`ObservabilitySocketIOSubscriber:#RemoveKeepAlive(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n clearTimeout(__privateGet(this, _socketSubscribeKeepAlive2)[subscription.subscriptionKey.id].timeout);\n delete __privateGet(this, _socketSubscribeKeepAlive2)[subscription.subscriptionKey.id];\n }\n};\nclass ObservabilitySubscriptionManager {\n constructor(options) {\n __privateAdd(this, _LogDebugMessage4);\n __privateAdd(this, _LogErrorMessage3);\n __privateAdd(this, _observabilitySocketIOSubscriber, null);\n __privateAdd(this, _subscriptions, []);\n __privateAdd(this, _kafkaHelper, void 0);\n __privateAdd(this, _serviceModel, {});\n __privateAdd(this, _agentModel, {});\n __privateAdd(this, _lambdaModel, {});\n __privateAdd(this, _options5, void 0);\n __privateSet(this, _options5, options);\n __privateSet(this, _kafkaHelper, new KafkaHelper({\n maxLogLength: __privateGet(this, _options5).maxLogLength\n }));\n }\n get observabilitySocketIOSubscriber() {\n return __privateGet(this, _observabilitySocketIOSubscriber);\n }\n set observabilitySocketIOSubscriber(observabilitySocketIOSubscriber) {\n __privateSet(this, _observabilitySocketIOSubscriber, observabilitySocketIOSubscriber);\n }\n get subscriptions() {\n return __privateGet(this, _subscriptions);\n }\n set subscriptions(subscriptions) {\n __privateSet(this, _subscriptions, subscriptions);\n }\n get serviceModel() {\n return __privateGet(this, _serviceModel);\n }\n get agentModel() {\n return __privateGet(this, _agentModel);\n }\n get lambdaModel() {\n return __privateGet(this, _lambdaModel);\n }\n AddSubscriptions(subscriptions) {\n var _a2;\n const subscriptionsToAdd = [];\n subscriptions.map((subscription) => {\n const retVal = this.subscriptions.find((v) => v.subscriptionKey.id.localeCompare(subscription.subscriptionKey.id) === 0);\n if (retVal) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.magenta(`AddSubscription(): Subscription: [${retVal.subscriptionKey.id}] already exists - ignoring.`));\n } else {\n subscriptionsToAdd.push(subscription);\n }\n });\n if (subscriptionsToAdd.length > 0) {\n subscriptionsToAdd.map((s) => this.subscriptions.push(s));\n (_a2 = __privateGet(this, _observabilitySocketIOSubscriber)) == null ? void 0 : _a2.Subscribe(subscriptionsToAdd);\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.magenta(`AddSubscription(): No valid subscriptions to subscribe.`));\n }\n }\n RemoveSubscriptionsByKey(keyToFind) {\n var _a2;\n const newSubscriptions = [];\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (((_a2 = this.subscriptions[i].subscriptionKey.key) == null ? void 0 : _a2.localeCompare(keyToFind)) === 0) {\n if (__privateGet(this, _observabilitySocketIOSubscriber)) {\n __privateGet(this, _observabilitySocketIOSubscriber).UnSubscribeOne(this.subscriptions[i]);\n }\n } else {\n newSubscriptions.push(this.subscriptions[i]);\n }\n }\n __privateSet(this, _subscriptions, newSubscriptions);\n }\n FindSubscriptionByKey(keyToFind) {\n var _a2;\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (((_a2 = this.subscriptions[i].subscriptionKey.key) == null ? void 0 : _a2.localeCompare(keyToFind)) === 0) {\n return this.subscriptions[i];\n }\n }\n return void 0;\n }\n FindSubscriptionByKeyAndSubKey(keyToFind, subKeyToFind) {\n var _a2, _b;\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (((_a2 = this.subscriptions[i].subscriptionKey.key) == null ? void 0 : _a2.localeCompare(keyToFind)) === 0) {\n if (((_b = this.subscriptions[i].subscriptionKey.subkey) == null ? void 0 : _b.localeCompare(subKeyToFind)) === 0) {\n return this.subscriptions[i];\n }\n }\n }\n return void 0;\n }\n Start() {\n if (__privateGet(this, _observabilitySocketIOSubscriber)) {\n __privateGet(this, _observabilitySocketIOSubscriber).Subscribe(this.subscriptions);\n }\n }\n Stop() {\n if (__privateGet(this, _observabilitySocketIOSubscriber)) {\n __privateGet(this, _observabilitySocketIOSubscriber).UnSubscribe(this.subscriptions);\n }\n }\n TransformSubscriptionPayloadCallback(subscriptionPayload, subscribeToKafka) {\n switch (subscriptionPayload.subscriptionKey.topic) {\n case SubscriptionTopic.AllServicesCombined:\n this.CreateModelAllServicesCombined(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.Services:\n this.CreateModelServices(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.ServiceInstances:\n this.CreateModelServiceInstances(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.ServiceInstance:\n this.CreateModelServiceInstance(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.AllLambdasCombined:\n this.CreateModelAllLambdasCombined(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.LambdaTechnologies:\n this.CreateModelLambdaTechnologies(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.LambdaSubTechnologies:\n this.CreateModelLambdaSubTechnologies(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.LambdaSubTechnologiesInstance:\n this.CreateModelLambdaSubTechnologiesInstance(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.AllAgentsCombined:\n this.CreateModelAllAgentsCombined(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.Agents:\n this.CreateModelAgents(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.AgentWorkers:\n this.CreateModelAgentWorkers(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.AgentWorker:\n this.CreateModelAgentWorker(subscriptionPayload, subscribeToKafka);\n break;\n }\n }\n // --- [ Services ] ------------------------------------------------------------------------------------------------------------------------------------------------\n // /\n CreateModelAllServicesCombined(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _serviceModel, {});\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined.toString()) === 0) {\n __privateGet(this, _serviceModel)[\"STS-Service\"] = ObservabilityModelUtils.GetModelForService(\"STS-Service\", subscriptionPayload.data, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _serviceModel)[\"STS-Service\"] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAllServicesCombined():Error: GetModelForService() returned null`));\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, error);\n return;\n }\n }\n // /serviceId\n CreateModelServices(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _serviceModel, {});\n for (const [serviceId, serviceTelemetry] of Object.entries(subscriptionPayload.data)) {\n __privateGet(this, _serviceModel)[serviceId] = ObservabilityModelUtils.GetModelForService(serviceId, serviceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _serviceModel)[serviceId] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelServices():Error: GetModelForService() returned null`));\n }\n }\n } catch (error) {\n return;\n }\n }\n // /serviceId/serviceInstanceId\n CreateModelServiceInstances(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _serviceModel, {});\n for (const [serviceId, service] of Object.entries(subscriptionPayload.data)) {\n for (const [serviceInstanceId, serviceInstanceTelemetry] of Object.entries(service)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${serviceInstanceId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (serviceInstanceTelemetry.cpu && serviceInstanceTelemetry.cpu > 0) {\n __privateGet(this, _serviceModel)[serviceInstanceId] = ObservabilityModelUtils.GetModelForService(serviceInstanceId, serviceInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _serviceModel)[serviceInstanceId] !== null) {\n __privateGet(this, _serviceModel)[serviceInstanceId].options = { serviceId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _serviceModel)[serviceInstanceId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelServiceInstances():Error: GetModelForService() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n } catch (error) {\n return;\n }\n }\n // serviceId/serviceInstanceId/serviceInstanceProcessId\n CreateModelServiceInstance(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _serviceModel, {});\n for (const [serviceId, service] of Object.entries(subscriptionPayload.data)) {\n for (const [serviceInstanceId, serviceInstance] of Object.entries(service)) {\n for (const [serviceInstanceProcessId, serviceInstanceProcessTelemetry] of Object.entries(serviceInstance)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${serviceInstanceId}_${serviceInstanceProcessId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (serviceInstanceProcessTelemetry.cpu && serviceInstanceProcessTelemetry.cpu > 0) {\n __privateGet(this, _serviceModel)[serviceInstanceProcessId] = ObservabilityModelUtils.GetModelForService(serviceInstanceProcessId, serviceInstanceProcessTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _serviceModel)[serviceInstanceProcessId] !== null) {\n __privateGet(this, _serviceModel)[serviceInstanceProcessId].options = { serviceId, serviceInstanceId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _serviceModel)[serviceInstanceProcessId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelServiceInstance():Error: GetModelForService() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n }\n } catch (error) {\n return;\n }\n }\n // --- [ Agents ] ------------------------------------------------------------------------------------------------------------------------------------------------\n // /\n CreateModelAllAgentsCombined(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _agentModel, {});\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined.toString()) === 0) {\n if (Object.keys(subscriptionPayload.data).length !== 0) {\n __privateGet(this, _agentModel)[\"STS-Agent\"] = ObservabilityModelUtils.GetModelForAgent(\"STS-Agent\", subscriptionPayload.data, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _agentModel)[\"STS-Agent\"] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAllAgentsCombined():Error: GetModelForAgent() returned null`));\n }\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, error);\n return;\n }\n }\n // /agentId\n CreateModelAgents(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _agentModel, {});\n for (const [agentId, agentInstanceTelemetry] of Object.entries(subscriptionPayload.data)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${agentId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (agentInstanceTelemetry.timer) {\n __privateGet(this, _agentModel)[agentId] = ObservabilityModelUtils.GetModelForAgent(agentId, agentInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _agentModel)[agentId] !== null) {\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _agentModel)[agentId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAgents():Error: GetModelForAgent() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, chalk$1.red(`UIControllerAgent:CreateModel(): Error: [${error}]`));\n }\n }\n // /agentId/agentWorkerId\n CreateModelAgentWorkers(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _agentModel, {});\n for (const [agentId, agentWorker] of Object.entries(subscriptionPayload.data)) {\n for (const [agentWorkerId, agentInstanceTelemetry] of Object.entries(agentWorker)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${agentId}_${agentWorkerId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (agentInstanceTelemetry.timer) {\n const threadKey = `${agentWorkerId}`;\n __privateGet(this, _agentModel)[threadKey] = ObservabilityModelUtils.GetModelForAgent(threadKey, agentInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _agentModel)[threadKey] !== null) {\n const coreCount = __privateGet(this, _agentModel)[threadKey].instruments[Gauge.CORE_COUNT_GAUGE].val;\n __privateGet(this, _agentModel)[threadKey].canNavigate = coreCount > 0;\n __privateGet(this, _agentModel)[threadKey].options = { agentId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _agentModel)[threadKey]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAgentWorkers():Error: GetModelForAgent() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, chalk$1.red(`UIControllerAgentThreads:CreateModel(): Error: [${error}]`));\n }\n }\n // /agentId/agentWorkerId/asyncRunnerId\n CreateModelAgentWorker(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _agentModel, {});\n for (const [agentId, agentWorker] of Object.entries(subscriptionPayload.data)) {\n for (const [agentWorkerId, asyncRunnerData] of Object.entries(agentWorker)) {\n for (const [asyncRunnerId, agentInstanceTelemetry] of Object.entries(asyncRunnerData)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${agentId}_${agentWorkerId}_${asyncRunnerId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (agentInstanceTelemetry.timer) {\n __privateGet(this, _agentModel)[asyncRunnerId] = ObservabilityModelUtils.GetModelForAgent(asyncRunnerId, agentInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _agentModel)[asyncRunnerId] !== null) {\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _agentModel)[asyncRunnerId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAgentWorker():Error: GetModelForAgent() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, chalk$1.red(`UIControllerAgentThread:CreateModel(): Error: [${error}]`));\n }\n }\n // --- [ Lambdas ] ------------------------------------------------------------------------------------------------------------------------------------------------\n // /\n CreateModelAllLambdasCombined(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _lambdaModel, {});\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllLambdasCombined.toString()) === 0) {\n __privateGet(this, _lambdaModel)[\"STS-Lambda\"] = ObservabilityModelUtils.GetModelForLambda(\"STS-Lambda\", subscriptionPayload.data, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _lambdaModel)[\"STS-Lambda\"] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAllLambdasCombined():Error: GetModelForLambda() returned null`));\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, error);\n return;\n }\n }\n // /technologyId\n CreateModelLambdaTechnologies(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _lambdaModel, {});\n for (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) {\n __privateGet(this, _lambdaModel)[technologyId] = ObservabilityModelUtils.GetModelForLambda(technologyId, technologyTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _lambdaModel)[technologyId] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelLambdaTechnologies():Error: GetModelForLambda() returned null`));\n }\n }\n } catch (error) {\n return;\n }\n }\n // /technologyId/subTechnologyId\n CreateModelLambdaSubTechnologies(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _lambdaModel, {});\n for (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) {\n for (const [subTechnologyId, subTechnologyTelemetry] of Object.entries(technologyTelemetry)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${subTechnologyId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (subTechnologyTelemetry.cpu && subTechnologyTelemetry.cpu > 0) {\n __privateGet(this, _lambdaModel)[subTechnologyId] = ObservabilityModelUtils.GetModelForLambda(subTechnologyId, subTechnologyTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _lambdaModel)[subTechnologyId] !== null) {\n __privateGet(this, _lambdaModel)[subTechnologyId].options = { technologyId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _lambdaModel)[subTechnologyId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelLambdaSubTechnologies():Error: GetModelForLambda() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n } catch (error) {\n return;\n }\n }\n // /technologyId/subTechnologyId/subTechnologyInstanceId\n CreateModelLambdaSubTechnologiesInstance(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _lambdaModel, {});\n for (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) {\n for (const [subTechnologyId, subTechnologyTelemetry] of Object.entries(technologyTelemetry)) {\n for (const [subTechnologyInstanceId, subTechnologyInstanceTelemetry] of Object.entries(subTechnologyTelemetry)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${subTechnologyId}_${subTechnologyInstanceId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (subTechnologyInstanceTelemetry.cpu && subTechnologyInstanceTelemetry.cpu > 0) {\n __privateGet(this, _lambdaModel)[subTechnologyInstanceId] = ObservabilityModelUtils.GetModelForLambda(subTechnologyInstanceId, subTechnologyInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _lambdaModel)[subTechnologyInstanceId] !== null) {\n __privateGet(this, _lambdaModel)[subTechnologyInstanceId].options = { technologyId, subTechnologyId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _lambdaModel)[subTechnologyInstanceId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelLambdaSubTechnologiesInstance():Error: GetModelForLambda() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n }\n } catch (error) {\n return;\n }\n }\n}\n_observabilitySocketIOSubscriber = new WeakMap();\n_subscriptions = new WeakMap();\n_kafkaHelper = new WeakMap();\n_serviceModel = new WeakMap();\n_agentModel = new WeakMap();\n_lambdaModel = new WeakMap();\n_options5 = new WeakMap();\n_LogDebugMessage4 = new WeakSet();\nLogDebugMessage_fn4 = function(message) {\n __privateGet(this, _options5).logger.debug(message);\n};\n_LogErrorMessage3 = new WeakSet();\nLogErrorMessage_fn3 = function(message) {\n __privateGet(this, _options5).logger.error(message);\n};\nclass SocketIoClientHelper {\n constructor(options) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n __privateAdd(this, _LogDebugMessage5);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n __privateAdd(this, _LogErrorMessage4);\n __privateAdd(this, _EstablishSocketConnect);\n __privateAdd(this, _options6, void 0);\n __privateAdd(this, _sockets, {});\n __privateAdd(this, _httpsAgent2, null);\n __privateSet(this, _options6, options);\n if (isNode) {\n const agentOptions = __privateGet(this, _options6).agentOptions;\n __privateSet(this, _httpsAgent2, new https.Agent({\n keepAlive: agentOptions == null ? void 0 : agentOptions.keepAlive,\n maxSockets: agentOptions == null ? void 0 : agentOptions.maxSockets,\n maxTotalSockets: agentOptions == null ? void 0 : agentOptions.maxTotalSockets,\n maxFreeSockets: agentOptions == null ? void 0 : agentOptions.maxFreeSockets,\n timeout: agentOptions == null ? void 0 : agentOptions.timeout,\n rejectUnauthorized: agentOptions == null ? void 0 : agentOptions.rejectUnauthorized\n // Allows self signed certs in non production mode(s)\n }));\n }\n }\n get sockets() {\n return __privateGet(this, _sockets);\n }\n SetupClientSideSocket(name, address, onConnectCallBack, socketEventsCallBack, errorCallBack) {\n this.sockets[name] = {\n name,\n address,\n socket: null,\n errorCallBack\n };\n __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack);\n return this.sockets[name].socket;\n }\n GetSocket(name) {\n return this.sockets[name].socket;\n }\n GetSocketDetail(name) {\n return this.sockets[name];\n }\n}\n_options6 = new WeakMap();\n_sockets = new WeakMap();\n_httpsAgent2 = new WeakMap();\n_LogDebugMessage5 = new WeakSet();\nLogDebugMessage_fn5 = function(message) {\n if (__privateGet(this, _options6).logger)\n __privateGet(this, _options6).logger.debug(message);\n};\n_LogErrorMessage4 = new WeakSet();\nLogErrorMessage_fn4 = function(message) {\n if (__privateGet(this, _options6).logger)\n __privateGet(this, _options6).logger.error(message);\n};\n_EstablishSocketConnect = new WeakSet();\nEstablishSocketConnect_fn = function(name, onConnectCallBack, socketEventsCallBack) {\n const socketDetail = this.sockets[name];\n if (socketDetail.socket !== null) {\n if (socketDetail.socket.connected === true) {\n socketDetail.socket.disconnect();\n }\n socketDetail.socket = null;\n if (isNode) {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100).unref();\n } else {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100);\n }\n return;\n }\n let socketOptions;\n if (isNode) {\n socketOptions = {\n transports: [\"websocket\"],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n agent: __privateGet(this, _httpsAgent2)\n // Custom https agent\n };\n } else {\n socketOptions = {\n transports: [\"websocket\"]\n };\n }\n socketDetail.socket = io(socketDetail.address, socketOptions);\n socketDetail.socket.on(\"connect\", () => {\n if (socketDetail.socket) {\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, `Socket: [${socketDetail.socket.id}]: connected`);\n if (onConnectCallBack) {\n setTimeout(() => {\n onConnectCallBack(socketDetail.socket);\n }, 0);\n }\n if (socketEventsCallBack) {\n socketEventsCallBack(socketDetail.socket);\n }\n } else {\n const errorMessage = \"Could not get socket object from socket.io\";\n __privateMethod(this, _LogErrorMessage4, LogErrorMessage_fn4).call(this, errorMessage);\n socketDetail.errorCallBack(new Error(errorMessage));\n }\n });\n socketDetail.socket.on(\"disconnect\", (reason) => {\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"socket disconnect: \" + reason);\n switch (reason) {\n case \"io server disconnect\":\n {\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The server disconnected using disconnectSockets, i.e. normal safe shutdown from explicit disconnection by the server.\");\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The connection will be re-established when the server becomes available.\");\n const socketDetail2 = this.sockets[name];\n socketDetail2.socket = null;\n if (isNode) {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100).unref();\n } else {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100);\n }\n }\n break;\n case \"io client disconnect\":\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The client disconnected using disconnectSockets, i.e. normal safe disconnection from explicit disconnection by the client.\");\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The connection will not be re-established automatically.\");\n break;\n case \"transport close\":\n case \"ping timeout\":\n case \"transport error\":\n {\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, `Server unexpectedly disconnected. Reason: [${reason}]`);\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The connection will be re-established when the server becomes available.\");\n const socketDetail2 = this.sockets[name];\n if (socketDetail2.socket) {\n socketDetail2.socket.disconnect();\n }\n socketDetail2.socket = null;\n if (isNode) {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100).unref();\n } else {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100);\n }\n }\n break;\n }\n });\n};\nvar influxDBDataType = /* @__PURE__ */ ((influxDBDataType2) => {\n influxDBDataType2[\"intField\"] = \"intField\";\n influxDBDataType2[\"floatField\"] = \"floatField\";\n influxDBDataType2[\"stringField\"] = \"stringField\";\n return influxDBDataType2;\n})(influxDBDataType || {});\nconst globalServiceDefinitions = {\n coreFieldList: [\n {\n fieldName: \"requestCount\",\n gauge: Gauge.REQUEST_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"errorCount\",\n gauge: Gauge.ERROR_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"retryCount\",\n gauge: Gauge.RETRY_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"authenticationCount\",\n gauge: Gauge.AUTHENTICATION_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"authenticationErrorCount\",\n gauge: Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"authenticationRetryCount\",\n gauge: Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"velocity\",\n gauge: Gauge.VELOCITY_GAUGE,\n instrumentProperty: \"va\",\n dataType: \"number\",\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"activeRequestCount\",\n gauge: Gauge.ACTIVE_REQUEST_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"coreCount\",\n gauge: Gauge.CORE_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"rx\",\n gauge: Gauge.NETWORK_RX_GAUGE,\n instrumentProperty: \"va\",\n dataType: \"number\",\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"tx\",\n gauge: Gauge.NETWORK_TX_GAUGE,\n instrumentProperty: \"va\",\n dataType: \"number\",\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"timer\",\n gauge: Gauge.TIMER_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"duration\",\n gauge: Gauge.DURATION_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\",\n histo: [\n { label: \"B10\", bucketLimit: 10 },\n { label: \"B20\", bucketLimit: 20 },\n { label: \"B50\", bucketLimit: 50 },\n { label: \"B100\", bucketLimit: 100 },\n { label: \"B1000\", bucketLimit: 1e3 },\n { label: \"B50000\", bucketLimit: 5e4 },\n { label: \"BInfinity\", bucketLimit: -1 }\n ]\n },\n {\n fieldName: \"latency\",\n gauge: Gauge.LATENCY_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\",\n histo: [\n { label: \"B10\", bucketLimit: 10 },\n { label: \"B20\", bucketLimit: 20 },\n { label: \"B50\", bucketLimit: 50 },\n { label: \"B100\", bucketLimit: 100 },\n { label: \"B1000\", bucketLimit: 1e3 },\n { label: \"B50000\", bucketLimit: 5e4 },\n { label: \"BInfinity\", bucketLimit: -1 }\n ]\n }\n ],\n services: {\n [\"service\"]: {\n influxDBContextTags: [\n \"serviceId\",\n \"serviceName\",\n \"serviceVersion\",\n \"serviceInstanceId\",\n \"serviceInstanceProcessId\",\n \"hostName\",\n \"pid\",\n \"ppid\"\n ],\n redisIndexPrefixDefinitions: {\n timeSeriesIndex: \"idx:serviceIndexTimeSeries\",\n timeSeriesPrefix: \"/serviceTimeSeries:\",\n instantIndex: \"idx:serviceIndexInstant\",\n instantPrefix: \"/serviceInstant:\"\n },\n fieldList: [\n {\n fieldName: \"cpu\",\n gauge: Gauge.CPU_LOAD_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"connectionCount\",\n gauge: Gauge.CONNECTION_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionPoolCount\",\n gauge: Gauge.CONNECTION_POOL_TOTAL_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionIdleCount\",\n gauge: Gauge.CONNECTION_POOL_IDLE_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionWaitingCount\",\n gauge: Gauge.CONNECTION_POOL_WAITING_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"systemcpu\",\n gauge: Gauge.CPU_SYSTEM_LOAD_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"memory\",\n gauge: Gauge.OBJECT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"JSON\",\n influxdbDataType: \"stringField\"\n /* stringField */\n }\n ],\n GetPathFromContext(context) {\n const { serviceId, serviceInstanceId, serviceInstanceProcessId } = context;\n return `/${serviceId}/${serviceInstanceId}/${serviceInstanceProcessId}`;\n },\n redisQueryFilters: {\n level1ContextField: \"serviceType\",\n level2ContextField: \"appid\",\n level3ContextField: \"appinstanceid\"\n },\n subscriptionTopics: [\n {\n subscriptionTopic: SubscriptionTopic.AllServicesCombined,\n route: \"/metrics\"\n },\n {\n subscriptionTopic: SubscriptionTopic.Services,\n route: \"/metrics/services\"\n },\n {\n subscriptionTopic: SubscriptionTopic.ServiceInstances,\n route: \"/metrics/services/:key\"\n },\n {\n subscriptionTopic: SubscriptionTopic.ServiceInstance,\n route: \"/metrics/services/:key/:subkey\"\n }\n ]\n },\n [\"agent\"]: {\n influxDBContextTags: [\n \"id\",\n \"hostName\",\n \"agentName\",\n \"threadId\",\n \"asyncRunnerId\"\n ],\n redisIndexPrefixDefinitions: {\n timeSeriesIndex: \"idx:agentIndexTimeSeries\",\n timeSeriesPrefix: \"/agentTimeSeries:\",\n instantIndex: \"idx:agentIndexInstant\",\n instantPrefix: \"/agentInstant:\"\n },\n fieldList: [\n {\n fieldName: \"childCount\",\n gauge: Gauge.CHILD_COUNT,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n }\n ],\n //@@ need type declare in appframework ?? agent does not use appframework ... perhaps stspublisher\n GetPathFromContext(context) {\n const { agentName, threadId, asyncRunnerId } = context;\n return `/${agentName}/${threadId}/${asyncRunnerId}`;\n },\n redisQueryFilters: {\n level1ContextField: \"serviceType\",\n level2ContextField: \"appid\",\n //@@ this should be named something else\n level3ContextField: \"appinstanceid\"\n //@@ this should be named something else\n },\n subscriptionTopics: [\n {\n subscriptionTopic: SubscriptionTopic.AllAgentsCombined,\n route: \"/metrics\"\n },\n {\n subscriptionTopic: SubscriptionTopic.Agents,\n route: \"/metrics/agents\"\n },\n {\n subscriptionTopic: SubscriptionTopic.AgentWorkers,\n route: \"/metrics/agents/:key\"\n },\n {\n subscriptionTopic: SubscriptionTopic.AgentWorker,\n route: \"/metrics/agents/:key/:subkey\"\n }\n ]\n },\n [\"lambda\"]: {\n influxDBContextTags: [\n \"technology\",\n \"subTechnology\",\n \"lambdaFunctionName\",\n \"lambdaInstance\",\n \"hostName\",\n \"processId\",\n \"parentProcessId\",\n \"useCase\",\n \"pattern\"\n ],\n redisIndexPrefixDefinitions: {\n timeSeriesIndex: \"idx:lambdaIndexTimeSeries\",\n timeSeriesPrefix: \"/lambdaTimeSeries:\",\n instantIndex: \"idx:lambdaIndexInstant\",\n instantPrefix: \"/lambdaInstant:\"\n },\n fieldList: [\n {\n fieldName: \"cpu\",\n gauge: Gauge.CPU_LOAD_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"connectionCount\",\n gauge: Gauge.CONNECTION_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionPoolCount\",\n gauge: Gauge.CONNECTION_POOL_TOTAL_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionIdleCount\",\n gauge: Gauge.CONNECTION_POOL_IDLE_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionWaitingCount\",\n gauge: Gauge.CONNECTION_POOL_WAITING_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"systemcpu\",\n gauge: Gauge.CPU_SYSTEM_LOAD_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"memory\",\n gauge: Gauge.OBJECT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"JSON\",\n influxdbDataType: \"stringField\"\n /* stringField */\n }\n ],\n //@@ need type declare in appframework\n GetPathFromContext(context) {\n const { technology, subTechnology, lambdaInstance } = context;\n return `/${technology}/${subTechnology}/${lambdaInstance}`;\n },\n redisQueryFilters: {\n level1ContextField: \"serviceType\",\n level2ContextField: \"technology\",\n level3ContextField: \"subTechnology\"\n },\n subscriptionTopics: [\n {\n subscriptionTopic: SubscriptionTopic.AllLambdasCombined,\n // uicontrollerlanding\n route: \"/metrics\"\n },\n {\n subscriptionTopic: SubscriptionTopic.LambdaTechnologies,\n // uicontrollerlambda\n route: \"/metrics/lambdas\"\n },\n {\n subscriptionTopic: SubscriptionTopic.LambdaSubTechnologies,\n // uicontrollerlambdasubtechnologies\n route: \"/metrics/lambdas/:key\"\n },\n {\n subscriptionTopic: SubscriptionTopic.LambdaSubTechnologiesInstance,\n // uicontrollerlambdasubtechnologiesinstance\n route: \"/metrics/lambdas/:key/:subkey\"\n }\n ]\n }\n }\n};\nexport {\n AgentInstrumentController,\n CompareSTSInstrumentControllerPluginKey,\n CreateInstrument,\n Gauge,\n GaugeTypes,\n GetInstrumentName,\n GetSTSInstrumentController,\n GetSTSInstrumentControllerPluginKey,\n GetSocketIOSubscriptionKey,\n GetTransportMode,\n HistogramDataElementPos,\n InstrumentBase,\n InstrumentBaseOptions,\n InstrumentBaseTelemetry,\n InstrumentGauge,\n InstrumentGaugeOptions,\n InstrumentGaugeTelemetry,\n InstrumentHistogram,\n InstrumentHistogramOptions,\n InstrumentHistogramTelemetry,\n InstrumentLog,\n InstrumentLogOptions,\n InstrumentLogTelemetry,\n InstrumentObject,\n InstrumentObjectOptions,\n InstrumentObjectTelemetry,\n InstrumentPayloadType,\n InstrumentTimerGauge,\n InstrumentTimerOptions,\n InstrumentTimerTelemetry,\n InstrumentVelocity,\n InstrumentVelocityOptions,\n InstrumentVelocityTelemetry,\n KAFKA_PREFIX,\n KafkaHelper,\n ObservabilityModelUtils,\n ObservabilityRESTAPISubscriber,\n ObservabilitySocketIOSubscriber,\n ObservabilitySubscriptionManager,\n PublishInstrumentController,\n PublishTransportRESTServer,\n RequestLoggerMiddleware,\n RequestLoggerMiddlewareEventName,\n STSInstrumentControllerPlugin,\n STSInstrumentControllerPluginKey,\n SocketIoClientHelper,\n StopInstruments,\n SubscriptionTopic,\n TransportType,\n ePublishState,\n globalServiceDefinitions,\n influxDBDataType,\n useSTSInstrumentControllerPlugin\n};\n//# sourceMappingURL=stsobservability.mjs.map\n","import { defineStore } from 'pinia'\n\nimport type { IWorker, IWorkerEx, IRunnerEx, IRunner, ITelemetryStore } from './../plugins/stsTestWorkerDefinitions'\n\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\nexport const TelemetryStore = defineStore('__sts__TelemetryStore', {\n // State\n // https://pinia.vuejs.org/core-concepts/state.html\n state: (): ITelemetryStore => {\n return {\n workers: { }\n }\n },\n\n // Getters\n // https://pinia.vuejs.org/core-concepts/getters.html\n\n // Actions\n // https://pinia.vuejs.org/core-concepts/actions.html\n actions: {\n RemoveWorker(workerEx: IWorkerEx) {\n delete this.workers[workerEx.id];\n },\n\n RemoveRunner(workerEx: IWorkerEx, runnerEx: IRunnerEx) {\n const worker: IWorker = this.workers[workerEx.id];\n if (worker && worker.runners) {\n delete worker.runners[runnerEx.id];\n }\n },\n\n Update(workerEx: IWorkerEx, runnerEx: IRunnerEx) {\n if (!this.workers[workerEx.id]) {\n // Create a new telemetry record\n this.workers[workerEx.id] = {\n id: workerEx.id,\n state: workerEx.state,\n primaryThreadWorkerOptions: { ...workerEx.primaryThreadWorkerOptions },\n workerThreadWorkerOptions: { ...workerEx.workerThreadWorkerOptions },\n runners: { }\n } as IWorker\n }\n const worker: IWorker = this.workers[workerEx.id];\n // Now check for the async runner\n if (worker.runners) {\n if (!worker.runners[runnerEx.id]) {\n // Create a new asyncRunnerInstance telemetry record\n const runner: IRunner = {\n id: runnerEx.id,\n asyncRunnerContext: { ...runnerEx.asyncRunnerContext },\n options: { ...runnerEx.options },\n state: runnerEx.state,\n instrumentData: { ...runnerEx.instrumentData },\n }\n worker.runners[runner.id] = runner;\n } else {\n const runner: IRunner = worker.runners[runnerEx.id];\n runner.instrumentData = { ...runnerEx.instrumentData }\n }\n }\n }\n }\n});\n","import type { PublishInstrumentController } from '@nsshunt/stsobservability'\n\nimport type { IIWMessagePayloadContentBase, \n IIWMessagePayload, IAsyncRunnerContext } from './../commonTypes'\n\t\nexport interface ISTSAgentWorkerMessagePort extends IIWMessagePayloadContentBase {\n port: MessagePort\n options: IWorkerOptions\n}\n\nexport enum IRunnerState {\n\tcreated = 'created',\n\trunning = 'running',\n\tstopped = 'stopped',\n\tpaused = 'paused',\n\terror = 'error',\n}\n\nexport interface IRunnerTelemetry {\n\trequestCount: number // requestCount\n\terrorCount: number\n\tretryCount: number\n\tauthenticationCount: number\n\tauthenticationErrorCount: number\n\tauthenticationRetryCount: number\n\tvelocity: number\n\tcoreCount: number\n\ttimer: number\n\tduration: number\n\tlatency: number\n\tactiveRequestCount: number\n\tmessage: string[]\n\tchildCount: number\n\trx: number\n\ttx: number\n}\n\nexport interface IRunner {\n\tid: number\n\tasyncRunnerContext: IAsyncRunnerContext\n\toptions: IRunnerOptions\n\tstate: IRunnerState\n\tinstrumentData: IRunnerTelemetry\n}\n\nexport interface IRunnerEx extends IRunner {\n publishInstrumentController: PublishInstrumentController\n Stop: () => Promise<boolean>\n}\n\nexport enum IWorkerState {\n\tstarting = 'starting',\n\tstarted = 'started',\n\tstopped = 'stopped'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IWorkerOptions {\n hostName: string\n agentId: string\n userAgent: string\n}\n\nexport type Runners = Record<string, IRunner>\n\nexport interface IWorker {\n\tid: number\n\tstate: IWorkerState\n primaryThreadWorkerOptions: IWorkerOptions\n\tworkerThreadWorkerOptions: IWorkerOptions\n\trunners?: Runners // Will be created by utility helper\n}\n\nexport type Workers = Record<string, IWorker>\n\nexport interface IPrimaryWorker {\n ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IRunnerOptions {\n\n}\n\nexport interface IWorkerEx extends IWorker {\n\tworker: Worker\n primaryWorker: IPrimaryWorker\n\trunnersEx: Record<string, IRunnerEx>\n\tAddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx\n\tStopRunner: (runner: IRunnerEx) => Promise<boolean>\n\tStop: () => Promise<boolean>\n}\n\nexport interface ISTSTestWorkerOptions {\n messageMod: number\n iterations: number\n}\n\nexport interface ITelemetryStore {\n\tworkers: Workers\n}\n\nexport interface ITestRunnerTelemetryPayload extends IIWMessagePayloadContentBase {\n\trunner: IRunner\n}\n\nexport interface IWorkerFactory {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker\n\tcreateWorkerThreadWorker: () => Worker // | wt.Worker\n get workerThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup\n get primaryThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup\n}\n\nexport interface IWorkerManagerOptions {\n workerFactory: IWorkerFactory\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","import debugModule from 'debug'\nconst debug = debugModule(`proc:${process.pid}:workerManager`);\n\n//import MyWorker from './sts-worker?worker' // https://vitejs.dev/guide/features.html#web-workers\nimport { type IAsyncRunnerContext, IIWMessagePayload, IIWMessagePayloadContentBase, \n type IIWMessageCommand, eIWMessageCommands } from './../commonTypes'\n \nimport { Gauge, InstrumentGaugeTelemetry } from '@nsshunt/stsobservability'\n\nimport { ModelDelimeter } from '@nsshunt/stsutils'\n\nimport { TelemetryStore } from './../stores/TelemetryStore'\n//import { ApplicationStore } from './../stores/applicationStore'\n\nimport type { ISTSAgentWorkerMessagePort, IWorkerEx, IRunner, IRunnerEx,\n ITestRunnerTelemetryPayload, IRunnerOptions, IRunnerTelemetry,\n IWorkerManagerOptions, IWorkerFactory } from './stsTestWorkerDefinitions'\n\nimport { IWorkerState, IRunnerState } from './stsTestWorkerDefinitions'\nimport { Sleep } from '@nsshunt/stsutils';\nimport { inject } from 'vue';\n\nimport { STSInstrumentControllerPluginKey, GetSTSInstrumentControllerPluginKey, GetSTSInstrumentController, AgentInstrumentController } from '@nsshunt/stsobservability'\nimport { STSWorkerManagerPluginKey } from './stsPluginKeys';\n\nimport chalk from 'chalk';\nchalk.level = 3;\n\nexport class STSWorkerManager {\n //#agentSession: string = null;\n #workersEx: Record<string, IWorkerEx> = { };\n #runner = 0;\n #workerId = 0;\n #options: IWorkerManagerOptions;\n #STSInstrumentController: AgentInstrumentController\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #app: any\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(app: any, options?: IWorkerManagerOptions) {\n this.#app = app;\n if (options) {\n this.#options = options;\n } else {\n this.#options = { } as IWorkerManagerOptions;\n }\n\n debug(`CompareSTSInstrumentControllerPluginKeyWMEx(): [${CompareSTSInstrumentControllerPluginKeyWMEx()}]`);\n\n debug(`Attempting to get STSInstrumentControllerPlugin using symbol: [${String(STSInstrumentControllerPluginKey)}]`);\n //this.#STSInstrumentController = app.config.globalProperties.$sts[STSInstrumentControllerPluginKey]\n //this.#STSInstrumentController = app.config.globalProperties.$sts[GetSTSInstrumentControllerPluginKey()]\n this.#STSInstrumentController = GetSTSInstrumentController(app);\n //this.#STSInstrumentController = app.config.globalProperties.$sts.aic;\n\n debug(this.#STSInstrumentController);\n debug('keys within app.config.globalProperties.$sts');\n for (const [key, ] of Object.entries(app.config.globalProperties.$sts)) {\n debug(`${key}`);\n }\n\n if (!this.#STSInstrumentController) {\n debug(`Failed to get STSInstrumentControllerPlugin using symbol: [${String(STSInstrumentControllerPluginKey)}]`);\n }\n }\n \n get WorkersEx(): Record<string, IWorkerEx>\n {\n return this.#workersEx;\n }\n\n AddWorker = async (useWorkerFactory?: IWorkerFactory): Promise<IWorkerEx> => {\n let workerFactory: IWorkerFactory;\n if (useWorkerFactory) {\n // Use the supplied workFactory\n workerFactory = useWorkerFactory;\n } else {\n // Use the default workFactory\n workerFactory = this.#options.workerFactory\n }\n const stsWorkerEx: IWorkerEx = {\n id: this.#workerId++, // uuidv4()\n worker: workerFactory.createWorkerThreadWorker(),\n primaryWorker: workerFactory.createPrimaryThreadWorker(this.#app, workerFactory.primaryThreadWorkerOptions),\n state: IWorkerState.starting,\n workerThreadWorkerOptions: workerFactory.workerThreadWorkerOptions,\n primaryThreadWorkerOptions: workerFactory.primaryThreadWorkerOptions,\n runnersEx: { } as Record<string, IRunnerEx>,\n AddRunner: (runnerOptions: IRunnerOptions): IRunnerEx => this.AddRunnerToWorker(stsWorkerEx, runnerOptions),\n StopRunner: (runner: IRunnerEx): Promise<boolean> => this.#StopRunner(stsWorkerEx, runner),\n Stop: async (): Promise<boolean> => this.#StopWorker(stsWorkerEx)\n }\n this.#STSInstrumentController.LogEx(chalk.yellow(`Creating new worker: [${stsWorkerEx.id}]`));\n console.log(`Adding worker: [${stsWorkerEx.id}]`);\n\n stsWorkerEx.worker.onmessage = function(data: MessageEvent) {\n console.log(data.data);\n }\n\n stsWorkerEx.worker.onerror = function(error) {\n console.log(error);\n };\n\n const { \n port1, // process message port\n port2 // collector message port\n } = new MessageChannel();\n\n const workerPort = port1;\n \n console.log(`STSWorkerManager::AddWorker::workerThreadWorkerOptions: [${JSON.stringify(stsWorkerEx.workerThreadWorkerOptions)}]`);\n\n this.#PostMessageToWorker(stsWorkerEx, eIWMessageCommands.MessagePort, {\n port: port2,\n //applicationStoreState: stateCopy,\n options: { ...stsWorkerEx.workerThreadWorkerOptions }\n } as ISTSAgentWorkerMessagePort, port2);\n \n // Process messages received back from the worker\n workerPort.onmessage = async (data: MessageEvent) => {\n const publishMessagePayload: IIWMessagePayload = data.data as IIWMessagePayload;\n switch (publishMessagePayload.command) {\n case eIWMessageCommands.MessagePortResponse : \n stsWorkerEx.state = IWorkerState.started;\n break;\n case eIWMessageCommands.InstrumentTelemetry :\n this.#ProcessTelemetry(stsWorkerEx, publishMessagePayload.payload as ITestRunnerTelemetryPayload);\n break;\n default :\n stsWorkerEx.primaryWorker.ProcessMessageFromWorker(workerPort, publishMessagePayload);\n }\n }\n\n this.#workersEx[stsWorkerEx.id] = stsWorkerEx;\n\n console.log(`Added worker: [${stsWorkerEx.id}]`);\n\n return stsWorkerEx;\n }\n\n AddRunnerToWorker = (stsWorkerEx: IWorkerEx, runnerOptions: IRunnerOptions): IRunnerEx => {\n const runnerEx: IRunnerEx = this.#CreateAsyncRunner(stsWorkerEx, runnerOptions);\n stsWorkerEx.runnersEx[runnerEx.id] = runnerEx;\n this.#SetRunnerIntoWorker(stsWorkerEx, runnerEx);\n runnerEx.publishInstrumentController.LogEx(chalk.green(`Added runner: [${runnerEx.id}] into worker: [${stsWorkerEx.id}]`));\n return runnerEx;\n }\n\n #CreateRunnerCopy(runnerEx: IRunnerEx): IRunner {\n return {\n id: runnerEx.id,\n asyncRunnerContext: { ...runnerEx.asyncRunnerContext },\n options: { ...runnerEx.options },\n state: runnerEx.state,\n instrumentData: { ...runnerEx.instrumentData }\n } as IRunner\n }\n\n #SetRunnerIntoWorker = (workerEx: IWorkerEx, runnerEx: IRunnerEx): void => {\n // Now that the worker is setup, send the options\n //@@ wait until worker in running state\n const payload: ITestRunnerTelemetryPayload = {\n runner: this.#CreateRunnerCopy(runnerEx)\n }\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.AddAsyncRunner, payload);\n }\n\n #ProcessTelemetry = (workerEx: IWorkerEx, payloadContents: ITestRunnerTelemetryPayload): void => {\n const store = TelemetryStore();\n\n const { runner } = payloadContents;\n\n if (workerEx.runnersEx[runner.id]) {\n const runnerEx: IRunnerEx = workerEx.runnersEx[runner.id];\n let update = false;\n\n // Copy telemetry\n runnerEx.instrumentData = { ...runner.instrumentData };\n\n if (runner.instrumentData.message) {\n runnerEx.instrumentData.message = [...runner.instrumentData.message];\n } else {\n runnerEx.instrumentData.message = [ ];\n }\n\n if (runner.instrumentData.message) {\n runner.instrumentData.message.forEach((message) => {\n runnerEx.publishInstrumentController.LogEx(message);\n });\n update = true;\n }\n\n if (runner.instrumentData.requestCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.REQUEST_COUNT_GAUGE, {\n val: runnerEx.instrumentData.requestCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.errorCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ERROR_COUNT_GAUGE, {\n val: runnerEx.instrumentData.errorCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.retryCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.RETRY_COUNT_GAUGE, {\n val: runnerEx.instrumentData.retryCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationErrorCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationRetryCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.coreCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CORE_COUNT_GAUGE, {\n val: runnerEx.instrumentData.coreCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.timer) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.TIMER_GAUGE, {\n val: runnerEx.instrumentData.timer\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.activeRequestCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ACTIVE_REQUEST_GAUGE, {\n val: runnerEx.instrumentData.activeRequestCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.velocity) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.VELOCITY_GAUGE, {\n Inc: runnerEx.instrumentData.velocity\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.duration) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_GAUGE, {\n val: runnerEx.instrumentData.duration\n } as InstrumentGaugeTelemetry);\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_HISTOGRAM_GAUGE, {\n val: runnerEx.instrumentData.duration\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.latency) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_GAUGE, {\n val: runnerEx.instrumentData.latency\n } as InstrumentGaugeTelemetry);\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_HISTOGRAM_GAUGE, {\n val: runnerEx.instrumentData.latency\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.childCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CHILD_COUNT, {\n val: runnerEx.instrumentData.childCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.rx) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_RX_GAUGE, {\n Inc: runnerEx.instrumentData.rx\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.tx) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_TX_GAUGE, {\n Inc: runnerEx.instrumentData.tx\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (update) {\n store.Update(workerEx, runnerEx);\n }\n }\n }\n\n #CreateAsyncRunner = (workerEx: IWorkerEx, runnerOptions: IRunnerOptions): IRunnerEx => {\n //const applicationStore = ApplicationStore();\n this.#runner++; // The runner number always increases\n this.#STSInstrumentController.LogEx(chalk.yellow(`Creating new async runner: [${this.#runner}]`));\n const asyncRunnerContext: IAsyncRunnerContext = {\n nid: `\\\n${workerEx.workerThreadWorkerOptions.hostName}${ModelDelimeter.COMPONENT_SEPERATOR}${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}\\\n${ModelDelimeter.NID_SEPERATOR}\\\nworker${workerEx.id}\\\n${ModelDelimeter.SEPERATOR}\\\n${this.#runner}`,\n id: this.#runner.toString(),\n hostName: (workerEx.workerThreadWorkerOptions.hostName ? workerEx.workerThreadWorkerOptions.hostName : 'host'),\n agentName: `${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}`,\n threadId: `worker${workerEx.id}`,\n asyncRunnerId: this.#runner\n }\n const runnerEx: IRunnerEx = {\n id: this.#runner,\n publishInstrumentController: this.#STSInstrumentController.AddPublishInstrumentController(asyncRunnerContext),\n asyncRunnerContext: asyncRunnerContext,\n state: IRunnerState.created,\n options: runnerOptions,\n instrumentData: {\n requestCount: 0,\n errorCount: 0,\n retryCount: 0,\n authenticationCount: 0,\n authenticationErrorCount: 0,\n authenticationRetryCount: 0,\n velocity: 0,\n coreCount: 0,\n timer: 0,\n duration: 0,\n latency: 0,\n activeRequestCount: 0,\n message: [ ],\n childCount: 0,\n rx: 0,\n tx: 0\n } as IRunnerTelemetry,\n Stop: async (): Promise<boolean> => this.#StopRunner(workerEx, runnerEx)\n }\n return runnerEx;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #PostMessageToWorker = (workerEx: IWorkerEx, command: IIWMessageCommand, payload: IIWMessagePayloadContentBase | null, transferObject?: any) => {\n if (transferObject) {\n console.log(`#PostMessageToWorker with transfer object`);\n workerEx.worker.postMessage({ command, payload }, [transferObject]);\n console.log(`#PostMessageToWorker with transfer object - done...`);\n } else {\n console.log(`#PostMessageToWorker`);\n workerEx.worker.postMessage({ command, payload });\n }\n }\n\n #TerminateWorker = (workerEx: IWorkerEx) => {\n if (workerEx.worker) {\n const store = TelemetryStore();\n\n workerEx.worker.terminate();\n //@@workerEx.worker = null;\n console.log(`Terminated worker: [${workerEx.id}]`);\n store.RemoveWorker(workerEx);\n delete this.#workersEx[workerEx.id];\n } else {\n // Some other runner has already removed the parent worker, do nothing\n // console.log(`WORKER ALREADY NULL`);\n }\n }\n\n #StopRunner = async (workerEx: IWorkerEx, runnerEx: IRunnerEx | null = null): Promise<boolean> => {\n // If runnerEx not provided, Remove the first runner in the collection\n if (runnerEx === null) {\n const ids: string[] = Object.keys(workerEx.runnersEx);\n if (ids.length > 0) {\n const id = ids[0];\n runnerEx = workerEx.runnersEx[id];\n }\n }\n if (runnerEx !== null) {\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.StopAllAsyncRunners, {\n runner: this.#CreateRunnerCopy(runnerEx)\n } as ITestRunnerTelemetryPayload);\n\n runnerEx.publishInstrumentController.LogEx(`Terminating runner: [${runnerEx.id}]`);\n \n const promArray: Promise<boolean>[] = [ ];\n\n promArray.push((async (): Promise<boolean> => {\n await Sleep(100);\n return runnerEx.publishInstrumentController.EndPublish() as Promise<boolean>\n })());\n\n const store = TelemetryStore();\n store.RemoveRunner(workerEx, runnerEx);\n\n delete workerEx.runnersEx[runnerEx.id];\n\n const retVal = await Promise.all(promArray);\n console.log(`Removed instrument workers: [${retVal}]`);\n\n /*\n // If the removed runner was the last runner, remove the worker\n if (Object.keys(workerEx.runnersEx).length === 0) {\n this.#TerminateWorker(workerEx);\n }\n */\n }\n return true;\n }\n\n #StopWorker = async (workerEx: IWorkerEx): Promise<boolean> => {\n try {\n if (workerEx.state !== IWorkerState.stopped) {\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.StopAllAsyncRunners, null);\n \n //@@ Now wait until we get an ack back from the worker\n // This is because we may be trying to stop BEFORE the worker has had a chance to startup ...\n \n console.log(`Terminating worker: [${workerEx.id}]`);\n const promArray: Promise<boolean>[] = [ ];\n \n // Terminate only those that are currently running...\n const ids: string[] = Object.keys(workerEx.runnersEx);\n\n ids.forEach((id) => {\n const runnerEx: IRunnerEx = workerEx.runnersEx[id];\n promArray.push(this.#StopRunner(workerEx, runnerEx));\n });\n await Promise.all(promArray);\n\n this.#TerminateWorker(workerEx);\n }\n return true;\n } catch (error) {\n console.log(`Error in STSTestWorker:StopWorker: [${error}]`);\n return false;\n }\n }\n\n GetNextAvailableWorker = (): IWorkerEx | null => {\n // Calculate the worker with the least runners\n let leastRunnerWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (leastRunnerWorker) {\n if (Object.keys(stsWorker.runnersEx).length < Object.keys(leastRunnerWorker.runnersEx).length) {\n leastRunnerWorker = stsWorker;\n }\n } else {\n leastRunnerWorker = stsWorker;\n }\n }\n return leastRunnerWorker;\n }\n\n GetBusyWorker = (): IWorkerEx | null => {\n // Calculate the worker with the least runners\n let busyWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (busyWorker) {\n if (Object.keys(stsWorker.runnersEx).length > Object.keys(busyWorker.runnersEx).length) {\n busyWorker = stsWorker;\n }\n } else {\n busyWorker = stsWorker;\n }\n }\n return busyWorker;\n }\n\n get Options(): IWorkerManagerOptions {\n return this.#options;\n }\n\n set Options(options: IWorkerManagerOptions) {\n this.#options = options;\n }\n\n /*\n StopRunner = async () => {\n // Calculate the worker with the most runners\n let largestRunnerWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (largestRunnerWorker) {\n if (Object.keys(stsWorker.runnersEx).length > Object.keys(largestRunnerWorker.runnersEx).length) {\n largestRunnerWorker = stsWorker;\n }\n } else {\n largestRunnerWorker = stsWorker;\n }\n }\n if (largestRunnerWorker) largestRunnerWorker.StopRunner();\n }\n */\n\n /*\n StopWorker = async () => {\n // Calculate the worker with the least runners\n let largestRunnerWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (largestRunnerWorker) {\n if (Object.keys(stsWorker.runnersEx).length < Object.keys(largestRunnerWorker.runnersEx).length) {\n largestRunnerWorker = stsWorker;\n }\n } else {\n largestRunnerWorker = stsWorker;\n }\n }\n if (largestRunnerWorker) largestRunnerWorker.Stop();\n }\n */\n\n StopAllWorkers = async () => {\n const promArray = [ ];\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n promArray.push(stsWorker.Stop());\n }\n\n await Promise.all(promArray);\n }\n}\n\nexport const GetSTSInstrumentControllerPluginKeyWM = (): symbol => STSInstrumentControllerPluginKey\n\nexport const CompareSTSInstrumentControllerPluginKeyWM = (val: symbol): boolean => val === STSInstrumentControllerPluginKey\n\nexport const CompareSTSInstrumentControllerPluginKeyWMEx = (): boolean => STSInstrumentControllerPluginKey === GetSTSInstrumentControllerPluginKey()\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSWorkerManager = (): STSWorkerManager => inject(STSWorkerManagerPluginKey) as STSWorkerManager\n\nexport const STSWorkerManagerPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any, options?: IWorkerManagerOptions) => {\n const wm = new STSWorkerManager(app, options);\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSWorkerManagerPluginKey] = wm;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSWorkerManagerPluginKey, wm);\n }\n}\n","import debugModule from 'debug'\nconst debug = debugModule(`proc:${process.pid}`);\n\nimport type { IIWMessagePayload } from './../commonTypes'\n\ndeclare interface RequestResponseMessage {\n\tpublishMessagePayload: IIWMessagePayload\n\tpublishMessagePayloadResponse?: IIWMessagePayload\n\tcb: () => void,\n\ttimeout: NodeJS.Timeout\n}\n\ndeclare type RequestResponseMessages = Record<string, RequestResponseMessage>;\n\n//@@ this should become a low level stsutils type helper\nexport class RequestResponseHelper\n{\n #requestResponseMessages: RequestResponseMessages = { }\n #requestResponseMessageTimeout = 10000; //@@ config\n #port: MessagePort\n\n constructor(port: MessagePort) {\n this.#port = port\n this.#SetupListener();\n }\n\n PostMessage = (message: IIWMessagePayload): Promise<IIWMessagePayload> => {\n return new Promise((resolve, reject) => {\n const { messageId } = message.payload;\n if (messageId) {\n if (this.#requestResponseMessages[messageId]) {\n reject(`RequestResponseHelper: Message with id: [${messageId}] already exists within the Request/Response record structure`);\n } else {\n this.#requestResponseMessages[messageId] = {\n publishMessagePayload: { ...message },\n cb: () => {\n const detail = this.#requestResponseMessages[messageId].publishMessagePayloadResponse;\n clearTimeout(this.#requestResponseMessages[messageId].timeout);\n setTimeout(() => {\n delete this.#requestResponseMessages[messageId];\n }, 0);\n if (detail) {\n debug(`RequestResponseHelper: Resolving response message with id: [${messageId}] from target worker port. Details: [${JSON.stringify(detail)}]`);\n resolve(detail);\n } else {\n const msg = `Could not get detail from this.#requestResponseMessages[messageId].publishMessagePayloadResponse`;\n debug(msg);\n reject(msg);\n }\n },\n timeout: setTimeout(() => {\n setTimeout(() => {\n delete this.#requestResponseMessages[messageId];\n }, 0);\n debug(`RequestResponseHelper: Timeout has occurred after: [${this.#requestResponseMessageTimeout}]ms with message id: [${messageId}]. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);\n reject('RequestResponseHelper: Did not receive response form parent process.');\n }, this.#requestResponseMessageTimeout) // max message timeout allowed\n }\n debug(`RequestResponseHelper: Sending message with id: [${messageId}] to target worker port. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);\n this.#port.postMessage(message);\n }\n } else {\n const msg = `RequestResponseHelper: Response did not include a message id`;\n debug(msg);\n reject(msg);\n }\n });\n }\n\n #SetupListener = () => {\n this.#port.onmessage = async (msg: MessageEvent) => {\n const publishMessagePayload: IIWMessagePayload = msg.data as IIWMessagePayload;\n if (publishMessagePayload.payload.messageId) {\n const messageId = publishMessagePayload.payload.messageId;\n if (messageId && messageId !== '') {\n if (this.#requestResponseMessages[messageId]) {\n const requestResponseMessage: RequestResponseMessage = this.#requestResponseMessages[messageId];\n requestResponseMessage.publishMessagePayloadResponse = { ...publishMessagePayload };\n requestResponseMessage.cb();\n } else {\n throw new Error(`RequestResponseHelper: Could not find Request/Response message with id: [${messageId}]`);\n }\n }\n }\n }\n }\n}\n","import debugModule from 'debug'\nconst debug = debugModule(`proc:${process.pid}:workerInstance`);\n\nimport { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase } from './../commonTypes'\n\nimport type { ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload } from './stsTestWorkerDefinitions'\nimport { IRunnerState } from './stsTestWorkerDefinitions'\n\nimport { RequestResponseHelper } from './requestResponseHelper'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IWorkerInstanceOptions {\n\n}\n\nexport abstract class WorkerInstance {\n #collectorCollectorPort: MessagePort | null = null;\n #requestResponseHelper: RequestResponseHelper | null = null;\n #runners: Record<string, IRunner> = { };\n #options: IWorkerInstanceOptions | null = null;\n\n constructor() {\n debug(`WorkerInstance::constructor`)\n }\n\n GetRandomInt = (max: number) => {\n debug(`WorkerInstance::GetRandomInt`)\n return Math.floor(Math.random() * Math.floor(max));\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StartWork = async (runner: IRunner): Promise<void> => {\n debug(`WorkerInstance::StartWork`)\n return;\n }\n\n PostTelemetry = (runner: IRunner) => {\n //debug(`WorkerInstance::PostTelemetry`)\n if (this.#collectorCollectorPort) {\n const message: IIWMessagePayload = {\n command: eIWMessageCommands.InstrumentTelemetry,\n payload: {\n runner\n } as ITestRunnerTelemetryPayload\n }\n this.#collectorCollectorPort.postMessage(message);\n }\n }\n\n get RequestResponseHelper(): RequestResponseHelper | null {\n return this.#requestResponseHelper;\n }\n\n get CollectorCollectorPort(): MessagePort | null {\n return this.#collectorCollectorPort;\n }\n\n get Options(): IWorkerInstanceOptions | null {\n return this.#options;\n }\n\n #SetMessagePort = (workerMessagePort: ISTSAgentWorkerMessagePort) => {\n debug(`WorkerInstance::SetMessagePort`)\n this.#collectorCollectorPort = workerMessagePort.port as MessagePort;\n this.#collectorCollectorPort.onmessage = function(data: MessageEvent) {\n console.log(`collectorCollectorPort onmessage: ${data.data}`);\n }\n\n this.#requestResponseHelper = new RequestResponseHelper(this.#collectorCollectorPort);\n\n const response: IIWMessagePayload = {\n command: eIWMessageCommands.MessagePortResponse,\n payload: { } as IIWMessagePayloadContentBase\n }\n\n this.#collectorCollectorPort.postMessage(response);\n }\n\n StartRunner = async (runner: IRunner) => {\n debug(`WorkerInstance::StartRunner`)\n console.log(`StartTests: [${JSON.stringify(runner)}]`);\n runner.state = IRunnerState.running;\n this.StartWork(runner);\n }\n\n #AddAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {\n debug(`WorkerInstance::AddAsyncRunner`)\n const { runner } = testRunnerTelemetryPayload;\n this.#runners[runner.id] = runner;\n this.StartRunner(runner);\n }\n\n #StopRunners = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {\n debug(`WorkerInstance::StopRunners`)\n if (testRunnerTelemetryPayload === null) {\n for (const [, testRunner] of Object.entries(this.#runners)) {\n testRunner.state = IRunnerState.stopped;\n }\n } else {\n const runner: IRunner = this.#runners[testRunnerTelemetryPayload.runner.id];\n if (runner) {\n runner.state = IRunnerState.stopped;\n }\n }\n }\n\n ProcessMessage = async(data: MessageEvent) => {\n debug(`WorkerInstance::ProcessMessage`)\n try {\n const payloadMessage: IIWMessagePayload = data.data as IIWMessagePayload;\n switch (payloadMessage.command) {\n case eIWMessageCommands.MessagePort :\n this.#SetMessagePort(payloadMessage.payload as ISTSAgentWorkerMessagePort);\n this.#options = (payloadMessage.payload as ISTSAgentWorkerMessagePort).options;\n debug(`WorkerInstance::ProcessMessage::#options: [${JSON.stringify(this.#options)}]`)\n break;\n case eIWMessageCommands.AddAsyncRunner :\n this.#AddAsyncRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);\n break;\n case eIWMessageCommands.StopAllAsyncRunners :\n this.#StopRunners(payloadMessage.payload as ITestRunnerTelemetryPayload);\n break;\n default :\n debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);\n }\n } catch (error) {\n console.log(error);\n }\n }\n}"],"names":["self","tinyEmitterModule","tinyEmitter","te.TinyEmitter","source","converter","debug","Debug","ClientStorageType","Cookies","eIWMessageCommands","global","Buffer","Symbol","Uint8Array","DataView","Map","Promise","WeakMap","isArray","key","proto","__defProp","__defNormalProp","__publicField","ansiStyles$1","colorName","hasRequiredColorName","requireColorName","conversions","hasRequiredConversions","requireConversions","route","hasRequiredRoute","requireRoute","colorConvert","hasRequiredColorConvert","requireColorConvert","ansiStylesExports","browser","stringReplaceAll$1","stringEncaseCRLFWithFirstIndex$1","util","templates","hasRequiredTemplates","requireTemplates","escape","ansiStyles","stdoutColor","stderrColor","stringReplaceAll","stringEncaseCRLFWithFirstIndex","levelMapping","styles","applyOptions","chalkFactory","chalkTag","Chalk","ChalkClass","createBuilder","createStyler","usedModels","applyStyle","template","chalk","_ObservabilityModelUtils","IRunnerState","IWorkerState","require$$0","require$$1","require$$2","require$$3","_options"],"mappings":"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","x_google_ignoreList":[1,3,7,8,9,12,13,14,15,16,17,18,19,20]}
1
+ {"version":3,"file":"stsvueutils.mjs","sources":["../src/plugins/stsPluginKeys.ts","../node_modules/tiny-emitter/index.js","../src/plugins/emitter.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../src/plugins/stsStorage.ts","../src/plugins/storage.ts","../src/commonTypes.ts","../node_modules/lodash.clonedeep/index.js","../node_modules/detect-node/index.esm.js","../node_modules/@nsshunt/stsobservability/dist/stsobservability.mjs","../src/stores/TelemetryStore.ts","../src/plugins/stsTestWorkerDefinitions.ts","../node_modules/color-name/index.js","../node_modules/color-convert/conversions.js","../node_modules/color-convert/route.js","../node_modules/color-convert/index.js","../node_modules/ansi-styles/index.js","../node_modules/supports-color/browser.js","../node_modules/chalk/source/util.js","../node_modules/chalk/source/templates.js","../node_modules/chalk/source/index.js","../src/plugins/workerManager.ts","../src/plugins/requestResponseHelper.ts","../src/plugins/workerInstance.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSStoragePluginKey = Symbol('storage')\nexport const STSEmitterPluginKey = Symbol('emitter')\nexport const STSWorkerManagerPluginKey = Symbol('workerManager')\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","import { inject } from 'vue'\n\nimport { STSEmitterPluginKey } from './stsPluginKeys';\n\nimport * as te from 'tiny-emitter';\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSEmitterPlugin = (): te.TinyEmitter => inject(STSEmitterPluginKey) as te.TinyEmitter\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSEmitterPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any) => {\n const tinyEmitter: te.TinyEmitter = new te.TinyEmitter();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSEmitterPluginKey, tinyEmitter);\n }\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Debug from 'debug';\nconst debug = Debug(`proc:${process.pid}:storage.ts`);\n\nimport Cookies from 'js-cookie'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\n\nlet PREFIX = '_ststra_';\n\nexport interface IStsStorage<T> {\n\tget(key: string): T | null\n\tset(key: string, value: T, options?: JSONObject): void\n\tremove(key: string): void\n}\n\nexport enum ClientStorageType {\n\tLOCAL_STORAGE = 'LocalStorage', //@@ todo\n\tSESSION_STORAGE = 'SessionStorage',\n\tCOOKIE_STORAGE = 'CookieStorage',\n\tMEMORY_STORAGE = 'MemoryStorage' //@@ todo\n}\n\nclass CookieStorage<T> implements IStsStorage<T>\n{\n get = (key: string): T | null => {\n const raw = Cookies.get(PREFIX + key);\n if (raw) {\n return JSON.parse(raw);\n } else {\n return null;\n }\n }\n\n set = (key: string, value: T, options: JSONObject = { }) => {\n let cookieAttributes: Cookies.CookieAttributes = { };\n if ('https:' === window.location.protocol) {\n cookieAttributes = {\n secure: true,\n sameSite: 'none'\n };\n }\n\t\n if (options && options.daysUntilExpire) {\n cookieAttributes.expires = options.daysUntilExpire;\n } else {\n cookieAttributes.expires = 1;\n }\n debug(`CookieStorage.set: key: ${key}, value: [${value}]`);\n Cookies.set(PREFIX + key, JSON.stringify(value), cookieAttributes);\n }\n\n remove = (key: string): void => {\n Cookies.remove(PREFIX + key);\n }\n}\n\nclass SessionStorage<T> implements IStsStorage<T>\n{\n get = (key: string): T | null => {\n const value: string | null = sessionStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n debug(`SessionStorage.set: key: ${key}, value: [${value}]`);\n sessionStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n sessionStorage.removeItem(PREFIX + key);\n }\n}\n\nclass LocalStorage<T> implements IStsStorage<T>\n{\n get = (key: string): T | null => {\n const value: string | null = localStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n debug(`LocalStorage.set: key: ${key}, value: [${value}]`);\n localStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n localStorage.removeItem(PREFIX + key);\n }\n}\n\nclass MemoryStorage<T> implements IStsStorage<T>\n{\n #store: Record<string, T> = { };\n\n get = (key: string): T | null => {\n const value: T = this.#store[PREFIX + key];\n if (value) {\n return value;\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);\n this.#store[PREFIX + key] = value;\n }\n \n remove = (key: string): void => {\n delete this.#store[PREFIX + key];\n }\n}\n\nexport interface IClientStorageOptions {\n\tclientStorageType: ClientStorageType\n\tusePrefix: boolean\n\tstorageOptions?: JSONObject\n}\n\nexport class ClientStorageFactory<T>\n{\n #storage: IStsStorage<T>;\n\n constructor(options: IClientStorageOptions) {\n if (options.usePrefix === false) {\n PREFIX = '';\n }\n switch (options.clientStorageType) {\n case ClientStorageType.SESSION_STORAGE :\n this.#storage = new SessionStorage<T>();\n break;\n case ClientStorageType.LOCAL_STORAGE :\n this.#storage = new LocalStorage<T>();\n break;\n case ClientStorageType.COOKIE_STORAGE :\n this.#storage = new CookieStorage<T>();\n break;\n case ClientStorageType.MEMORY_STORAGE :\n this.#storage = new MemoryStorage<T>();\n break;\n default:\n throw new Error(`Unknown [${options.clientStorageType}] storage type.`);\n }\n return;\n }\n\n GetStorage(): IStsStorage<T>\n {\n return this.#storage;\n }\n}\n","import { inject } from \"vue\";\n\n// Declare STS plugin keys (for provide)\n// https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\nimport { STSStoragePluginKey } from './stsPluginKeys';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage'\n\nexport interface ISTSStoragePluginOptions {\n\tclientStorageType: ClientStorageType\n}\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSStoragePlugin = <T>(): IStsStorage<T> => inject(STSStoragePluginKey) as IStsStorage<T>\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSStoragePlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: <T>(app: any, options: ISTSStoragePluginOptions) => {\n const cs = new ClientStorageFactory<T>({clientStorageType: options.clientStorageType, usePrefix: true});\n\n const pluginInstance = cs.GetStorage();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n // This allows access to the $sts property within templates.\n // Also, outside of script setup or setup(), this.$sts can be used.\n // If access is required within script setup, use the useSTSStoragePlugin composable function. Example;\n // import { useSTSStoragePlugin } from './storage';\n // const STSStorageString = useSTSStoragePlugin<string>();\n //\n // Note: An alternate to get access to this global is to use the hidden API call such as;\n // const app: ComponentInternalInstance | null = getCurrentInstance();\n // Assign the $sts plugin helper (legacy method - see below (injects) for updated usage)\n // let $sts: any\n // if (app) $sts = app.appContext.config.globalProperties.$sts;\n\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSStoragePluginKey, pluginInstance);\n }\n}\n","import { IContextBase } from '@nsshunt/stsobservability'\n\nexport interface IAsyncRunnerContext extends IContextBase {\n\tid: string\n\thostName: string\n\tagentName: string\n\tthreadId: string\n\tasyncRunnerId: number\n}\n\n/**\n * Inter-Worker (IW) Payload context base.\n */\nexport interface IIWMessagePayloadContentBase {\n messageId?: string\n}\n\n/**\n * Inter-Worker (IW) message commands.\n */\nexport enum eIWMessageCommands {\n\tInstrumentTelemetry ='__STS__InstrumentTelemetry', // Used to send instrument telemetry\n\tMessagePort = '__STS__MessagePort',\n\tMessagePortResponse = '__STS__MessagePortResponse',\n\tAddAsyncRunner = '__STS__AddAsyncRunner',\n\tStopAllAsyncRunners = '__STS__StopAllAsyncRunners',\n}\n\n/**\n * Inter-Worker (IW) message command.\n */\nexport type IIWMessageCommand = eIWMessageCommands\n\n/**\n * Inter-Worker (IW) message payload.\n */\nexport interface IIWMessagePayload {\n command: IIWMessageCommand\n payload: IIWMessagePayloadContentBase\n}\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 MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\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 objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\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 match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\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 supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[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/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\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 `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\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 * 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 `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 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 Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\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 ? 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 * 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 this.__data__ = new ListCache(entries);\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}\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 return this.__data__['delete'](key);\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 cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\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 // 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 * 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 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 `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\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`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\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 `_.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 * 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 result = new buffer.constructor(buffer.length);\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 `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\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 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 assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\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 * Creates an array of the own enumerable symbol properties 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 ? overArg(nativeGetSymbols, Object) : stubArray;\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,\n// for data views in Edge < 14, and promises in Node.js.\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 = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\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 * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(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 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 `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 * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\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 */\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 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 // 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\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 = cloneDeep;\n","// Only Node.JS has a process variable that is of [[Class]] process\nexport default Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\nvar __privateWrapper = (obj, member, setter, getter) => ({\n set _(value) {\n __privateSet(obj, member, value, setter);\n },\n get _() {\n return __privateGet(obj, member, getter);\n }\n});\nvar __privateMethod = (obj, member, method) => {\n __accessCheck(obj, member, \"access private method\");\n return method;\n};\nvar _label, _options, _data, _a, _interval, _timeoutComputeVelocity, _lastVelocity, _delta, _maxVelocity, _timerInterval, _copy, _velocity, _velocityVal, _valStack, _averageValStack, _maxAverageValStack, _maxAverageIterations, _valStackMaxLength, _valStackAverage, _timeStamp, _maxTimeDiff, _vaTimeDiff, _velocityTimeDiff, _autoComputeVelocity, _autoComputeVelocityTimeout, _countDiff, _timeDiff, _deltaCountDiff, _deltaTimeDif, _minTimeForReporting, _averageVelocity, _ComputeVelocityByTimeDiff, ComputeVelocityByTimeDiff_fn, _ComputeVelocity, ComputeVelocity_fn, _SetupAutoComputeVelocity, SetupAutoComputeVelocity_fn, _GetVelocityStackAverage, GetVelocityStackAverage_fn, _GetVal, GetVal_fn, _SetVal, SetVal_fn, _GetVelocity, GetVelocity_fn, _GetMaxVelocity, GetMaxVelocity_fn, _GetDelta, GetDelta_fn, _GetTimeStamp, GetTimeStamp_fn, _GetCountDiff, GetCountDiff_fn, _GetTimeDiff, GetTimeDiff_fn, _GetDeltaCountDiff, GetDeltaCountDiff_fn, _GetDeltaTimeDif, GetDeltaTimeDif_fn, _GetAverageVelocity, GetAverageVelocity_fn, _histogramData, _val, _copy2, _GetVal2, GetVal_fn2, _SetVal2, SetVal_fn2, _GetHistogramData, GetHistogramData_fn, _SetHistogramData, SetHistogramData_fn, _messages, _readPos, _maxSize, _copy3, _useLatestMessages, _consoleLogging, _instrumentLogging, _winstonLogging, _stsLogger, _DumpToConsole, DumpToConsole_fn, _GetVal3, GetVal_fn3, _SetVal3, SetVal_fn3, _start, _copy4, _pauseVal, _GetVal4, GetVal_fn4, _SetVal4, SetVal_fn4, _convertMS, convertMS_fn, _val2, _maxval, _lastObservedValue, _timeSeriesList, _maxSampleSize, _timerInterval2, _observer, _min, _max, _observations, _total, _copy5, _GetVal5, GetVal_fn5, _SetVal5, SetVal_fn5, _GetMin, GetMin_fn, _GetMax, GetMax_fn, _GetAverage, GetAverage_fn, _GetAndResetMaxVal, GetAndResetMaxVal_fn, _NumberCompare, NumberCompare_fn, _GetPercentileData, GetPercentileData_fn, _val3, _copy6, _GetVal6, GetVal_fn6, _SetVal6, SetVal_fn6, _tinyEmitter, _RequestCompleted, _instruments, _inPublish, _observer2, _publishState, _GetInstrument, GetInstrument_fn, _ProcessTelemetryCommand, ProcessTelemetryCommand_fn, _CreateInstrument, CreateInstrument_fn, _CreateInstruments, CreateInstruments_fn, _GetPayloadData, GetPayloadData_fn, _PublishTimeoutLoop, PublishTimeoutLoop_fn, _httpsAgent, _kafkaLog, _maxLogLength, _socketSubscribeKeepAlive, _options2, _LogMessage, LogMessage_fn, _LogDebugMessage, LogDebugMessage_fn, _LogErrorMessage, LogErrorMessage_fn, _InvokeRESTAPI, InvokeRESTAPI_fn, _GetData, _SetupTimeout, SetupTimeout_fn, _AddKeepAlive, AddKeepAlive_fn, _RemoveKeepAlive, RemoveKeepAlive_fn, _messageWithAckPayloadRecords, _socket, _maxReties, _timeoutValue, _options3, _LogDebugMessage2, LogDebugMessage_fn2, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn, _socketSubscribeKeepAlive2, _socket2, _options4, _socketIoMessageSender, _LogDebugMessage3, LogDebugMessage_fn3, _LogErrorMessage2, LogErrorMessage_fn2, _AddKeepAlive2, AddKeepAlive_fn2, _RemoveKeepAlive2, RemoveKeepAlive_fn2, _observabilitySocketIOSubscriber, _subscriptions, _kafkaHelper, _serviceModel, _agentModel, _lambdaModel, _options5, _LogDebugMessage4, LogDebugMessage_fn4, _LogErrorMessage3, LogErrorMessage_fn3, _options6, _sockets, _httpsAgent2, _LogDebugMessage5, LogDebugMessage_fn5, _LogErrorMessage4, LogErrorMessage_fn4, _EstablishSocketConnect, EstablishSocketConnect_fn;\nimport _cloneDeep from \"lodash.clonedeep\";\nimport isNode from \"detect-node\";\nimport { STSOptionsBase } from \"@nsshunt/stsutils\";\nimport { TinyEmitter } from \"tiny-emitter\";\nimport { inject } from \"vue\";\nimport https from \"node:https\";\nimport axios from \"axios\";\nimport debugModule from \"debug\";\nimport { io } from \"socket.io-client\";\nvar Gauge = /* @__PURE__ */ ((Gauge2) => {\n Gauge2[\"ACTIVE_REQUEST_GAUGE\"] = \"a\";\n Gauge2[\"AUTHENTICATION_COUNT_GAUGE\"] = \"b\";\n Gauge2[\"AUTHENTICATION_ERROR_COUNT_GAUGE\"] = \"aa\";\n Gauge2[\"AUTHENTICATION_RETRY_COUNT_GAUGE\"] = \"ab\";\n Gauge2[\"CONNECTION_POOL_IDLE_GAUGE\"] = \"c\";\n Gauge2[\"CONNECTION_POOL_TOTAL_GAUGE\"] = \"d\";\n Gauge2[\"CONNECTION_POOL_WAITING_GAUGE\"] = \"e\";\n Gauge2[\"CPU_LOAD_GAUGE\"] = \"f\";\n Gauge2[\"CPU_SYSTEM_LOAD_GAUGE\"] = \"g\";\n Gauge2[\"DURATION_GAUGE\"] = \"h\";\n Gauge2[\"DURATION_HISTOGRAM_GAUGE\"] = \"i\";\n Gauge2[\"ERROR_COUNT_GAUGE\"] = \"j\";\n Gauge2[\"LATENCY_GAUGE\"] = \"k\";\n Gauge2[\"LATENCY_HISTOGRAM_GAUGE\"] = \"l\";\n Gauge2[\"LOGGER\"] = \"m\";\n Gauge2[\"LOGGER_COPY\"] = \"n\";\n Gauge2[\"NETWORK_RX_GAUGE\"] = \"o\";\n Gauge2[\"NETWORK_TX_GAUGE\"] = \"p\";\n Gauge2[\"REQUEST_COUNT_GAUGE\"] = \"q\";\n Gauge2[\"RETRY_COUNT_GAUGE\"] = \"r\";\n Gauge2[\"TIMER_GAUGE\"] = \"s\";\n Gauge2[\"VELOCITY_GAUGE\"] = \"t\";\n Gauge2[\"CONNECTION_COUNT_GAUGE\"] = \"u\";\n Gauge2[\"OBJECT_GAUGE\"] = \"v\";\n Gauge2[\"PAYLOAD_SIZE\"] = \"w\";\n Gauge2[\"CORE_COUNT_GAUGE\"] = \"x\";\n Gauge2[\"CHILD_COUNT\"] = \"y\";\n Gauge2[\"UNKNOWN\"] = \"z\";\n return Gauge2;\n})(Gauge || {});\nvar GaugeTypes = /* @__PURE__ */ ((GaugeTypes2) => {\n GaugeTypes2[\"GAUGE_TYPE\"] = \"_\";\n GaugeTypes2[\"INSTRUMENT_GAUGE\"] = \"a\";\n GaugeTypes2[\"INSTRUMENT_VELOCITY\"] = \"b\";\n GaugeTypes2[\"INSTRUMENT_HISTOGRAM\"] = \"c\";\n GaugeTypes2[\"INSTRUMENT_LOG\"] = \"d\";\n GaugeTypes2[\"INSTRUMENT_TIMER\"] = \"e\";\n GaugeTypes2[\"INSTRUMENT_OBJECT\"] = \"f\";\n return GaugeTypes2;\n})(GaugeTypes || {});\nclass InstrumentBaseOptions {\n constructor() {\n __publicField(this, \"fixedSize\");\n __publicField(this, \"padLength\");\n __publicField(this, \"label\");\n }\n}\nclass InstrumentBaseTelemetry {\n}\nclass InstrumentBase {\n // Use for copy objects only.\n //protected _data: Record<string, any> = { };\n constructor(options = {}) {\n __privateAdd(this, _label, \"\");\n __privateAdd(this, _options, null);\n __privateAdd(this, _data, {});\n __publicField(this, _a, GaugeTypes.INSTRUMENT_OBJECT);\n // Default Gauge type\n __publicField(this, \"val\");\n if (typeof options === \"string\" || options instanceof String) {\n throw new Error(\"Instrument parameter must be an options object.\");\n }\n __privateSet(this, _options, options);\n if (options.label) {\n __privateSet(this, _label, options.label);\n } else {\n __privateSet(this, _label, \"InstrumentGauge\");\n }\n }\n WithLabel(label) {\n this.label = label;\n return this;\n }\n DefineCopyProperties(propertyNames) {\n propertyNames.forEach((propertyName) => {\n Object.defineProperty(this, propertyName, {\n enumerable: true,\n get: () => __privateGet(this, _data)[propertyName],\n set: (value) => {\n if (value === void 0) {\n return;\n }\n __privateGet(this, _data)[propertyName] = value;\n }\n });\n });\n }\n GetNumber(val) {\n if (Number.isInteger(val)) {\n return val;\n } else {\n return Math.round((val + Number.EPSILON) * 100) / 100;\n }\n }\n get options() {\n return __privateGet(this, _options);\n }\n set options(optionsValue) {\n __privateSet(this, _options, optionsValue);\n }\n get label() {\n return __privateGet(this, _label);\n }\n set label(labelValue) {\n __privateSet(this, _label, labelValue);\n }\n StopTimer() {\n }\n ProcessTelemetry(telemetry) {\n throw new Error(`Must override in extended class: [ProcessTelemetry]: [${telemetry}].`);\n }\n /*\n toJSON()\n {\n \treturn this._serialValue;\n }\n */\n /*\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n [Symbol.iterator]() {\n \t// Use a new index for each iterator. This makes multiple\n \t// iterations over the iterable safe for non-trivial cases,\n \t// such as use of break or nested looping over the same iterable.\n \tlet index = 0;\n \n \treturn {\n \t\tnext: () => {\n \t\t\tif (index < 1) {\n \t\t\t\treturn {value: this.GetFormatted(), done: false}\n \t\t\t} else {\n \t\t\t\treturn {done: true}\n \t\t\t}\n \t\t}\n \t}\n }\n */\n}\n_a = GaugeTypes.GAUGE_TYPE;\n_label = new WeakMap();\n_options = new WeakMap();\n_data = new WeakMap();\nclass InstrumentVelocityOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"interval\");\n __publicField(this, \"valStackMaxLength\");\n __publicField(this, \"maxAverageValStack\");\n __publicField(this, \"maxAverageIterations\");\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n __publicField(this, \"autoComputeVelocity\");\n __publicField(this, \"velocityTimeDiff\");\n __publicField(this, \"vaTimeDiff\");\n __publicField(this, \"autoComputeVelocityTimeout\");\n }\n}\nclass InstrumentVelocityTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n __publicField(this, \"Inc\");\n }\n}\nclass InstrumentVelocity extends InstrumentBase {\n // timeWindow = Number of intervals to use as the sliding time window same size. Uses average value within the time window. Larger window produces a smooth (more laggy) curve. Shorter time\n // window may be \"spikey\" depending on the volatility of the data being recorded.\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _ComputeVelocityByTimeDiff);\n __privateAdd(this, _ComputeVelocity);\n __privateAdd(this, _SetupAutoComputeVelocity);\n __privateAdd(this, _GetVelocityStackAverage);\n __privateAdd(this, _GetVal);\n __privateAdd(this, _SetVal);\n __privateAdd(this, _GetVelocity);\n __privateAdd(this, _GetMaxVelocity);\n __privateAdd(this, _GetDelta);\n __privateAdd(this, _GetTimeStamp);\n __privateAdd(this, _GetCountDiff);\n __privateAdd(this, _GetTimeDiff);\n __privateAdd(this, _GetDeltaCountDiff);\n __privateAdd(this, _GetDeltaTimeDif);\n __privateAdd(this, _GetAverageVelocity);\n //#val = 0;\n __privateAdd(this, _interval, null);\n __privateAdd(this, _timeoutComputeVelocity, null);\n __privateAdd(this, _lastVelocity, 0);\n __privateAdd(this, _delta, 0);\n __privateAdd(this, _maxVelocity, 0);\n __privateAdd(this, _timerInterval, 0);\n __privateAdd(this, _copy, false);\n __privateAdd(this, _velocity, 0);\n __privateAdd(this, _velocityVal, 0);\n __privateAdd(this, _valStack, []);\n __privateAdd(this, _averageValStack, []);\n __privateAdd(this, _maxAverageValStack, 0);\n __privateAdd(this, _maxAverageIterations, 0);\n __privateAdd(this, _valStackMaxLength, 0);\n __privateAdd(this, _valStackAverage, 0);\n __privateAdd(this, _timeStamp, 0);\n __privateAdd(this, _maxTimeDiff, 0);\n __privateAdd(this, _vaTimeDiff, 0);\n __privateAdd(this, _velocityTimeDiff, 0);\n __privateAdd(this, _autoComputeVelocity, false);\n __privateAdd(this, _autoComputeVelocityTimeout, 0);\n // 50ms to auto computer after an update when not in auto compute mode.\n __privateAdd(this, _countDiff, 0);\n __privateAdd(this, _timeDiff, 0);\n __privateAdd(this, _deltaCountDiff, 0);\n __privateAdd(this, _deltaTimeDif, 0);\n __privateAdd(this, _minTimeForReporting, 0);\n __privateAdd(this, _averageVelocity, []);\n __publicField(this, \"maxVelocity\", 0);\n __publicField(this, \"delta\", 0);\n __publicField(this, \"velocity\", 0);\n __publicField(this, \"va\", 0);\n __publicField(this, \"timeStamp\", 0);\n __publicField(this, \"countDiff\", 0);\n __publicField(this, \"timeDiff\", 0);\n __publicField(this, \"deltaCountDiff\", 0);\n __publicField(this, \"deltaTimeDif\", 0);\n __publicField(this, \"averageVelocity\", []);\n __publicField(this, \"val\", 0);\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentVelocity\";\n } else {\n this.label = options.label;\n }\n if (typeof options.interval === \"undefined\") {\n __privateSet(this, _timerInterval, 1e3);\n } else {\n __privateSet(this, _timerInterval, options.interval);\n }\n if (typeof options.valStackMaxLength === \"undefined\") {\n __privateSet(this, _valStackMaxLength, 100);\n } else {\n __privateSet(this, _valStackMaxLength, options.valStackMaxLength);\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy, false);\n } else {\n __privateSet(this, _copy, true);\n }\n if (typeof options.autoComputeVelocity === \"undefined\") {\n __privateSet(this, _autoComputeVelocity, false);\n } else {\n __privateSet(this, _autoComputeVelocity, options.autoComputeVelocity);\n }\n if (typeof options.maxAverageValStack === \"undefined\") {\n __privateSet(this, _maxAverageValStack, 5);\n } else {\n __privateSet(this, _maxAverageValStack, options.maxAverageValStack);\n }\n if (typeof options.maxAverageIterations === \"undefined\") {\n __privateSet(this, _maxAverageIterations, 3);\n } else {\n __privateSet(this, _maxAverageIterations, options.maxAverageIterations);\n }\n if (typeof options.velocityTimeDiff === \"undefined\") {\n __privateSet(this, _velocityTimeDiff, 5e3);\n } else {\n __privateSet(this, _velocityTimeDiff, options.velocityTimeDiff);\n }\n if (typeof options.vaTimeDiff === \"undefined\") {\n __privateSet(this, _vaTimeDiff, 1e4);\n } else {\n __privateSet(this, _vaTimeDiff, options.vaTimeDiff);\n }\n if (typeof options.autoComputeVelocityTimeout === \"undefined\") {\n __privateSet(this, _autoComputeVelocityTimeout, 50);\n } else {\n __privateSet(this, _autoComputeVelocityTimeout, options.autoComputeVelocityTimeout);\n }\n __privateSet(this, _maxTimeDiff, __privateGet(this, _vaTimeDiff) * 2);\n __privateSet(this, _minTimeForReporting, __privateGet(this, _vaTimeDiff) + 2e3);\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_VELOCITY\n });\n if (__privateGet(this, _copy)) {\n this.DefineCopyProperties([\n \"val\",\n \"maxVelocity\",\n \"delta\",\n \"velocity\",\n \"va\",\n \"timeStamp\",\n \"deltaTimeDif\",\n \"deltaCountDiff\",\n \"timeDiff\",\n \"countDiff\",\n \"averageVelocity\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal, GetVal_fn).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal, SetVal_fn).call(this, value);\n }\n });\n Object.defineProperty(this, \"maxVelocity\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetMaxVelocity, GetMaxVelocity_fn).call(this)\n });\n Object.defineProperty(this, \"delta\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetDelta, GetDelta_fn).call(this)\n });\n Object.defineProperty(this, \"velocity\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVelocity, GetVelocity_fn).call(this)\n });\n Object.defineProperty(this, \"va\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVelocityStackAverage, GetVelocityStackAverage_fn).call(this)\n });\n Object.defineProperty(this, \"timeStamp\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetTimeStamp, GetTimeStamp_fn).call(this)\n });\n Object.defineProperty(this, \"countDiff\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetCountDiff, GetCountDiff_fn).call(this)\n });\n Object.defineProperty(this, \"timeDiff\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetTimeDiff, GetTimeDiff_fn).call(this)\n });\n Object.defineProperty(this, \"deltaCountDiff\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetDeltaCountDiff, GetDeltaCountDiff_fn).call(this)\n });\n Object.defineProperty(this, \"deltaTimeDif\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetDeltaTimeDif, GetDeltaTimeDif_fn).call(this)\n });\n Object.defineProperty(this, \"averageVelocity\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetAverageVelocity, GetAverageVelocity_fn).call(this)\n });\n if (__privateGet(this, _timerInterval) > 0 && __privateGet(this, _autoComputeVelocity) === false) {\n this._StartTimer();\n }\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n this.velocity = result.velocity;\n this.maxVelocity = result.maxVelocity;\n this.delta = result.delta;\n this.va = result.va;\n this.timeStamp = result.timeStamp;\n this.countDiff = result.countDiff;\n this.timeDiff = result.timeDiff;\n this.deltaCountDiff = result.deltaCountDiff;\n this.deltaTimeDif = result.deltaTimeDif;\n this.averageVelocity = _cloneDeep(result.averageVelocity);\n }\n }\n WithValStackMaxLength(valStackMaxLength) {\n __privateSet(this, _valStackMaxLength, valStackMaxLength);\n __privateSet(this, _valStack, []);\n return this;\n }\n _StartTimer() {\n __privateSet(this, _interval, setInterval(() => {\n __privateMethod(this, _ComputeVelocity, ComputeVelocity_fn).call(this);\n let pushVal = __privateGet(this, _velocity);\n for (let i = 0; i < __privateGet(this, _maxAverageIterations); i++) {\n if (!__privateGet(this, _averageValStack)[i]) {\n __privateGet(this, _averageValStack)[i] = [];\n }\n __privateGet(this, _averageValStack)[i].push(pushVal);\n if (__privateGet(this, _averageValStack)[i].length > __privateGet(this, _maxAverageValStack)) {\n __privateGet(this, _averageValStack)[i].shift();\n }\n pushVal = __privateGet(this, _averageValStack)[i].reduce((prev, current) => prev + current) / __privateGet(this, _averageValStack)[i].length;\n __privateGet(this, _averageVelocity)[i] = pushVal;\n }\n }, __privateGet(this, _timerInterval)));\n if (isNode) {\n __privateGet(this, _interval).unref();\n }\n }\n Inc(incVal = 1) {\n __privateSet(this, _velocityVal, __privateGet(this, _velocityVal) + incVal);\n if (__privateGet(this, _autoComputeVelocity)) {\n __privateMethod(this, _ComputeVelocity, ComputeVelocity_fn).call(this);\n } else {\n __privateMethod(this, _SetupAutoComputeVelocity, SetupAutoComputeVelocity_fn).call(this);\n }\n }\n StopTimer() {\n if (__privateGet(this, _interval) !== null) {\n clearTimeout(__privateGet(this, _interval));\n __privateSet(this, _interval, null);\n }\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.Inc) {\n this.Inc(telemetry.Inc);\n }\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n }\n}\n_interval = new WeakMap();\n_timeoutComputeVelocity = new WeakMap();\n_lastVelocity = new WeakMap();\n_delta = new WeakMap();\n_maxVelocity = new WeakMap();\n_timerInterval = new WeakMap();\n_copy = new WeakMap();\n_velocity = new WeakMap();\n_velocityVal = new WeakMap();\n_valStack = new WeakMap();\n_averageValStack = new WeakMap();\n_maxAverageValStack = new WeakMap();\n_maxAverageIterations = new WeakMap();\n_valStackMaxLength = new WeakMap();\n_valStackAverage = new WeakMap();\n_timeStamp = new WeakMap();\n_maxTimeDiff = new WeakMap();\n_vaTimeDiff = new WeakMap();\n_velocityTimeDiff = new WeakMap();\n_autoComputeVelocity = new WeakMap();\n_autoComputeVelocityTimeout = new WeakMap();\n_countDiff = new WeakMap();\n_timeDiff = new WeakMap();\n_deltaCountDiff = new WeakMap();\n_deltaTimeDif = new WeakMap();\n_minTimeForReporting = new WeakMap();\n_averageVelocity = new WeakMap();\n_ComputeVelocityByTimeDiff = new WeakSet();\nComputeVelocityByTimeDiff_fn = function(checkTimeDiff, checkDeltaTimeDiff) {\n let val = 0;\n let deltaVal = 0;\n let countDiff = 0;\n let timeDiff = 0;\n let deltaCountDiff = 0;\n let deltaTimeDiff = 0;\n if (__privateGet(this, _valStack).length > 1 && __privateGet(this, _valStack)[__privateGet(this, _valStack).length - 1].timeStamp - __privateGet(this, _valStack)[0].timeStamp > __privateGet(this, _minTimeForReporting)) {\n const dp = __privateGet(this, _valStack)[__privateGet(this, _valStack).length - 1];\n let timeDiffPos = -1;\n let deltaDiffPos = -1;\n for (let i = __privateGet(this, _valStack).length - 2; i > -1; i--) {\n if (timeDiffPos === -1 && __privateGet(this, _timeStamp) - __privateGet(this, _valStack)[i].timeStamp >= checkTimeDiff) {\n timeDiffPos = i;\n if (checkDeltaTimeDiff === 0) {\n break;\n }\n }\n if (deltaDiffPos === -1 && __privateGet(this, _timeStamp) - __privateGet(this, _valStack)[i].timeStamp >= checkDeltaTimeDiff) {\n deltaDiffPos = i;\n }\n if (timeDiffPos !== -1 && deltaDiffPos !== -1) {\n break;\n }\n }\n if (timeDiffPos > -1) {\n countDiff = dp.count - __privateGet(this, _valStack)[timeDiffPos].count;\n if (countDiff > 0) {\n timeDiff = dp.timeStamp - __privateGet(this, _valStack)[timeDiffPos].timeStamp;\n if (timeDiff > 0) {\n val = 1e3 / timeDiff * countDiff;\n } else {\n val = 0;\n }\n } else {\n val = 0;\n }\n } else {\n val = 0;\n }\n if (deltaDiffPos > -1) {\n deltaCountDiff = __privateGet(this, _valStack)[timeDiffPos].count - __privateGet(this, _valStack)[deltaDiffPos].count;\n if (deltaCountDiff > 0) {\n deltaTimeDiff = __privateGet(this, _valStack)[timeDiffPos].timeStamp - __privateGet(this, _valStack)[deltaDiffPos].timeStamp;\n if (deltaTimeDiff > 0) {\n deltaVal = 1e3 / deltaTimeDiff * deltaTimeDiff;\n } else {\n deltaVal = 0;\n }\n } else {\n deltaVal = 0;\n }\n } else {\n deltaVal = 0;\n }\n }\n return {\n val,\n countDiff,\n timeDiff,\n deltaVal,\n deltaCountDiff,\n deltaTimeDiff\n };\n};\n_ComputeVelocity = new WeakSet();\nComputeVelocity_fn = function() {\n const dp = {\n timeStamp: performance.now(),\n count: __privateGet(this, _velocityVal)\n };\n __privateGet(this, _valStack).push(dp);\n __privateSet(this, _timeStamp, dp.timeStamp);\n while (__privateGet(this, _valStack).length > 0 && __privateGet(this, _timeStamp) - __privateGet(this, _valStack)[0].timeStamp > __privateGet(this, _maxTimeDiff)) {\n __privateGet(this, _valStack).shift();\n }\n const valStackAverageDataPoint = __privateMethod(this, _ComputeVelocityByTimeDiff, ComputeVelocityByTimeDiff_fn).call(this, __privateGet(this, _vaTimeDiff), 0);\n __privateSet(this, _valStackAverage, valStackAverageDataPoint.val);\n const velocityDataPoint = __privateMethod(this, _ComputeVelocityByTimeDiff, ComputeVelocityByTimeDiff_fn).call(this, __privateGet(this, _velocityTimeDiff), __privateGet(this, _velocityTimeDiff) * 2);\n __privateSet(this, _velocity, velocityDataPoint.val);\n __privateSet(this, _delta, velocityDataPoint.val - velocityDataPoint.deltaVal);\n __privateSet(this, _countDiff, velocityDataPoint.countDiff);\n __privateSet(this, _timeDiff, velocityDataPoint.timeDiff);\n __privateSet(this, _deltaCountDiff, velocityDataPoint.deltaCountDiff);\n __privateSet(this, _deltaTimeDif, velocityDataPoint.deltaTimeDiff);\n __privateSet(this, _lastVelocity, __privateGet(this, _velocity));\n if (__privateGet(this, _velocity) > __privateGet(this, _maxVelocity)) {\n __privateSet(this, _maxVelocity, __privateGet(this, _velocity));\n }\n};\n_SetupAutoComputeVelocity = new WeakSet();\nSetupAutoComputeVelocity_fn = function() {\n if (__privateGet(this, _timeoutComputeVelocity)) {\n clearTimeout(__privateGet(this, _timeoutComputeVelocity));\n }\n __privateSet(this, _timeoutComputeVelocity, setTimeout(() => {\n __privateMethod(this, _ComputeVelocity, ComputeVelocity_fn).call(this);\n }, __privateGet(this, _autoComputeVelocityTimeout)));\n};\n_GetVelocityStackAverage = new WeakSet();\nGetVelocityStackAverage_fn = function() {\n return this.GetNumber(__privateGet(this, _valStackAverage));\n};\n_GetVal = new WeakSet();\nGetVal_fn = function() {\n return this.GetNumber(__privateGet(this, _velocityVal));\n};\n_SetVal = new WeakSet();\nSetVal_fn = function(updatedValue) {\n __privateSet(this, _velocityVal, updatedValue);\n if (__privateGet(this, _autoComputeVelocity)) {\n __privateMethod(this, _ComputeVelocity, ComputeVelocity_fn).call(this);\n } else {\n __privateMethod(this, _SetupAutoComputeVelocity, SetupAutoComputeVelocity_fn).call(this);\n }\n};\n_GetVelocity = new WeakSet();\nGetVelocity_fn = function() {\n return this.GetNumber(__privateGet(this, _velocity));\n};\n_GetMaxVelocity = new WeakSet();\nGetMaxVelocity_fn = function() {\n return this.GetNumber(__privateGet(this, _maxVelocity));\n};\n_GetDelta = new WeakSet();\nGetDelta_fn = function() {\n return this.GetNumber(__privateGet(this, _delta));\n};\n_GetTimeStamp = new WeakSet();\nGetTimeStamp_fn = function() {\n return this.GetNumber(__privateGet(this, _timeStamp));\n};\n_GetCountDiff = new WeakSet();\nGetCountDiff_fn = function() {\n return this.GetNumber(__privateGet(this, _countDiff));\n};\n_GetTimeDiff = new WeakSet();\nGetTimeDiff_fn = function() {\n return this.GetNumber(__privateGet(this, _timeDiff));\n};\n_GetDeltaCountDiff = new WeakSet();\nGetDeltaCountDiff_fn = function() {\n return this.GetNumber(__privateGet(this, _deltaCountDiff));\n};\n_GetDeltaTimeDif = new WeakSet();\nGetDeltaTimeDif_fn = function() {\n return this.GetNumber(__privateGet(this, _deltaTimeDif));\n};\n_GetAverageVelocity = new WeakSet();\nGetAverageVelocity_fn = function() {\n return __privateGet(this, _averageVelocity);\n};\nvar HistogramDataElementPos = /* @__PURE__ */ ((HistogramDataElementPos2) => {\n HistogramDataElementPos2[HistogramDataElementPos2[\"val\"] = 0] = \"val\";\n HistogramDataElementPos2[HistogramDataElementPos2[\"label\"] = 1] = \"label\";\n HistogramDataElementPos2[HistogramDataElementPos2[\"breakPoint\"] = 2] = \"breakPoint\";\n return HistogramDataElementPos2;\n})(HistogramDataElementPos || {});\nclass InstrumentHistogramOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"histogramData\");\n __publicField(this, \"initValue\");\n __publicField(this, \"fromJSON\");\n }\n}\nclass InstrumentHistogramTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n }\n}\nclass InstrumentHistogram extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _GetVal2);\n __privateAdd(this, _SetVal2);\n __privateAdd(this, _GetHistogramData);\n __privateAdd(this, _SetHistogramData);\n __privateAdd(this, _histogramData, []);\n __privateAdd(this, _val, 0);\n __privateAdd(this, _copy2, false);\n __publicField(this, \"hist\", []);\n __publicField(this, \"val\", 0);\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentHistogram\";\n } else {\n this.label = options.label;\n }\n let histogramData = null;\n if (typeof options.histogramData === \"undefined\") {\n histogramData = null;\n } else {\n histogramData = options.histogramData;\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy2, false);\n } else {\n __privateSet(this, _copy2, true);\n }\n if (histogramData === null) {\n __privateSet(this, _histogramData, [\n [0, \"10\", 10],\n [0, \"20\", 20],\n [0, \"50\", 50],\n [0, \"100\", 100],\n [0, \"1000\", 1e3],\n [0, \"5000\", 5e3],\n [0, \"EE\", 0]\n ]);\n } else if (Array.isArray(histogramData)) {\n __privateSet(this, _histogramData, []);\n for (let i = 0; i < histogramData.length; i++) {\n __privateGet(this, _histogramData).push([0, \"\" + histogramData[i], parseFloat(histogramData[i].toString())]);\n }\n __privateGet(this, _histogramData).push([0, \"EE\", 0]);\n } else {\n throw new Error(`Passed [${histogramData}] must be an array.`);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_HISTOGRAM\n });\n if (__privateGet(this, _copy2)) {\n this.DefineCopyProperties([\n \"val\",\n \"hist\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal2, GetVal_fn2).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal2, SetVal_fn2).call(this, value);\n }\n });\n Object.defineProperty(this, \"hist\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetHistogramData, GetHistogramData_fn).call(this),\n set: (value) => {\n __privateMethod(this, _SetHistogramData, SetHistogramData_fn).call(this, value);\n }\n });\n }\n if (typeof options.initValue !== \"undefined\") {\n __privateSet(this, _val, options.initValue);\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n __privateSet(this, _val, result.val);\n this.hist = result.hist;\n }\n }\n WithInitVal(initVal) {\n __privateSet(this, _val, initVal);\n return this;\n }\n ResetHistogramData() {\n for (let i = 0; i < this.hist.length; i++) {\n this.hist[i][0] = 0;\n }\n }\n AddObservation(updateValue) {\n if (__privateGet(this, _copy2)) {\n throw new Error(\"Cannot add observations from the copy version of this class.\");\n }\n let i = 0;\n for (; i < __privateGet(this, _histogramData).length - 1; i++) {\n if (updateValue <= __privateGet(this, _histogramData)[i][\n 2\n /* breakPoint */\n ]) {\n __privateGet(this, _histogramData)[i][\n 0\n /* val */\n ]++;\n return;\n }\n }\n __privateGet(this, _histogramData)[i][\n 0\n /* val */\n ]++;\n }\n get formattedHistogramData() {\n let retVal = \"\";\n let sep = \"\";\n for (let i = 0; i < this.hist.length; i++) {\n retVal += sep + \"[\" + (this.hist[i][\n 0\n /* val */\n ] + \"/\" + this.hist[i][\n 1\n /* label */\n ]).padStart(10, \" \") + \"]\";\n sep = \" \";\n }\n return retVal;\n }\n static AddHistogramDataEx(histoA, histoB) {\n if (histoA === null) {\n return _cloneDeep(histoB);\n }\n const result = _cloneDeep(histoA);\n const histogramAData = result.hist;\n const histogramBData = histoB.hist;\n if (histogramAData.length !== histogramBData.length) {\n throw new Error(\"Invalid HistogramData. HistogramData bucket lengths must be the same.\");\n }\n for (let i = 0; i < histogramAData.length; i++) {\n if (histogramAData[i][\n 2\n /* breakPoint */\n ] !== histogramBData[i][\n 2\n /* breakPoint */\n ]) {\n throw new Error(`Invalid HistogramData. HistogramData bucket break-point at index [${i}] must be the same.`);\n }\n if (histogramAData[i][\n 1\n /* label */\n ] !== histogramBData[i][\n 1\n /* label */\n ]) {\n throw new Error(`Invalid HistogramData. HistogramData bucket label at index [${i}] must be the same.`);\n }\n histogramAData[i][\n 0\n /* val */\n ] += histogramBData[i][\n 0\n /* val */\n ];\n }\n return result;\n }\n /**\n * Adds a value object (from GetFormatted()) to this instance.\n * @param {*} value \n */\n AddHistogramData(histogramData) {\n if (histogramData === null) {\n return;\n }\n if (this.hist.length !== histogramData.hist.length) {\n throw new Error(\"Invalid HistogramData. HistogramData bucket lengths must be the same.\");\n }\n for (let i = 0; i < histogramData.hist.length; i++) {\n if (this.hist[i][\n 2\n /* breakPoint */\n ] !== histogramData.hist[i][\n 2\n /* breakPoint */\n ]) {\n throw new Error(`Invalid HistogramData. HistogramData bucket break-point at index [${i}] must be the same.`);\n }\n if (this.hist[i][\n 1\n /* label */\n ] !== histogramData.hist[i][\n 1\n /* label */\n ]) {\n throw new Error(`Invalid HistogramData. HistogramData bucket label at index [${i}] must be the same.`);\n }\n this.hist[i][\n 0\n /* val */\n ] += histogramData.hist[i][\n 0\n /* val */\n ];\n }\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n }\n}\n_histogramData = new WeakMap();\n_val = new WeakMap();\n_copy2 = new WeakMap();\n_GetVal2 = new WeakSet();\nGetVal_fn2 = function() {\n return this.GetNumber(__privateGet(this, _val));\n};\n_SetVal2 = new WeakSet();\nSetVal_fn2 = function(value) {\n __privateSet(this, _val, value);\n this.AddObservation(value);\n};\n_GetHistogramData = new WeakSet();\nGetHistogramData_fn = function() {\n return __privateGet(this, _histogramData);\n};\n_SetHistogramData = new WeakSet();\nSetHistogramData_fn = function(value) {\n __privateSet(this, _histogramData, value);\n};\nclass InstrumentLogOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"maxSize\");\n __publicField(this, \"useLatestMessages\");\n __publicField(this, \"consoleLogging\");\n __publicField(this, \"instrumentLogging\");\n __publicField(this, \"winstonLogging\");\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n __publicField(this, \"logger\");\n }\n}\nclass InstrumentLogTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"Append\");\n __publicField(this, \"LogMessage\");\n __publicField(this, \"val\");\n __publicField(this, \"ResetLog\");\n }\n}\nclass InstrumentLog extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _DumpToConsole);\n __privateAdd(this, _GetVal3);\n __privateAdd(this, _SetVal3);\n __privateAdd(this, _messages, []);\n __privateAdd(this, _readPos, 0);\n __privateAdd(this, _maxSize, 200);\n // Max length of cached log messages\n __privateAdd(this, _copy3, false);\n __privateAdd(this, _useLatestMessages, false);\n __privateAdd(this, _consoleLogging, false);\n __privateAdd(this, _instrumentLogging, true);\n __privateAdd(this, _winstonLogging, false);\n __privateAdd(this, _stsLogger, void 0);\n __publicField(this, \"val\", []);\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentLog\";\n } else {\n this.label = options.label;\n }\n if (typeof options.maxSize === \"undefined\") {\n __privateSet(this, _maxSize, 200);\n } else {\n __privateSet(this, _maxSize, options.maxSize);\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy3, false);\n } else {\n __privateSet(this, _copy3, true);\n }\n if (typeof options.useLatestMessages === \"undefined\") {\n __privateSet(this, _useLatestMessages, false);\n } else {\n __privateSet(this, _useLatestMessages, options.useLatestMessages);\n }\n if (typeof options.consoleLogging === \"undefined\") {\n __privateSet(this, _consoleLogging, false);\n } else {\n __privateSet(this, _consoleLogging, options.consoleLogging);\n }\n if (typeof options.instrumentLogging === \"undefined\") {\n __privateSet(this, _instrumentLogging, true);\n } else {\n __privateSet(this, _instrumentLogging, options.instrumentLogging);\n }\n if (typeof options.winstonLogging === \"undefined\") {\n __privateSet(this, _winstonLogging, false);\n } else {\n __privateSet(this, _winstonLogging, options.winstonLogging);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_LOG\n });\n if (__privateGet(this, _copy3)) {\n this.DefineCopyProperties([\n \"val\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => _cloneDeep(__privateMethod(this, _GetVal3, GetVal_fn3).call(this)),\n set: (value) => {\n __privateMethod(this, _SetVal3, SetVal_fn3).call(this, value);\n }\n });\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n }\n }\n WithMaxSize(maxSize) {\n __privateSet(this, _maxSize, maxSize);\n return this;\n }\n WithUseLatestMessages(useLatestMessages) {\n __privateSet(this, _useLatestMessages, useLatestMessages);\n return this;\n }\n WithConsoleLogging(consoleLogging) {\n __privateSet(this, _consoleLogging, consoleLogging);\n return this;\n }\n WithInstrumentLogging(instrumentLogging) {\n __privateSet(this, _instrumentLogging, instrumentLogging);\n return this;\n }\n get MaxSize() {\n return __privateGet(this, _maxSize);\n }\n set MaxSize(maxSize) {\n __privateSet(this, _maxSize, maxSize);\n }\n get consoleLogging() {\n return __privateGet(this, _consoleLogging);\n }\n set consoleLogging(value) {\n __privateSet(this, _consoleLogging, value);\n if (value === true) {\n __privateMethod(this, _DumpToConsole, DumpToConsole_fn).call(this);\n }\n }\n get instrumentLogging() {\n return __privateGet(this, _instrumentLogging);\n }\n set instrumentLogging(value) {\n __privateSet(this, _instrumentLogging, value);\n }\n Append(messageArray) {\n for (let i = 0; i < messageArray.length; i++) {\n this.LogMessage(messageArray[i]);\n }\n }\n error(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).error(message);\n }\n warn(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).warn(message);\n }\n info(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).info(message);\n }\n http(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).http(message);\n }\n verbose(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).verbose(message);\n }\n debug(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).debug(message);\n }\n silly(message) {\n if (__privateGet(this, _winstonLogging) && __privateGet(this, _stsLogger))\n __privateGet(this, _stsLogger).silly(message);\n }\n LogMessage(message) {\n if (__privateGet(this, _copy3)) {\n throw new Error(\"Cannot add log messages from the copy version of this class.\");\n }\n if (__privateGet(this, _consoleLogging)) {\n console.log(message);\n }\n if (__privateGet(this, _instrumentLogging) === false) {\n return;\n }\n __privateGet(this, _messages).push(message);\n if (__privateGet(this, _messages).length > __privateGet(this, _maxSize)) {\n __privateGet(this, _messages).shift();\n __privateSet(this, _readPos, __privateGet(this, _readPos) > 0 ? __privateGet(this, _readPos) - 1 : 0);\n }\n }\n GetMessagesNoUpdate() {\n return __privateGet(this, _messages).slice(__privateGet(this, _readPos));\n }\n // This will return only those messages that have been added since the last read\n GetMessagesSinceLastRead() {\n const retVal = __privateGet(this, _messages).slice(__privateGet(this, _readPos));\n __privateSet(this, _readPos, __privateGet(this, _messages).length);\n return retVal;\n }\n ResetLog() {\n __privateSet(this, _messages, []);\n __privateSet(this, _readPos, 0);\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n if (telemetry.Append) {\n this.Append(telemetry.Append);\n }\n if (telemetry.LogMessage) {\n this.LogMessage(telemetry.LogMessage);\n }\n if (telemetry.ResetLog) {\n this.ResetLog();\n }\n }\n}\n_messages = new WeakMap();\n_readPos = new WeakMap();\n_maxSize = new WeakMap();\n_copy3 = new WeakMap();\n_useLatestMessages = new WeakMap();\n_consoleLogging = new WeakMap();\n_instrumentLogging = new WeakMap();\n_winstonLogging = new WeakMap();\n_stsLogger = new WeakMap();\n_DumpToConsole = new WeakSet();\nDumpToConsole_fn = function() {\n const logReport = this.GetMessagesSinceLastRead();\n for (let i = 0; i < logReport.length; i++) {\n console.log(logReport[i]);\n }\n};\n_GetVal3 = new WeakSet();\nGetVal_fn3 = function() {\n if (__privateGet(this, _useLatestMessages)) {\n return this.GetMessagesSinceLastRead();\n } else {\n return __privateGet(this, _messages);\n }\n};\n_SetVal3 = new WeakSet();\nSetVal_fn3 = function(updatedValue) {\n __privateSet(this, _messages, updatedValue);\n __privateSet(this, _readPos, 0);\n};\nclass InstrumentTimerOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n }\n}\nclass InstrumentTimerTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n __publicField(this, \"Pause\");\n __publicField(this, \"Resume\");\n __publicField(this, \"Reset\");\n }\n}\nclass InstrumentTimerGauge extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _GetVal4);\n __privateAdd(this, _SetVal4);\n __privateAdd(this, _convertMS);\n __privateAdd(this, _start, 0);\n __privateAdd(this, _copy4, false);\n __privateAdd(this, _pauseVal, 0);\n __publicField(this, \"val\", 0);\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentTimerGauge\";\n } else {\n this.label = options.label;\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy4, false);\n } else {\n __privateSet(this, _copy4, true);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_TIMER\n });\n if (__privateGet(this, _copy4)) {\n this.DefineCopyProperties([\n \"val\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal4, GetVal_fn4).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal4, SetVal_fn4).call(this, value);\n }\n });\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n }\n this.Reset();\n }\n // Take a snap shot of the current elapsed time. The 'clock' will still keep running.\n Pause() {\n __privateSet(this, _pauseVal, this.val);\n }\n Resume() {\n __privateSet(this, _pauseVal, 0);\n }\n Reset() {\n if (isNode) {\n __privateSet(this, _start, performance.now());\n } else {\n __privateSet(this, _start, performance.now());\n }\n }\n get start() {\n return __privateGet(this, _start);\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n if (telemetry.Pause) {\n this.Pause();\n }\n if (telemetry.Resume) {\n this.Resume();\n }\n if (telemetry.Reset) {\n this.Reset();\n }\n }\n}\n_start = new WeakMap();\n_copy4 = new WeakMap();\n_pauseVal = new WeakMap();\n_GetVal4 = new WeakSet();\nGetVal_fn4 = function() {\n if (__privateGet(this, _pauseVal) !== 0) {\n return this.GetNumber(__privateGet(this, _pauseVal));\n }\n if (isNode) {\n return this.GetNumber(performance.now() - __privateGet(this, _start));\n } else {\n return this.GetNumber(performance.now() - __privateGet(this, _start));\n }\n};\n_SetVal4 = new WeakSet();\nSetVal_fn4 = function(updatedValue) {\n if (isNode) {\n __privateSet(this, _start, performance.now() - updatedValue);\n } else {\n __privateSet(this, _start, performance.now() - updatedValue);\n }\n};\n_convertMS = new WeakSet();\nconvertMS_fn = function(ms) {\n let s = Math.floor(ms / 1e3);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n const pad = function(n) {\n return n < 10 ? \"0\" + n : n.toString();\n };\n return (d + \".\" + pad(h) + \":\" + pad(m) + \":\" + pad(s)).padStart(12);\n};\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar timsort$1 = {};\n(function(exports) {\n (function(global2, factory) {\n {\n factory(exports);\n }\n })(commonjsGlobal, function(exports2) {\n exports2.__esModule = true;\n exports2.sort = sort;\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n var DEFAULT_MIN_MERGE = 32;\n var DEFAULT_MIN_GALLOPING = 7;\n var DEFAULT_TMP_STORAGE_LENGTH = 256;\n var POWERS_OF_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9];\n function log10(x) {\n if (x < 1e5) {\n if (x < 100) {\n return x < 10 ? 0 : 1;\n }\n if (x < 1e4) {\n return x < 1e3 ? 2 : 3;\n }\n return 4;\n }\n if (x < 1e7) {\n return x < 1e6 ? 5 : 6;\n }\n if (x < 1e9) {\n return x < 1e8 ? 7 : 8;\n }\n return 9;\n }\n function alphabeticalCompare(a, b) {\n if (a === b) {\n return 0;\n }\n if (~~a === a && ~~b === b) {\n if (a === 0 || b === 0) {\n return a < b ? -1 : 1;\n }\n if (a < 0 || b < 0) {\n if (b >= 0) {\n return -1;\n }\n if (a >= 0) {\n return 1;\n }\n a = -a;\n b = -b;\n }\n var al = log10(a);\n var bl = log10(b);\n var t = 0;\n if (al < bl) {\n a *= POWERS_OF_TEN[bl - al - 1];\n b /= 10;\n t = -1;\n } else if (al > bl) {\n b *= POWERS_OF_TEN[al - bl - 1];\n a /= 10;\n t = 1;\n }\n if (a === b) {\n return t;\n }\n return a < b ? -1 : 1;\n }\n var aStr = String(a);\n var bStr = String(b);\n if (aStr === bStr) {\n return 0;\n }\n return aStr < bStr ? -1 : 1;\n }\n function minRunLength(n) {\n var r = 0;\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n return n + r;\n }\n function makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n if (runHi === hi) {\n return 1;\n }\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n return runHi - lo;\n }\n function reverseRun(array, lo, hi) {\n hi--;\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n }\n function binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n while (left < right) {\n var mid = left + right >>> 1;\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n var n = start - left;\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n case 2:\n array[left + 2] = array[left + 1];\n case 1:\n array[left + 1] = array[left];\n break;\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n }\n array[left] = pivot;\n }\n }\n function gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n return offset;\n }\n function gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n return offset;\n }\n var TimSort = function() {\n function TimSort2(array, compare) {\n _classCallCheck(this, TimSort2);\n this.array = null;\n this.compare = null;\n this.minGallop = DEFAULT_MIN_GALLOPING;\n this.length = 0;\n this.tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n this.stackLength = 0;\n this.runStart = null;\n this.runLength = null;\n this.stackSize = 0;\n this.array = array;\n this.compare = compare;\n this.length = array.length;\n if (this.length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n this.tmpStorageLength = this.length >>> 1;\n }\n this.tmp = new Array(this.tmpStorageLength);\n this.stackLength = this.length < 120 ? 5 : this.length < 1542 ? 10 : this.length < 119151 ? 19 : 40;\n this.runStart = new Array(this.stackLength);\n this.runLength = new Array(this.stackLength);\n }\n TimSort2.prototype.pushRun = function pushRun(runStart, runLength) {\n this.runStart[this.stackSize] = runStart;\n this.runLength[this.stackSize] = runLength;\n this.stackSize += 1;\n };\n TimSort2.prototype.mergeRuns = function mergeRuns() {\n while (this.stackSize > 1) {\n var n = this.stackSize - 2;\n if (n >= 1 && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1] || n >= 2 && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]) {\n if (this.runLength[n - 1] < this.runLength[n + 1]) {\n n--;\n }\n } else if (this.runLength[n] > this.runLength[n + 1]) {\n break;\n }\n this.mergeAt(n);\n }\n };\n TimSort2.prototype.forceMergeRuns = function forceMergeRuns() {\n while (this.stackSize > 1) {\n var n = this.stackSize - 2;\n if (n > 0 && this.runLength[n - 1] < this.runLength[n + 1]) {\n n--;\n }\n this.mergeAt(n);\n }\n };\n TimSort2.prototype.mergeAt = function mergeAt(i) {\n var compare = this.compare;\n var array = this.array;\n var start1 = this.runStart[i];\n var length1 = this.runLength[i];\n var start2 = this.runStart[i + 1];\n var length2 = this.runLength[i + 1];\n this.runLength[i] = length1 + length2;\n if (i === this.stackSize - 3) {\n this.runStart[i + 1] = this.runStart[i + 2];\n this.runLength[i + 1] = this.runLength[i + 2];\n }\n this.stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n if (length1 === 0) {\n return;\n }\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n if (length2 === 0) {\n return;\n }\n if (length1 <= length2) {\n this.mergeLow(start1, length1, start2, length2);\n } else {\n this.mergeHigh(start1, length1, start2, length2);\n }\n };\n TimSort2.prototype.mergeLow = function mergeLow(start1, length1, start2, length2) {\n var compare = this.compare;\n var array = this.array;\n var tmp = this.tmp;\n var i = 0;\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n return;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n return;\n }\n var minGallop = this.minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n exit = true;\n break;\n }\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n array[dest++] = tmp[cursor1++];\n if (--length1 === 1) {\n exit = true;\n break;\n }\n minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (minGallop < 0) {\n minGallop = 0;\n }\n minGallop += 2;\n }\n this.minGallop = minGallop;\n if (minGallop < 1) {\n this.minGallop = 1;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(\"mergeLow preconditions were not respected\");\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n };\n TimSort2.prototype.mergeHigh = function mergeHigh(start1, length1, start2, length2) {\n var compare = this.compare;\n var array = this.array;\n var tmp = this.tmp;\n var i = 0;\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n return;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n return;\n }\n var minGallop = this.minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n array[dest--] = tmp[cursor2--];\n if (--length2 === 1) {\n exit = true;\n break;\n }\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n exit = true;\n break;\n }\n minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (minGallop < 0) {\n minGallop = 0;\n }\n minGallop += 2;\n }\n this.minGallop = minGallop;\n if (minGallop < 1) {\n this.minGallop = 1;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(\"mergeHigh preconditions were not respected\");\n } else {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n };\n return TimSort2;\n }();\n function sort(array, compare, lo, hi) {\n if (!Array.isArray(array)) {\n throw new TypeError(\"Can only sort arrays\");\n }\n if (!compare) {\n compare = alphabeticalCompare;\n } else if (typeof compare !== \"function\") {\n hi = lo;\n lo = compare;\n compare = alphabeticalCompare;\n }\n if (!lo) {\n lo = 0;\n }\n if (!hi) {\n hi = array.length;\n }\n var remaining = hi - lo;\n if (remaining < 2) {\n return;\n }\n var runLength = 0;\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n if (runLength < minRun) {\n var force = remaining;\n if (force > minRun) {\n force = minRun;\n }\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n ts.forceMergeRuns();\n }\n });\n})(timsort$1);\nvar timsort = timsort$1;\nfunction lessThanZeroError(p) {\n return 'Expect percentile to be >= 0 but given \"' + p + '\" and its type is \"' + typeof p + '\".';\n}\nfunction greaterThanHundredError(p) {\n return 'Expect percentile to be <= 100 but given \"' + p + '\" and its type is \"' + typeof p + '\".';\n}\nfunction nanError(p) {\n return 'Expect percentile to be a number but given \"' + p + '\" and its type is \"' + typeof p + '\".';\n}\nfunction validateInput(ps) {\n return ps.reduce(function(errors, p) {\n if (isNaN(Number(p))) {\n errors.push(nanError(p));\n } else if (p < 0) {\n errors.push(lessThanZeroError(p));\n } else if (p > 100) {\n errors.push(greaterThanHundredError(p));\n }\n return errors;\n }, []);\n}\nfunction getPsValue(p, list) {\n if (p === 0)\n return list[0];\n var kIndex = Math.ceil(list.length * (p / 100)) - 1;\n return list[kIndex];\n}\nfunction percentile(pOrPs, list, fn) {\n var ps = Array.isArray(pOrPs) ? pOrPs : [pOrPs];\n var validationErrors = validateInput(ps);\n if (validationErrors.length) {\n throw new Error(validationErrors.join(\" \"));\n }\n list = list.slice().sort(function(a, b) {\n if (fn) {\n a = fn(a);\n b = fn(b);\n }\n a = Number.isNaN(a) ? Number.NEGATIVE_INFINITY : a;\n b = Number.isNaN(b) ? Number.NEGATIVE_INFINITY : b;\n if (a > b)\n return 1;\n if (a < b)\n return -1;\n return 0;\n });\n if (ps.length === 1) {\n return getPsValue(ps[0], list);\n }\n return ps.map(function(p) {\n return getPsValue(p, list);\n });\n}\nvar lib = percentile;\nconst percentile$1 = /* @__PURE__ */ getDefaultExportFromCjs(lib);\nclass InstrumentGaugeOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"interval\");\n __publicField(this, \"sampleSize\");\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n }\n}\nclass InstrumentGaugeTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n __publicField(this, \"Inc\");\n __publicField(this, \"Dec\");\n }\n}\nclass InstrumentGauge extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n /**\n * If the gauge is being monitored as part of a time series, get the most recent recorded value (max value) from within the time interval\n * otherwise, just return the current instant value.\n */\n __privateAdd(this, _GetVal5);\n __privateAdd(this, _SetVal5);\n __privateAdd(this, _GetMin);\n __privateAdd(this, _GetMax);\n __privateAdd(this, _GetAverage);\n __privateAdd(this, _GetAndResetMaxVal);\n __privateAdd(this, _NumberCompare);\n __privateAdd(this, _GetPercentileData);\n __privateAdd(this, _val2, 0);\n __privateAdd(this, _maxval, null);\n __privateAdd(this, _lastObservedValue, 0);\n __privateAdd(this, _timeSeriesList, []);\n __privateAdd(this, _maxSampleSize, 0);\n __privateAdd(this, _timerInterval2, 0);\n __privateAdd(this, _observer, null);\n //@@ extras\n __privateAdd(this, _min, null);\n __privateAdd(this, _max, 0);\n __privateAdd(this, _observations, 0);\n __privateAdd(this, _total, 0);\n __privateAdd(this, _copy5, false);\n __publicField(this, \"percentile\");\n __publicField(this, \"min\");\n __publicField(this, \"max\");\n __publicField(this, \"avg\");\n __publicField(this, \"val\", 0);\n if (!options.label) {\n this.label = \"InstrumentGauge\";\n } else {\n this.label = options.label;\n }\n if (typeof options.interval === \"undefined\") {\n __privateSet(this, _timerInterval2, 0);\n } else {\n __privateSet(this, _timerInterval2, options.interval);\n }\n if (typeof options.sampleSize === \"undefined\") {\n __privateSet(this, _maxSampleSize, 600);\n } else {\n __privateSet(this, _maxSampleSize, options.sampleSize);\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy5, false);\n } else {\n __privateSet(this, _copy5, true);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_GAUGE\n });\n if (__privateGet(this, _copy5)) {\n this.DefineCopyProperties([\n \"val\",\n \"min\",\n \"max\",\n \"avg\",\n \"percentile\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal5, GetVal_fn5).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal5, SetVal_fn5).call(this, value);\n }\n });\n if (__privateGet(this, _timerInterval2) > 0) {\n Object.defineProperty(this, \"percentile\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetPercentileData, GetPercentileData_fn).call(this)\n });\n this._StartTimer();\n }\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n if (result.percentile) {\n this.percentile = result.percentile;\n }\n if (result.min) {\n this.min = result.min;\n }\n if (result.max) {\n this.max = result.max;\n }\n if (result.avg) {\n this.avg = result.avg;\n }\n }\n }\n WithInitVal(initVal) {\n this.val = initVal;\n return this;\n }\n WithMin() {\n Object.defineProperty(this, \"min\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetMin, GetMin_fn).call(this)\n });\n return this;\n }\n WithMax() {\n Object.defineProperty(this, \"max\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetMax, GetMax_fn).call(this)\n });\n return this;\n }\n WithAverage() {\n Object.defineProperty(this, \"avg\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetAverage, GetAverage_fn).call(this)\n });\n return this;\n }\n _StartTimer() {\n if (__privateGet(this, _timerInterval2) > 0) {\n __privateSet(this, _timeSeriesList, []);\n __privateSet(this, _observer, setInterval(() => {\n if (__privateGet(this, _timeSeriesList).length > __privateGet(this, _maxSampleSize)) {\n __privateGet(this, _timeSeriesList).shift();\n }\n const maxval = __privateMethod(this, _GetAndResetMaxVal, GetAndResetMaxVal_fn).call(this);\n __privateGet(this, _timeSeriesList).push(maxval);\n }, __privateGet(this, _timerInterval2)));\n if (isNode) {\n __privateGet(this, _observer).unref();\n }\n } else {\n throw new Error(`Unable to StartTimer for this instrument. The interval is set to <= 0.`);\n }\n }\n StopTimer() {\n if (__privateGet(this, _observer)) {\n clearTimeout(__privateGet(this, _observer));\n __privateSet(this, _observer, null);\n __privateSet(this, _timeSeriesList, []);\n }\n }\n Reset() {\n this.StopTimer();\n __privateSet(this, _maxval, 0);\n __privateSet(this, _lastObservedValue, 0);\n __privateSet(this, _val2, 0);\n __privateSet(this, _min, null);\n __privateSet(this, _max, 0);\n __privateSet(this, _observations, 0);\n __privateSet(this, _total, 0);\n if (__privateGet(this, _timerInterval2) > 0) {\n this._StartTimer();\n }\n }\n Inc(incVal = 1) {\n __privateMethod(this, _SetVal5, SetVal_fn5).call(this, __privateGet(this, _val2) + incVal);\n }\n Dec(decVal = 1) {\n __privateMethod(this, _SetVal5, SetVal_fn5).call(this, __privateGet(this, _val2) - decVal);\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.Inc) {\n this.Inc(telemetry.Inc);\n }\n if (telemetry.Dec) {\n this.Dec(telemetry.Dec);\n }\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n }\n}\n_val2 = new WeakMap();\n_maxval = new WeakMap();\n_lastObservedValue = new WeakMap();\n_timeSeriesList = new WeakMap();\n_maxSampleSize = new WeakMap();\n_timerInterval2 = new WeakMap();\n_observer = new WeakMap();\n_min = new WeakMap();\n_max = new WeakMap();\n_observations = new WeakMap();\n_total = new WeakMap();\n_copy5 = new WeakMap();\n_GetVal5 = new WeakSet();\nGetVal_fn5 = function() {\n if (__privateGet(this, _timerInterval2) > 0 && __privateGet(this, _observer) !== null) {\n if (__privateGet(this, _maxval) === null) {\n return this.GetNumber(__privateGet(this, _lastObservedValue));\n } else {\n return this.GetNumber(__privateGet(this, _maxval));\n }\n }\n return this.GetNumber(__privateGet(this, _val2));\n};\n_SetVal5 = new WeakSet();\nSetVal_fn5 = function(updatedValue) {\n __privateSet(this, _val2, updatedValue);\n __privateWrapper(this, _observations)._++;\n __privateSet(this, _total, __privateGet(this, _total) + updatedValue);\n if (__privateGet(this, _val2) > __privateGet(this, _max)) {\n __privateSet(this, _max, __privateGet(this, _val2));\n }\n if (__privateGet(this, _min) !== null) {\n if (__privateGet(this, _val2) < __privateGet(this, _min)) {\n __privateSet(this, _min, __privateGet(this, _val2));\n }\n } else {\n __privateSet(this, _min, __privateGet(this, _val2));\n }\n if (__privateGet(this, _timerInterval2) > 0) {\n __privateSet(this, _lastObservedValue, updatedValue);\n if (__privateGet(this, _maxval) === null) {\n __privateSet(this, _maxval, __privateGet(this, _val2));\n } else if (__privateGet(this, _val2) > __privateGet(this, _maxval)) {\n __privateSet(this, _maxval, __privateGet(this, _val2));\n }\n }\n};\n_GetMin = new WeakSet();\nGetMin_fn = function() {\n if (__privateGet(this, _min) !== null) {\n return __privateGet(this, _min);\n }\n return 0;\n};\n_GetMax = new WeakSet();\nGetMax_fn = function() {\n return __privateGet(this, _max);\n};\n_GetAverage = new WeakSet();\nGetAverage_fn = function() {\n if (__privateGet(this, _observations) > 0) {\n return __privateGet(this, _total) / __privateGet(this, _observations);\n }\n return 0;\n};\n_GetAndResetMaxVal = new WeakSet();\nGetAndResetMaxVal_fn = function() {\n if (__privateGet(this, _maxval) === null) {\n return __privateGet(this, _lastObservedValue);\n }\n const retVal = __privateGet(this, _maxval);\n __privateSet(this, _maxval, null);\n return retVal;\n};\n_NumberCompare = new WeakSet();\nNumberCompare_fn = function(a, b) {\n return a - b;\n};\n_GetPercentileData = new WeakSet();\nGetPercentileData_fn = function() {\n const sortedList = __privateGet(this, _timeSeriesList).slice(0);\n timsort.sort(sortedList, __privateMethod(this, _NumberCompare, NumberCompare_fn));\n return percentile$1([50, 80, 90, 95, 99, 99.95], sortedList);\n};\nclass InstrumentObjectOptions extends InstrumentBaseOptions {\n constructor() {\n super(...arguments);\n __publicField(this, \"fromJSON\");\n __publicField(this, \"initValue\");\n }\n}\nclass InstrumentObjectTelemetry extends InstrumentBaseTelemetry {\n constructor() {\n super(...arguments);\n __publicField(this, \"val\");\n }\n}\nclass InstrumentObject extends InstrumentBase {\n constructor(options = {}) {\n super(options);\n __privateAdd(this, _GetVal6);\n __privateAdd(this, _SetVal6);\n __privateAdd(this, _val3, {});\n __privateAdd(this, _copy6, false);\n __publicField(this, \"val\");\n if (typeof options.label === \"undefined\") {\n this.label = \"InstrumentObject\";\n } else {\n this.label = options.label;\n }\n if (typeof options.fromJSON === \"undefined\") {\n __privateSet(this, _copy6, false);\n } else {\n __privateSet(this, _copy6, true);\n }\n Object.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n enumerable: true,\n get: () => GaugeTypes.INSTRUMENT_OBJECT\n });\n if (__privateGet(this, _copy6)) {\n this.DefineCopyProperties([\n \"val\"\n ]);\n } else {\n Object.defineProperty(this, \"val\", {\n enumerable: true,\n get: () => __privateMethod(this, _GetVal6, GetVal_fn6).call(this),\n set: (value) => {\n __privateMethod(this, _SetVal6, SetVal_fn6).call(this, value);\n }\n });\n }\n if (typeof options.initValue !== \"undefined\") {\n this.val = options.initValue;\n } else {\n this.val = {};\n }\n if (typeof options.fromJSON !== \"undefined\") {\n const result = _cloneDeep(options.fromJSON);\n this.val = result.val;\n }\n }\n WithInitVal(initVal) {\n this.val = initVal;\n return this;\n }\n ProcessTelemetry(telemetry) {\n if (telemetry.val) {\n this.val = telemetry.val;\n }\n }\n}\n_val3 = new WeakMap();\n_copy6 = new WeakMap();\n_GetVal6 = new WeakSet();\nGetVal_fn6 = function() {\n return __privateGet(this, _val3);\n};\n_SetVal6 = new WeakSet();\nSetVal_fn6 = function(updatedValue) {\n __privateSet(this, _val3, updatedValue);\n};\nfunction CreateInstrument(sourceInstrument) {\n switch (sourceInstrument[GaugeTypes.GAUGE_TYPE]) {\n case GaugeTypes.INSTRUMENT_GAUGE:\n return new InstrumentGauge({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_VELOCITY:\n return new InstrumentVelocity({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_HISTOGRAM:\n return new InstrumentHistogram({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_LOG:\n return new InstrumentLog({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_TIMER:\n return new InstrumentTimerGauge({ fromJSON: sourceInstrument });\n case GaugeTypes.INSTRUMENT_OBJECT:\n return new InstrumentObject({ fromJSON: sourceInstrument });\n }\n throw new Error(`Cannot create instrument from type: [${sourceInstrument[GaugeTypes.GAUGE_TYPE]}]`);\n}\nfunction GetInstrumentName(gauge) {\n switch (gauge) {\n case Gauge.ACTIVE_REQUEST_GAUGE:\n return \"Active Requests\";\n case Gauge.AUTHENTICATION_COUNT_GAUGE:\n return \"Authentication Count\";\n case Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE:\n return \"Authentication Error Count\";\n case Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE:\n return \"Authentication Retry Count\";\n case Gauge.CONNECTION_POOL_IDLE_GAUGE:\n return \"Connection Pool Idle\";\n case Gauge.CONNECTION_POOL_TOTAL_GAUGE:\n return \"Connection Pool Total\";\n case Gauge.CONNECTION_POOL_WAITING_GAUGE:\n return \"Connection Pool Waiting\";\n case Gauge.CPU_LOAD_GAUGE:\n return \"CPU Load\";\n case Gauge.CPU_SYSTEM_LOAD_GAUGE:\n return \"CPU SYstem Load\";\n case Gauge.DURATION_GAUGE:\n return \"Duration\";\n case Gauge.DURATION_HISTOGRAM_GAUGE:\n return \"Diration Histogram\";\n case Gauge.ERROR_COUNT_GAUGE:\n return \"Errors\";\n case Gauge.LATENCY_GAUGE:\n return \"Latency\";\n case Gauge.LATENCY_HISTOGRAM_GAUGE:\n return \"Latency Histogram\";\n case Gauge.LOGGER:\n return \"Logger\";\n case Gauge.LOGGER_COPY:\n return \"_Logger\";\n case Gauge.NETWORK_RX_GAUGE:\n return \"Network Receive\";\n case Gauge.NETWORK_TX_GAUGE:\n return \"Network Transmit\";\n case Gauge.REQUEST_COUNT_GAUGE:\n return \"Requests\";\n case Gauge.RETRY_COUNT_GAUGE:\n return \"Retries\";\n case Gauge.TIMER_GAUGE:\n return \"Timer\";\n case Gauge.VELOCITY_GAUGE:\n return \"Velocity\";\n case Gauge.CONNECTION_COUNT_GAUGE:\n return \"TCP Connection\";\n case Gauge.OBJECT_GAUGE:\n return \"Object\";\n case Gauge.CORE_COUNT_GAUGE:\n return \"Core Count\";\n default:\n return \"Unknown\";\n }\n}\nfunction StopInstruments(instruments) {\n if (instruments) {\n if (Array.isArray(instruments)) {\n instruments.forEach((instrument) => {\n if (instrument.StopTimer) {\n instrument.StopTimer();\n }\n });\n } else {\n for (const [, value] of Object.entries(instruments)) {\n if (value.StopTimer) {\n value.StopTimer();\n }\n }\n }\n }\n}\nvar TransportType = /* @__PURE__ */ ((TransportType2) => {\n TransportType2[TransportType2[\"none\"] = 0] = \"none\";\n TransportType2[TransportType2[\"IPC\"] = 1] = \"IPC\";\n TransportType2[TransportType2[\"websocket\"] = 2] = \"websocket\";\n TransportType2[TransportType2[\"RESTAPI\"] = 4] = \"RESTAPI\";\n TransportType2[TransportType2[\"redis\"] = 8] = \"redis\";\n TransportType2[TransportType2[\"kafka\"] = 16] = \"kafka\";\n TransportType2[TransportType2[\"influxdb\"] = 32] = \"influxdb\";\n TransportType2[TransportType2[\"prometheus\"] = 64] = \"prometheus\";\n TransportType2[TransportType2[\"gRPC\"] = 128] = \"gRPC\";\n TransportType2[TransportType2[\"unixsocket\"] = 256] = \"unixsocket\";\n TransportType2[TransportType2[\"socketio\"] = 512] = \"socketio\";\n TransportType2[TransportType2[\"otelcollector\"] = 1024] = \"otelcollector\";\n TransportType2[TransportType2[\"messageport\"] = 2048] = \"messageport\";\n TransportType2[TransportType2[\"jsonrpc\"] = 4096] = \"jsonrpc\";\n TransportType2[TransportType2[\"postgresql\"] = 8192] = \"postgresql\";\n TransportType2[TransportType2[\"grafanaloki\"] = 16384] = \"grafanaloki\";\n TransportType2[TransportType2[\"logstash\"] = 32768] = \"logstash\";\n TransportType2[TransportType2[\"fluentbit\"] = 65536] = \"fluentbit\";\n TransportType2[TransportType2[\"fluentd\"] = 131072] = \"fluentd\";\n TransportType2[TransportType2[\"inmemory\"] = 262144] = \"inmemory\";\n return TransportType2;\n})(TransportType || {});\nfunction GetTransportMode(transport) {\n let trans = 0;\n try {\n transport.split(\"|\").forEach((item) => {\n switch (item) {\n case \"IPC\":\n trans |= 1;\n break;\n case \"websocket\":\n trans |= 2;\n break;\n case \"RESTAPI\":\n trans |= 4;\n break;\n case \"redis\":\n trans |= 8;\n break;\n case \"kafka\":\n trans |= 16;\n break;\n case \"influxdb\":\n trans |= 32;\n break;\n case \"prometheus\":\n trans |= 64;\n break;\n case \"gRPC\":\n trans |= 128;\n break;\n case \"unixsocket\":\n trans |= 256;\n break;\n case \"socketio\":\n trans |= 512;\n break;\n case \"otelcollector\":\n trans |= 1024;\n break;\n case \"messageport\":\n trans |= 2048;\n break;\n case \"jsonrpc\":\n trans |= 4096;\n break;\n case \"postgresql\":\n trans |= 8192;\n break;\n case \"grafanaloki\":\n trans |= 16384;\n break;\n case \"logstash\":\n trans |= 32768;\n break;\n case \"fluentbit\":\n trans |= 65536;\n break;\n case \"fluentd\":\n trans |= 131072;\n break;\n case \"inmemory\":\n trans |= 262144;\n break;\n }\n });\n } catch (error) {\n throw new Error(`GetTransportMode(): Error: [${error}]`);\n }\n return trans;\n}\nvar InstrumentPayloadType = /* @__PURE__ */ ((InstrumentPayloadType2) => {\n InstrumentPayloadType2[\"agent\"] = \"agent\";\n InstrumentPayloadType2[\"service\"] = \"service\";\n return InstrumentPayloadType2;\n})(InstrumentPayloadType || {});\nvar RequestLoggerMiddlewareEventName = /* @__PURE__ */ ((RequestLoggerMiddlewareEventName2) => {\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_AR_DEC\"] = \"UpdateInstrument_AR_DEC\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_AR_INC\"] = \"UpdateInstrument_AR_INC\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_RC_INC\"] = \"UpdateInstrument_RC_INC\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_V_INC\"] = \"UpdateInstrument_V_INC\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_DH_VAL\"] = \"UpdateInstrument_DH_VAL\";\n RequestLoggerMiddlewareEventName2[\"UpdateInstrument_D_VAL\"] = \"UpdateInstrument_D_VAL\";\n return RequestLoggerMiddlewareEventName2;\n})(RequestLoggerMiddlewareEventName || {});\nclass RequestLoggerMiddleware extends STSOptionsBase {\n constructor(options) {\n super(options);\n __privateAdd(this, _tinyEmitter, new TinyEmitter());\n __privateAdd(this, _RequestCompleted, (start) => {\n __privateGet(this, _tinyEmitter).emit(\n \"UpdateInstrument_AR_DEC\"\n /* UpdateInstrument_AR_DEC */\n );\n let timeInMs = 0;\n const end = process.hrtime(start);\n timeInMs = (end[0] * 1e9 + end[1]) / 1e6;\n timeInMs = parseFloat(timeInMs.toFixed(4));\n __privateGet(this, _tinyEmitter).emit(\"UpdateInstrument_DH_VAL\", timeInMs);\n __privateGet(this, _tinyEmitter).emit(\"UpdateInstrument_D_VAL\", timeInMs);\n });\n // https://stackoverflow.com/questions/18031839/how-to-use-process-hrtime-to-get-execution-time-of-async-function/18031945\n /**\n * Use with .bind(class instance).\n * Example;\n * ---\n * `let requestLoggerMiddleware = new RequestLoggerMiddleware();\n * app.use(requestLoggerMiddleware.Middleware.bind(requestLoggerMiddleware));`\n * @param {*} req \n * @param {*} res \n * @param {*} next \n * @returns \n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any \n __publicField(this, \"Middleware\", async (req, res, next) => {\n if (this.options.ignoresocketio && req.originalUrl.includes(\"socket.io\")) {\n return;\n }\n const start = process.hrtime();\n __privateGet(this, _tinyEmitter).emit(\n \"UpdateInstrument_AR_INC\"\n /* UpdateInstrument_AR_INC */\n );\n __privateGet(this, _tinyEmitter).emit(\n \"UpdateInstrument_RC_INC\"\n /* UpdateInstrument_RC_INC */\n );\n __privateGet(this, _tinyEmitter).emit(\n \"UpdateInstrument_V_INC\"\n /* UpdateInstrument_V_INC */\n );\n req.on(\"aborted\", () => {\n });\n req.on(\"close\", () => {\n __privateGet(this, _RequestCompleted).call(this, start);\n });\n req.on(\"end\", () => {\n });\n res.on(\"finish\", () => {\n });\n next();\n });\n }\n get options() {\n return super.options;\n }\n on(eventName, callBackFn) {\n __privateGet(this, _tinyEmitter).on(eventName, callBackFn);\n }\n}\n_tinyEmitter = new WeakMap();\n_RequestCompleted = new WeakMap();\nvar ansiStyles$1 = { exports: {} };\nvar colorName;\nvar hasRequiredColorName;\nfunction requireColorName() {\n if (hasRequiredColorName)\n return colorName;\n hasRequiredColorName = 1;\n colorName = {\n \"aliceblue\": [240, 248, 255],\n \"antiquewhite\": [250, 235, 215],\n \"aqua\": [0, 255, 255],\n \"aquamarine\": [127, 255, 212],\n \"azure\": [240, 255, 255],\n \"beige\": [245, 245, 220],\n \"bisque\": [255, 228, 196],\n \"black\": [0, 0, 0],\n \"blanchedalmond\": [255, 235, 205],\n \"blue\": [0, 0, 255],\n \"blueviolet\": [138, 43, 226],\n \"brown\": [165, 42, 42],\n \"burlywood\": [222, 184, 135],\n \"cadetblue\": [95, 158, 160],\n \"chartreuse\": [127, 255, 0],\n \"chocolate\": [210, 105, 30],\n \"coral\": [255, 127, 80],\n \"cornflowerblue\": [100, 149, 237],\n \"cornsilk\": [255, 248, 220],\n \"crimson\": [220, 20, 60],\n \"cyan\": [0, 255, 255],\n \"darkblue\": [0, 0, 139],\n \"darkcyan\": [0, 139, 139],\n \"darkgoldenrod\": [184, 134, 11],\n \"darkgray\": [169, 169, 169],\n \"darkgreen\": [0, 100, 0],\n \"darkgrey\": [169, 169, 169],\n \"darkkhaki\": [189, 183, 107],\n \"darkmagenta\": [139, 0, 139],\n \"darkolivegreen\": [85, 107, 47],\n \"darkorange\": [255, 140, 0],\n \"darkorchid\": [153, 50, 204],\n \"darkred\": [139, 0, 0],\n \"darksalmon\": [233, 150, 122],\n \"darkseagreen\": [143, 188, 143],\n \"darkslateblue\": [72, 61, 139],\n \"darkslategray\": [47, 79, 79],\n \"darkslategrey\": [47, 79, 79],\n \"darkturquoise\": [0, 206, 209],\n \"darkviolet\": [148, 0, 211],\n \"deeppink\": [255, 20, 147],\n \"deepskyblue\": [0, 191, 255],\n \"dimgray\": [105, 105, 105],\n \"dimgrey\": [105, 105, 105],\n \"dodgerblue\": [30, 144, 255],\n \"firebrick\": [178, 34, 34],\n \"floralwhite\": [255, 250, 240],\n \"forestgreen\": [34, 139, 34],\n \"fuchsia\": [255, 0, 255],\n \"gainsboro\": [220, 220, 220],\n \"ghostwhite\": [248, 248, 255],\n \"gold\": [255, 215, 0],\n \"goldenrod\": [218, 165, 32],\n \"gray\": [128, 128, 128],\n \"green\": [0, 128, 0],\n \"greenyellow\": [173, 255, 47],\n \"grey\": [128, 128, 128],\n \"honeydew\": [240, 255, 240],\n \"hotpink\": [255, 105, 180],\n \"indianred\": [205, 92, 92],\n \"indigo\": [75, 0, 130],\n \"ivory\": [255, 255, 240],\n \"khaki\": [240, 230, 140],\n \"lavender\": [230, 230, 250],\n \"lavenderblush\": [255, 240, 245],\n \"lawngreen\": [124, 252, 0],\n \"lemonchiffon\": [255, 250, 205],\n \"lightblue\": [173, 216, 230],\n \"lightcoral\": [240, 128, 128],\n \"lightcyan\": [224, 255, 255],\n \"lightgoldenrodyellow\": [250, 250, 210],\n \"lightgray\": [211, 211, 211],\n \"lightgreen\": [144, 238, 144],\n \"lightgrey\": [211, 211, 211],\n \"lightpink\": [255, 182, 193],\n \"lightsalmon\": [255, 160, 122],\n \"lightseagreen\": [32, 178, 170],\n \"lightskyblue\": [135, 206, 250],\n \"lightslategray\": [119, 136, 153],\n \"lightslategrey\": [119, 136, 153],\n \"lightsteelblue\": [176, 196, 222],\n \"lightyellow\": [255, 255, 224],\n \"lime\": [0, 255, 0],\n \"limegreen\": [50, 205, 50],\n \"linen\": [250, 240, 230],\n \"magenta\": [255, 0, 255],\n \"maroon\": [128, 0, 0],\n \"mediumaquamarine\": [102, 205, 170],\n \"mediumblue\": [0, 0, 205],\n \"mediumorchid\": [186, 85, 211],\n \"mediumpurple\": [147, 112, 219],\n \"mediumseagreen\": [60, 179, 113],\n \"mediumslateblue\": [123, 104, 238],\n \"mediumspringgreen\": [0, 250, 154],\n \"mediumturquoise\": [72, 209, 204],\n \"mediumvioletred\": [199, 21, 133],\n \"midnightblue\": [25, 25, 112],\n \"mintcream\": [245, 255, 250],\n \"mistyrose\": [255, 228, 225],\n \"moccasin\": [255, 228, 181],\n \"navajowhite\": [255, 222, 173],\n \"navy\": [0, 0, 128],\n \"oldlace\": [253, 245, 230],\n \"olive\": [128, 128, 0],\n \"olivedrab\": [107, 142, 35],\n \"orange\": [255, 165, 0],\n \"orangered\": [255, 69, 0],\n \"orchid\": [218, 112, 214],\n \"palegoldenrod\": [238, 232, 170],\n \"palegreen\": [152, 251, 152],\n \"paleturquoise\": [175, 238, 238],\n \"palevioletred\": [219, 112, 147],\n \"papayawhip\": [255, 239, 213],\n \"peachpuff\": [255, 218, 185],\n \"peru\": [205, 133, 63],\n \"pink\": [255, 192, 203],\n \"plum\": [221, 160, 221],\n \"powderblue\": [176, 224, 230],\n \"purple\": [128, 0, 128],\n \"rebeccapurple\": [102, 51, 153],\n \"red\": [255, 0, 0],\n \"rosybrown\": [188, 143, 143],\n \"royalblue\": [65, 105, 225],\n \"saddlebrown\": [139, 69, 19],\n \"salmon\": [250, 128, 114],\n \"sandybrown\": [244, 164, 96],\n \"seagreen\": [46, 139, 87],\n \"seashell\": [255, 245, 238],\n \"sienna\": [160, 82, 45],\n \"silver\": [192, 192, 192],\n \"skyblue\": [135, 206, 235],\n \"slateblue\": [106, 90, 205],\n \"slategray\": [112, 128, 144],\n \"slategrey\": [112, 128, 144],\n \"snow\": [255, 250, 250],\n \"springgreen\": [0, 255, 127],\n \"steelblue\": [70, 130, 180],\n \"tan\": [210, 180, 140],\n \"teal\": [0, 128, 128],\n \"thistle\": [216, 191, 216],\n \"tomato\": [255, 99, 71],\n \"turquoise\": [64, 224, 208],\n \"violet\": [238, 130, 238],\n \"wheat\": [245, 222, 179],\n \"white\": [255, 255, 255],\n \"whitesmoke\": [245, 245, 245],\n \"yellow\": [255, 255, 0],\n \"yellowgreen\": [154, 205, 50]\n };\n return colorName;\n}\nvar conversions;\nvar hasRequiredConversions;\nfunction requireConversions() {\n if (hasRequiredConversions)\n return conversions;\n hasRequiredConversions = 1;\n const cssKeywords = requireColorName();\n const reverseKeywords = {};\n for (const key of Object.keys(cssKeywords)) {\n reverseKeywords[cssKeywords[key]] = key;\n }\n const convert = {\n rgb: { channels: 3, labels: \"rgb\" },\n hsl: { channels: 3, labels: \"hsl\" },\n hsv: { channels: 3, labels: \"hsv\" },\n hwb: { channels: 3, labels: \"hwb\" },\n cmyk: { channels: 4, labels: \"cmyk\" },\n xyz: { channels: 3, labels: \"xyz\" },\n lab: { channels: 3, labels: \"lab\" },\n lch: { channels: 3, labels: \"lch\" },\n hex: { channels: 1, labels: [\"hex\"] },\n keyword: { channels: 1, labels: [\"keyword\"] },\n ansi16: { channels: 1, labels: [\"ansi16\"] },\n ansi256: { channels: 1, labels: [\"ansi256\"] },\n hcg: { channels: 3, labels: [\"h\", \"c\", \"g\"] },\n apple: { channels: 3, labels: [\"r16\", \"g16\", \"b16\"] },\n gray: { channels: 1, labels: [\"gray\"] }\n };\n conversions = convert;\n for (const model of Object.keys(convert)) {\n if (!(\"channels\" in convert[model])) {\n throw new Error(\"missing channels property: \" + model);\n }\n if (!(\"labels\" in convert[model])) {\n throw new Error(\"missing channel labels property: \" + model);\n }\n if (convert[model].labels.length !== convert[model].channels) {\n throw new Error(\"channel and label counts mismatch: \" + model);\n }\n const { channels, labels } = convert[model];\n delete convert[model].channels;\n delete convert[model].labels;\n Object.defineProperty(convert[model], \"channels\", { value: channels });\n Object.defineProperty(convert[model], \"labels\", { value: labels });\n }\n convert.rgb.hsl = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n let h;\n let s;\n if (max === min) {\n h = 0;\n } else if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else if (b === max) {\n h = 4 + (r - g) / delta;\n }\n h = Math.min(h * 60, 360);\n if (h < 0) {\n h += 360;\n }\n const l = (min + max) / 2;\n if (max === min) {\n s = 0;\n } else if (l <= 0.5) {\n s = delta / (max + min);\n } else {\n s = delta / (2 - max - min);\n }\n return [h, s * 100, l * 100];\n };\n convert.rgb.hsv = function(rgb) {\n let rdif;\n let gdif;\n let bdif;\n let h;\n let s;\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const v = Math.max(r, g, b);\n const diff = v - Math.min(r, g, b);\n const diffc = function(c) {\n return (v - c) / 6 / diff + 1 / 2;\n };\n if (diff === 0) {\n h = 0;\n s = 0;\n } else {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n if (r === v) {\n h = bdif - gdif;\n } else if (g === v) {\n h = 1 / 3 + rdif - bdif;\n } else if (b === v) {\n h = 2 / 3 + gdif - rdif;\n }\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n return [\n h * 360,\n s * 100,\n v * 100\n ];\n };\n convert.rgb.hwb = function(rgb) {\n const r = rgb[0];\n const g = rgb[1];\n let b = rgb[2];\n const h = convert.rgb.hsl(rgb)[0];\n const w = 1 / 255 * Math.min(r, Math.min(g, b));\n b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n return [h, w * 100, b * 100];\n };\n convert.rgb.cmyk = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const k = Math.min(1 - r, 1 - g, 1 - b);\n const c = (1 - r - k) / (1 - k) || 0;\n const m = (1 - g - k) / (1 - k) || 0;\n const y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n };\n function comparativeDistance(x, y) {\n return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2;\n }\n convert.rgb.keyword = function(rgb) {\n const reversed = reverseKeywords[rgb];\n if (reversed) {\n return reversed;\n }\n let currentClosestDistance = Infinity;\n let currentClosestKeyword;\n for (const keyword of Object.keys(cssKeywords)) {\n const value = cssKeywords[keyword];\n const distance = comparativeDistance(rgb, value);\n if (distance < currentClosestDistance) {\n currentClosestDistance = distance;\n currentClosestKeyword = keyword;\n }\n }\n return currentClosestKeyword;\n };\n convert.keyword.rgb = function(keyword) {\n return cssKeywords[keyword];\n };\n convert.rgb.xyz = function(rgb) {\n let r = rgb[0] / 255;\n let g = rgb[1] / 255;\n let b = rgb[2] / 255;\n r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92;\n g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;\n b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;\n const x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n const y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n const z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x * 100, y * 100, z * 100];\n };\n convert.rgb.lab = function(rgb) {\n const xyz = convert.rgb.xyz(rgb);\n let x = xyz[0];\n let y = xyz[1];\n let z = xyz[2];\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return [l, a, b];\n };\n convert.hsl.rgb = function(hsl) {\n const h = hsl[0] / 360;\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return [val, val, val];\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n } else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return rgb;\n };\n convert.hsl.hsv = function(hsl) {\n const h = hsl[0];\n let s = hsl[1] / 100;\n let l = hsl[2] / 100;\n let smin = s;\n const lmin = Math.max(l, 0.01);\n l *= 2;\n s *= l <= 1 ? l : 2 - l;\n smin *= lmin <= 1 ? lmin : 2 - lmin;\n const v = (l + s) / 2;\n const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);\n return [h, sv * 100, v * 100];\n };\n convert.hsv.rgb = function(hsv) {\n const h = hsv[0] / 60;\n const s = hsv[1] / 100;\n let v = hsv[2] / 100;\n const hi = Math.floor(h) % 6;\n const f = h - Math.floor(h);\n const p = 255 * v * (1 - s);\n const q = 255 * v * (1 - s * f);\n const t = 255 * v * (1 - s * (1 - f));\n v *= 255;\n switch (hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n };\n convert.hsv.hsl = function(hsv) {\n const h = hsv[0];\n const s = hsv[1] / 100;\n const v = hsv[2] / 100;\n const vmin = Math.max(v, 0.01);\n let sl;\n let l;\n l = (2 - s) * v;\n const lmin = (2 - s) * vmin;\n sl = s * vmin;\n sl /= lmin <= 1 ? lmin : 2 - lmin;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n };\n convert.hwb.rgb = function(hwb) {\n const h = hwb[0] / 360;\n let wh = hwb[1] / 100;\n let bl = hwb[2] / 100;\n const ratio = wh + bl;\n let f;\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n const i = Math.floor(6 * h);\n const v = 1 - bl;\n f = 6 * h - i;\n if ((i & 1) !== 0) {\n f = 1 - f;\n }\n const n = wh + f * (v - wh);\n let r;\n let g;\n let b;\n switch (i) {\n default:\n case 6:\n case 0:\n r = v;\n g = n;\n b = wh;\n break;\n case 1:\n r = n;\n g = v;\n b = wh;\n break;\n case 2:\n r = wh;\n g = v;\n b = n;\n break;\n case 3:\n r = wh;\n g = n;\n b = v;\n break;\n case 4:\n r = n;\n g = wh;\n b = v;\n break;\n case 5:\n r = v;\n g = wh;\n b = n;\n break;\n }\n return [r * 255, g * 255, b * 255];\n };\n convert.cmyk.rgb = function(cmyk) {\n const c = cmyk[0] / 100;\n const m = cmyk[1] / 100;\n const y = cmyk[2] / 100;\n const k = cmyk[3] / 100;\n const r = 1 - Math.min(1, c * (1 - k) + k);\n const g = 1 - Math.min(1, m * (1 - k) + k);\n const b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n };\n convert.xyz.rgb = function(xyz) {\n const x = xyz[0] / 100;\n const y = xyz[1] / 100;\n const z = xyz[2] / 100;\n let r;\n let g;\n let b;\n r = x * 3.2406 + y * -1.5372 + z * -0.4986;\n g = x * -0.9689 + y * 1.8758 + z * 0.0415;\n b = x * 0.0557 + y * -0.204 + z * 1.057;\n r = r > 31308e-7 ? 1.055 * r ** (1 / 2.4) - 0.055 : r * 12.92;\n g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92;\n b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92;\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n return [r * 255, g * 255, b * 255];\n };\n convert.xyz.lab = function(xyz) {\n let x = xyz[0];\n let y = xyz[1];\n let z = xyz[2];\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116;\n y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;\n z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116;\n const l = 116 * y - 16;\n const a = 500 * (x - y);\n const b = 200 * (y - z);\n return [l, a, b];\n };\n convert.lab.xyz = function(lab) {\n const l = lab[0];\n const a = lab[1];\n const b = lab[2];\n let x;\n let y;\n let z;\n y = (l + 16) / 116;\n x = a / 500 + y;\n z = y - b / 200;\n const y2 = y ** 3;\n const x2 = x ** 3;\n const z2 = z ** 3;\n y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787;\n x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787;\n z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787;\n x *= 95.047;\n y *= 100;\n z *= 108.883;\n return [x, y, z];\n };\n convert.lab.lch = function(lab) {\n const l = lab[0];\n const a = lab[1];\n const b = lab[2];\n let h;\n const hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n const c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n };\n convert.lch.lab = function(lch) {\n const l = lch[0];\n const c = lch[1];\n const h = lch[2];\n const hr = h / 360 * 2 * Math.PI;\n const a = c * Math.cos(hr);\n const b = c * Math.sin(hr);\n return [l, a, b];\n };\n convert.rgb.ansi16 = function(args, saturation = null) {\n const [r, g, b] = args;\n let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation;\n value = Math.round(value / 50);\n if (value === 0) {\n return 30;\n }\n let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));\n if (value === 2) {\n ansi += 60;\n }\n return ansi;\n };\n convert.hsv.ansi16 = function(args) {\n return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n };\n convert.rgb.ansi256 = function(args) {\n const r = args[0];\n const g = args[1];\n const b = args[2];\n if (r === g && g === b) {\n if (r < 8) {\n return 16;\n }\n if (r > 248) {\n return 231;\n }\n return Math.round((r - 8) / 247 * 24) + 232;\n }\n const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);\n return ansi;\n };\n convert.ansi16.rgb = function(args) {\n let color = args % 10;\n if (color === 0 || color === 7) {\n if (args > 50) {\n color += 3.5;\n }\n color = color / 10.5 * 255;\n return [color, color, color];\n }\n const mult = (~~(args > 50) + 1) * 0.5;\n const r = (color & 1) * mult * 255;\n const g = (color >> 1 & 1) * mult * 255;\n const b = (color >> 2 & 1) * mult * 255;\n return [r, g, b];\n };\n convert.ansi256.rgb = function(args) {\n if (args >= 232) {\n const c = (args - 232) * 10 + 8;\n return [c, c, c];\n }\n args -= 16;\n let rem;\n const r = Math.floor(args / 36) / 5 * 255;\n const g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n const b = rem % 6 / 5 * 255;\n return [r, g, b];\n };\n convert.rgb.hex = function(args) {\n const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);\n const string = integer.toString(16).toUpperCase();\n return \"000000\".substring(string.length) + string;\n };\n convert.hex.rgb = function(args) {\n const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n if (!match) {\n return [0, 0, 0];\n }\n let colorString = match[0];\n if (match[0].length === 3) {\n colorString = colorString.split(\"\").map((char) => {\n return char + char;\n }).join(\"\");\n }\n const integer = parseInt(colorString, 16);\n const r = integer >> 16 & 255;\n const g = integer >> 8 & 255;\n const b = integer & 255;\n return [r, g, b];\n };\n convert.rgb.hcg = function(rgb) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(Math.max(r, g), b);\n const min = Math.min(Math.min(r, g), b);\n const chroma = max - min;\n let grayscale;\n let hue;\n if (chroma < 1) {\n grayscale = min / (1 - chroma);\n } else {\n grayscale = 0;\n }\n if (chroma <= 0) {\n hue = 0;\n } else if (max === r) {\n hue = (g - b) / chroma % 6;\n } else if (max === g) {\n hue = 2 + (b - r) / chroma;\n } else {\n hue = 4 + (r - g) / chroma;\n }\n hue /= 6;\n hue %= 1;\n return [hue * 360, chroma * 100, grayscale * 100];\n };\n convert.hsl.hcg = function(hsl) {\n const s = hsl[1] / 100;\n const l = hsl[2] / 100;\n const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l);\n let f = 0;\n if (c < 1) {\n f = (l - 0.5 * c) / (1 - c);\n }\n return [hsl[0], c * 100, f * 100];\n };\n convert.hsv.hcg = function(hsv) {\n const s = hsv[1] / 100;\n const v = hsv[2] / 100;\n const c = s * v;\n let f = 0;\n if (c < 1) {\n f = (v - c) / (1 - c);\n }\n return [hsv[0], c * 100, f * 100];\n };\n convert.hcg.rgb = function(hcg) {\n const h = hcg[0] / 360;\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n if (c === 0) {\n return [g * 255, g * 255, g * 255];\n }\n const pure = [0, 0, 0];\n const hi = h % 1 * 6;\n const v = hi % 1;\n const w = 1 - v;\n let mg = 0;\n switch (Math.floor(hi)) {\n case 0:\n pure[0] = 1;\n pure[1] = v;\n pure[2] = 0;\n break;\n case 1:\n pure[0] = w;\n pure[1] = 1;\n pure[2] = 0;\n break;\n case 2:\n pure[0] = 0;\n pure[1] = 1;\n pure[2] = v;\n break;\n case 3:\n pure[0] = 0;\n pure[1] = w;\n pure[2] = 1;\n break;\n case 4:\n pure[0] = v;\n pure[1] = 0;\n pure[2] = 1;\n break;\n default:\n pure[0] = 1;\n pure[1] = 0;\n pure[2] = w;\n }\n mg = (1 - c) * g;\n return [\n (c * pure[0] + mg) * 255,\n (c * pure[1] + mg) * 255,\n (c * pure[2] + mg) * 255\n ];\n };\n convert.hcg.hsv = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const v = c + g * (1 - c);\n let f = 0;\n if (v > 0) {\n f = c / v;\n }\n return [hcg[0], f * 100, v * 100];\n };\n convert.hcg.hsl = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const l = g * (1 - c) + 0.5 * c;\n let s = 0;\n if (l > 0 && l < 0.5) {\n s = c / (2 * l);\n } else if (l >= 0.5 && l < 1) {\n s = c / (2 * (1 - l));\n }\n return [hcg[0], s * 100, l * 100];\n };\n convert.hcg.hwb = function(hcg) {\n const c = hcg[1] / 100;\n const g = hcg[2] / 100;\n const v = c + g * (1 - c);\n return [hcg[0], (v - c) * 100, (1 - v) * 100];\n };\n convert.hwb.hcg = function(hwb) {\n const w = hwb[1] / 100;\n const b = hwb[2] / 100;\n const v = 1 - b;\n const c = v - w;\n let g = 0;\n if (c < 1) {\n g = (v - c) / (1 - c);\n }\n return [hwb[0], c * 100, g * 100];\n };\n convert.apple.rgb = function(apple) {\n return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];\n };\n convert.rgb.apple = function(rgb) {\n return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];\n };\n convert.gray.rgb = function(args) {\n return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n };\n convert.gray.hsl = function(args) {\n return [0, 0, args[0]];\n };\n convert.gray.hsv = convert.gray.hsl;\n convert.gray.hwb = function(gray) {\n return [0, 100, gray[0]];\n };\n convert.gray.cmyk = function(gray) {\n return [0, 0, 0, gray[0]];\n };\n convert.gray.lab = function(gray) {\n return [gray[0], 0, 0];\n };\n convert.gray.hex = function(gray) {\n const val = Math.round(gray[0] / 100 * 255) & 255;\n const integer = (val << 16) + (val << 8) + val;\n const string = integer.toString(16).toUpperCase();\n return \"000000\".substring(string.length) + string;\n };\n convert.rgb.gray = function(rgb) {\n const val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n return [val / 255 * 100];\n };\n return conversions;\n}\nvar route;\nvar hasRequiredRoute;\nfunction requireRoute() {\n if (hasRequiredRoute)\n return route;\n hasRequiredRoute = 1;\n const conversions2 = requireConversions();\n function buildGraph() {\n const graph = {};\n const models = Object.keys(conversions2);\n for (let len = models.length, i = 0; i < len; i++) {\n graph[models[i]] = {\n // http://jsperf.com/1-vs-infinity\n // micro-opt, but this is simple.\n distance: -1,\n parent: null\n };\n }\n return graph;\n }\n function deriveBFS(fromModel) {\n const graph = buildGraph();\n const queue = [fromModel];\n graph[fromModel].distance = 0;\n while (queue.length) {\n const current = queue.pop();\n const adjacents = Object.keys(conversions2[current]);\n for (let len = adjacents.length, i = 0; i < len; i++) {\n const adjacent = adjacents[i];\n const node = graph[adjacent];\n if (node.distance === -1) {\n node.distance = graph[current].distance + 1;\n node.parent = current;\n queue.unshift(adjacent);\n }\n }\n }\n return graph;\n }\n function link(from, to) {\n return function(args) {\n return to(from(args));\n };\n }\n function wrapConversion(toModel, graph) {\n const path = [graph[toModel].parent, toModel];\n let fn = conversions2[graph[toModel].parent][toModel];\n let cur = graph[toModel].parent;\n while (graph[cur].parent) {\n path.unshift(graph[cur].parent);\n fn = link(conversions2[graph[cur].parent][cur], fn);\n cur = graph[cur].parent;\n }\n fn.conversion = path;\n return fn;\n }\n route = function(fromModel) {\n const graph = deriveBFS(fromModel);\n const conversion = {};\n const models = Object.keys(graph);\n for (let len = models.length, i = 0; i < len; i++) {\n const toModel = models[i];\n const node = graph[toModel];\n if (node.parent === null) {\n continue;\n }\n conversion[toModel] = wrapConversion(toModel, graph);\n }\n return conversion;\n };\n return route;\n}\nvar colorConvert;\nvar hasRequiredColorConvert;\nfunction requireColorConvert() {\n if (hasRequiredColorConvert)\n return colorConvert;\n hasRequiredColorConvert = 1;\n const conversions2 = requireConversions();\n const route2 = requireRoute();\n const convert = {};\n const models = Object.keys(conversions2);\n function wrapRaw(fn) {\n const wrappedFn = function(...args) {\n const arg0 = args[0];\n if (arg0 === void 0 || arg0 === null) {\n return arg0;\n }\n if (arg0.length > 1) {\n args = arg0;\n }\n return fn(args);\n };\n if (\"conversion\" in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n }\n function wrapRounded(fn) {\n const wrappedFn = function(...args) {\n const arg0 = args[0];\n if (arg0 === void 0 || arg0 === null) {\n return arg0;\n }\n if (arg0.length > 1) {\n args = arg0;\n }\n const result = fn(args);\n if (typeof result === \"object\") {\n for (let len = result.length, i = 0; i < len; i++) {\n result[i] = Math.round(result[i]);\n }\n }\n return result;\n };\n if (\"conversion\" in fn) {\n wrappedFn.conversion = fn.conversion;\n }\n return wrappedFn;\n }\n models.forEach((fromModel) => {\n convert[fromModel] = {};\n Object.defineProperty(convert[fromModel], \"channels\", { value: conversions2[fromModel].channels });\n Object.defineProperty(convert[fromModel], \"labels\", { value: conversions2[fromModel].labels });\n const routes = route2(fromModel);\n const routeModels = Object.keys(routes);\n routeModels.forEach((toModel) => {\n const fn = routes[toModel];\n convert[fromModel][toModel] = wrapRounded(fn);\n convert[fromModel][toModel].raw = wrapRaw(fn);\n });\n });\n colorConvert = convert;\n return colorConvert;\n}\nansiStyles$1.exports;\n(function(module) {\n const wrapAnsi16 = (fn, offset) => (...args) => {\n const code = fn(...args);\n return `\\x1B[${code + offset}m`;\n };\n const wrapAnsi256 = (fn, offset) => (...args) => {\n const code = fn(...args);\n return `\\x1B[${38 + offset};5;${code}m`;\n };\n const wrapAnsi16m = (fn, offset) => (...args) => {\n const rgb = fn(...args);\n return `\\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n };\n const ansi2ansi = (n) => n;\n const rgb2rgb = (r, g, b) => [r, g, b];\n const setLazyProperty = (object, property, get) => {\n Object.defineProperty(object, property, {\n get: () => {\n const value = get();\n Object.defineProperty(object, property, {\n value,\n enumerable: true,\n configurable: true\n });\n return value;\n },\n enumerable: true,\n configurable: true\n });\n };\n let colorConvert2;\n const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n if (colorConvert2 === void 0) {\n colorConvert2 = requireColorConvert();\n }\n const offset = isBackground ? 10 : 0;\n const styles2 = {};\n for (const [sourceSpace, suite] of Object.entries(colorConvert2)) {\n const name = sourceSpace === \"ansi16\" ? \"ansi\" : sourceSpace;\n if (sourceSpace === targetSpace) {\n styles2[name] = wrap(identity, offset);\n } else if (typeof suite === \"object\") {\n styles2[name] = wrap(suite[targetSpace], offset);\n }\n }\n return styles2;\n };\n function assembleStyles() {\n const codes = /* @__PURE__ */ new Map();\n const styles2 = {\n modifier: {\n reset: [0, 0],\n // 21 isn't widely supported and 22 does the same thing\n bold: [1, 22],\n dim: [2, 22],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29]\n },\n color: {\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n // Bright color\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39]\n },\n bgColor: {\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n // Bright color\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49]\n }\n };\n styles2.color.gray = styles2.color.blackBright;\n styles2.bgColor.bgGray = styles2.bgColor.bgBlackBright;\n styles2.color.grey = styles2.color.blackBright;\n styles2.bgColor.bgGrey = styles2.bgColor.bgBlackBright;\n for (const [groupName, group] of Object.entries(styles2)) {\n for (const [styleName, style] of Object.entries(group)) {\n styles2[styleName] = {\n open: `\\x1B[${style[0]}m`,\n close: `\\x1B[${style[1]}m`\n };\n group[styleName] = styles2[styleName];\n codes.set(style[0], style[1]);\n }\n Object.defineProperty(styles2, groupName, {\n value: group,\n enumerable: false\n });\n }\n Object.defineProperty(styles2, \"codes\", {\n value: codes,\n enumerable: false\n });\n styles2.color.close = \"\\x1B[39m\";\n styles2.bgColor.close = \"\\x1B[49m\";\n setLazyProperty(styles2.color, \"ansi\", () => makeDynamicStyles(wrapAnsi16, \"ansi16\", ansi2ansi, false));\n setLazyProperty(styles2.color, \"ansi256\", () => makeDynamicStyles(wrapAnsi256, \"ansi256\", ansi2ansi, false));\n setLazyProperty(styles2.color, \"ansi16m\", () => makeDynamicStyles(wrapAnsi16m, \"rgb\", rgb2rgb, false));\n setLazyProperty(styles2.bgColor, \"ansi\", () => makeDynamicStyles(wrapAnsi16, \"ansi16\", ansi2ansi, true));\n setLazyProperty(styles2.bgColor, \"ansi256\", () => makeDynamicStyles(wrapAnsi256, \"ansi256\", ansi2ansi, true));\n setLazyProperty(styles2.bgColor, \"ansi16m\", () => makeDynamicStyles(wrapAnsi16m, \"rgb\", rgb2rgb, true));\n return styles2;\n }\n Object.defineProperty(module, \"exports\", {\n enumerable: true,\n get: assembleStyles\n });\n})(ansiStyles$1);\nvar ansiStylesExports = ansiStyles$1.exports;\nvar browser = {\n stdout: false,\n stderr: false\n};\nconst stringReplaceAll$1 = (string, substring, replacer) => {\n let index = string.indexOf(substring);\n if (index === -1) {\n return string;\n }\n const substringLength = substring.length;\n let endIndex = 0;\n let returnValue = \"\";\n do {\n returnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n endIndex = index + substringLength;\n index = string.indexOf(substring, endIndex);\n } while (index !== -1);\n returnValue += string.substr(endIndex);\n return returnValue;\n};\nconst stringEncaseCRLFWithFirstIndex$1 = (string, prefix, postfix, index) => {\n let endIndex = 0;\n let returnValue = \"\";\n do {\n const gotCR = string[index - 1] === \"\\r\";\n returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? \"\\r\\n\" : \"\\n\") + postfix;\n endIndex = index + 1;\n index = string.indexOf(\"\\n\", endIndex);\n } while (index !== -1);\n returnValue += string.substr(endIndex);\n return returnValue;\n};\nvar util = {\n stringReplaceAll: stringReplaceAll$1,\n stringEncaseCRLFWithFirstIndex: stringEncaseCRLFWithFirstIndex$1\n};\nvar templates;\nvar hasRequiredTemplates;\nfunction requireTemplates() {\n if (hasRequiredTemplates)\n return templates;\n hasRequiredTemplates = 1;\n const TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\n const STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\n const STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\n const ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n const ESCAPES = /* @__PURE__ */ new Map([\n [\"n\", \"\\n\"],\n [\"r\", \"\\r\"],\n [\"t\", \"\t\"],\n [\"b\", \"\\b\"],\n [\"f\", \"\\f\"],\n [\"v\", \"\\v\"],\n [\"0\", \"\\0\"],\n [\"\\\\\", \"\\\\\"],\n [\"e\", \"\\x1B\"],\n [\"a\", \"\\x07\"]\n ]);\n function unescape(c) {\n const u = c[0] === \"u\";\n const bracket = c[1] === \"{\";\n if (u && !bracket && c.length === 5 || c[0] === \"x\" && c.length === 3) {\n return String.fromCharCode(parseInt(c.slice(1), 16));\n }\n if (u && bracket) {\n return String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n }\n return ESCAPES.get(c) || c;\n }\n function parseArguments(name, arguments_) {\n const results = [];\n const chunks = arguments_.trim().split(/\\s*,\\s*/g);\n let matches;\n for (const chunk of chunks) {\n const number = Number(chunk);\n if (!Number.isNaN(number)) {\n results.push(number);\n } else if (matches = chunk.match(STRING_REGEX)) {\n results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n } else {\n throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n }\n }\n return results;\n }\n function parseStyle(style) {\n STYLE_REGEX.lastIndex = 0;\n const results = [];\n let matches;\n while ((matches = STYLE_REGEX.exec(style)) !== null) {\n const name = matches[1];\n if (matches[2]) {\n const args = parseArguments(name, matches[2]);\n results.push([name].concat(args));\n } else {\n results.push([name]);\n }\n }\n return results;\n }\n function buildStyle(chalk2, styles2) {\n const enabled = {};\n for (const layer of styles2) {\n for (const style of layer.styles) {\n enabled[style[0]] = layer.inverse ? null : style.slice(1);\n }\n }\n let current = chalk2;\n for (const [styleName, styles3] of Object.entries(enabled)) {\n if (!Array.isArray(styles3)) {\n continue;\n }\n if (!(styleName in current)) {\n throw new Error(`Unknown Chalk style: ${styleName}`);\n }\n current = styles3.length > 0 ? current[styleName](...styles3) : current[styleName];\n }\n return current;\n }\n templates = (chalk2, temporary) => {\n const styles2 = [];\n const chunks = [];\n let chunk = [];\n temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n if (escapeCharacter) {\n chunk.push(unescape(escapeCharacter));\n } else if (style) {\n const string = chunk.join(\"\");\n chunk = [];\n chunks.push(styles2.length === 0 ? string : buildStyle(chalk2, styles2)(string));\n styles2.push({ inverse, styles: parseStyle(style) });\n } else if (close) {\n if (styles2.length === 0) {\n throw new Error(\"Found extraneous } in Chalk template literal\");\n }\n chunks.push(buildStyle(chalk2, styles2)(chunk.join(\"\")));\n chunk = [];\n styles2.pop();\n } else {\n chunk.push(character);\n }\n });\n chunks.push(chunk.join(\"\"));\n if (styles2.length > 0) {\n const errMessage = `Chalk template literal is missing ${styles2.length} closing bracket${styles2.length === 1 ? \"\" : \"s\"} (\\`}\\`)`;\n throw new Error(errMessage);\n }\n return chunks.join(\"\");\n };\n return templates;\n}\nconst ansiStyles = ansiStylesExports;\nconst { stdout: stdoutColor, stderr: stderrColor } = browser;\nconst {\n stringReplaceAll,\n stringEncaseCRLFWithFirstIndex\n} = util;\nconst { isArray } = Array;\nconst levelMapping = [\n \"ansi\",\n \"ansi\",\n \"ansi256\",\n \"ansi16m\"\n];\nconst styles = /* @__PURE__ */ Object.create(null);\nconst applyOptions = (object, options = {}) => {\n if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n throw new Error(\"The `level` option should be an integer from 0 to 3\");\n }\n const colorLevel = stdoutColor ? stdoutColor.level : 0;\n object.level = options.level === void 0 ? colorLevel : options.level;\n};\nclass ChalkClass {\n constructor(options) {\n return chalkFactory(options);\n }\n}\nconst chalkFactory = (options) => {\n const chalk2 = {};\n applyOptions(chalk2, options);\n chalk2.template = (...arguments_) => chalkTag(chalk2.template, ...arguments_);\n Object.setPrototypeOf(chalk2, Chalk.prototype);\n Object.setPrototypeOf(chalk2.template, chalk2);\n chalk2.template.constructor = () => {\n throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\");\n };\n chalk2.template.Instance = ChalkClass;\n return chalk2.template;\n};\nfunction Chalk(options) {\n return chalkFactory(options);\n}\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n styles[styleName] = {\n get() {\n const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n Object.defineProperty(this, styleName, { value: builder });\n return builder;\n }\n };\n}\nstyles.visible = {\n get() {\n const builder = createBuilder(this, this._styler, true);\n Object.defineProperty(this, \"visible\", { value: builder });\n return builder;\n }\n};\nconst usedModels = [\"rgb\", \"hex\", \"keyword\", \"hsl\", \"hsv\", \"hwb\", \"ansi\", \"ansi256\"];\nfor (const model of usedModels) {\n styles[model] = {\n get() {\n const { level } = this;\n return function(...arguments_) {\n const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n return createBuilder(this, styler, this._isEmpty);\n };\n }\n };\n}\nfor (const model of usedModels) {\n const bgModel = \"bg\" + model[0].toUpperCase() + model.slice(1);\n styles[bgModel] = {\n get() {\n const { level } = this;\n return function(...arguments_) {\n const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n return createBuilder(this, styler, this._isEmpty);\n };\n }\n };\n}\nconst proto = Object.defineProperties(() => {\n}, {\n ...styles,\n level: {\n enumerable: true,\n get() {\n return this._generator.level;\n },\n set(level) {\n this._generator.level = level;\n }\n }\n});\nconst createStyler = (open, close, parent) => {\n let openAll;\n let closeAll;\n if (parent === void 0) {\n openAll = open;\n closeAll = close;\n } else {\n openAll = parent.openAll + open;\n closeAll = close + parent.closeAll;\n }\n return {\n open,\n close,\n openAll,\n closeAll,\n parent\n };\n};\nconst createBuilder = (self2, _styler, _isEmpty) => {\n const builder = (...arguments_) => {\n if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n return applyStyle(builder, chalkTag(builder, ...arguments_));\n }\n return applyStyle(builder, arguments_.length === 1 ? \"\" + arguments_[0] : arguments_.join(\" \"));\n };\n Object.setPrototypeOf(builder, proto);\n builder._generator = self2;\n builder._styler = _styler;\n builder._isEmpty = _isEmpty;\n return builder;\n};\nconst applyStyle = (self2, string) => {\n if (self2.level <= 0 || !string) {\n return self2._isEmpty ? \"\" : string;\n }\n let styler = self2._styler;\n if (styler === void 0) {\n return string;\n }\n const { openAll, closeAll } = styler;\n if (string.indexOf(\"\\x1B\") !== -1) {\n while (styler !== void 0) {\n string = stringReplaceAll(string, styler.close, styler.open);\n styler = styler.parent;\n }\n }\n const lfIndex = string.indexOf(\"\\n\");\n if (lfIndex !== -1) {\n string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n }\n return openAll + string + closeAll;\n};\nlet template;\nconst chalkTag = (chalk2, ...strings) => {\n const [firstString] = strings;\n if (!isArray(firstString) || !isArray(firstString.raw)) {\n return strings.join(\" \");\n }\n const arguments_ = strings.slice(1);\n const parts = [firstString.raw[0]];\n for (let i = 1; i < firstString.length; i++) {\n parts.push(\n String(arguments_[i - 1]).replace(/[{}\\\\]/g, \"\\\\$&\"),\n String(firstString.raw[i])\n );\n }\n if (template === void 0) {\n template = requireTemplates();\n }\n return template(chalk2, parts.join(\"\"));\n};\nObject.defineProperties(Chalk.prototype, styles);\nconst chalk = Chalk();\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({ level: stderrColor ? stderrColor.level : 0 });\nchalk.stderr.supportsColor = stderrColor;\nvar source = chalk;\nconst chalk$1 = /* @__PURE__ */ getDefaultExportFromCjs(source);\nvar ePublishState = /* @__PURE__ */ ((ePublishState2) => {\n ePublishState2[ePublishState2[\"init\"] = 0] = \"init\";\n ePublishState2[ePublishState2[\"started\"] = 1] = \"started\";\n ePublishState2[ePublishState2[\"stopping\"] = 2] = \"stopping\";\n return ePublishState2;\n})(ePublishState || {});\nclass PublishInstrumentController extends STSOptionsBase {\n constructor(options) {\n super(options);\n __privateAdd(this, _GetInstrument);\n __privateAdd(this, _ProcessTelemetryCommand);\n // Instrument factory\n __privateAdd(this, _CreateInstrument);\n __privateAdd(this, _CreateInstruments);\n __privateAdd(this, _GetPayloadData);\n __privateAdd(this, _PublishTimeoutLoop);\n __privateAdd(this, _instruments, {});\n __privateAdd(this, _inPublish, false);\n __privateAdd(this, _observer2, null);\n __privateAdd(this, _publishState, 0);\n __publicField(this, \"LogEx\", (message) => {\n this.UpdateInstrument(Gauge.LOGGER, {\n LogMessage: message\n });\n });\n this.SetupInstrumentation();\n this.StartPublish();\n }\n get options() {\n return super.options;\n }\n async Publish() {\n if (__privateGet(this, _inPublish)) {\n return false;\n }\n try {\n __privateSet(this, _inPublish, true);\n if (Object.keys(__privateGet(this, _instruments)).length > 0) {\n const instrumentPayload = __privateMethod(this, _GetPayloadData, GetPayloadData_fn).call(this, this.options.processContext, __privateGet(this, _instruments));\n return await this.options.publisherTransport.Publish(instrumentPayload);\n } else {\n return true;\n }\n } catch (error) {\n return false;\n } finally {\n __privateSet(this, _inPublish, false);\n }\n }\n async StartPublish() {\n if (__privateGet(this, _publishState) !== 0) {\n this.options.logger.debug(chalk$1.yellow(`StartPublish:${this.options.processContext.nid}: StartPublish called when not currently in the init state.`));\n return false;\n }\n __privateSet(this, _publishState, 1);\n __privateMethod(this, _PublishTimeoutLoop, PublishTimeoutLoop_fn).call(this, this.options.publishInterval);\n return true;\n }\n async EndPublish() {\n if (__privateGet(this, _publishState) !== 1) {\n this.options.logger.debug(chalk$1.yellow(`EndPublish:${this.options.processContext.nid}: EndPublish called when not within the started state.`));\n return false;\n }\n __privateSet(this, _publishState, 2);\n if (__privateGet(this, _observer2) !== null) {\n clearInterval(__privateGet(this, _observer2));\n __privateSet(this, _observer2, null);\n await this.Publish();\n }\n await this.options.publisherTransport.Close();\n __privateSet(this, _publishState, 0);\n return true;\n }\n SetupInstrumentation() {\n if (!this.options.instrumentDefinitions) {\n this.options.logger.debug(chalk$1.yellow(`SetupInstrumentation:${this.options.processContext.nid}: No instrument(s) defined within supplied options.`));\n return;\n }\n if (!this.options.processContext) {\n this.options.logger.debug(chalk$1.yellow(`SetupInstrumentation: No context defined within supplied options.`));\n return;\n }\n __privateMethod(this, _CreateInstruments, CreateInstruments_fn).call(this, this.options.instrumentDefinitions);\n }\n /**\n * Check if an instrument exists within the managed instrument collection\n * @param instrumentName \n * @returns \n */\n InstrumentExists(instrumentName) {\n if (__privateGet(this, _instruments)[instrumentName]) {\n return true;\n }\n return false;\n }\n /**\n * Update instrument telemetry.\n * @param instrumentName \n * @param telemetry \n */\n UpdateInstrument(instrumentName, telemetry) {\n if (__privateGet(this, _instruments)[instrumentName]) {\n __privateMethod(this, _ProcessTelemetryCommand, ProcessTelemetryCommand_fn).call(this, instrumentName, telemetry);\n } else {\n this.options.logger.debug(chalk$1.red(`UpdateInstrument:${this.options.processContext.nid}: Attempted to UpdateInstrument before initialised.`));\n }\n }\n /*\n #GetHttpAgentInstruments(): InstrumentDefinitions {\n if (isNode) {\n return [ ];\n } else {\n return [\n [ Gauge.REQUEST_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of requests serviced\n [ Gauge.ERROR_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.AUTHENTICATION_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests\n [ Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests errors\n [ Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests retries\n [ Gauge.ACTIVE_REQUEST_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, { // Total number of runners (in-flight) requests\n interval: this.options.instrumentationObservationInterval, \n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.DURATION_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, { // Duration of latest http(s) request.\n interval: this.options.instrumentationObservationInterval,\n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.DURATION_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],\n [ Gauge.VELOCITY_GAUGE, GaugeTypes.INSTRUMENT_VELOCITY ], // Requests per second\n [ Gauge.CORE_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Thread count (for http agents)\n [ Gauge.LATENCY_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval,\n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.LATENCY_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],\n [ Gauge.CHILD_COUNT, GaugeTypes.INSTRUMENT_GAUGE ], // Number of async runners idle or running\n ]\n }\n }\n */\n /*\n #GetHttpNodeServerInstruments(): InstrumentDefinitions {\n if (isNode) {\n if (this.options.httpServer === true) {\n return [\n [ Gauge.REQUEST_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of requests serviced\n [ Gauge.AUTHENTICATION_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests\n [ Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests errors\n [ Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ], // Total number of new token requests retries\n \n [ Gauge.ACTIVE_REQUEST_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval, \n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.DURATION_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval,\n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.DURATION_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],\n [ Gauge.CONNECTION_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, { \n interval: this.options.instrumentationObservationInterval, \n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n \t\t\n [ Gauge.CONNECTION_POOL_TOTAL_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.CONNECTION_POOL_IDLE_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.CONNECTION_POOL_WAITING_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.VELOCITY_GAUGE, GaugeTypes.INSTRUMENT_VELOCITY ], // Requests per second\n [ Gauge.ERROR_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.RETRY_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ],\n [ Gauge.LATENCY_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval,\n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.LATENCY_HISTOGRAM_GAUGE, GaugeTypes.INSTRUMENT_HISTOGRAM ],\n [ Gauge.CORE_COUNT_GAUGE, GaugeTypes.INSTRUMENT_GAUGE ]\n ]\n } else {\n return [ ];\n }\n } else {\n return [ ];\n }\n }\n */\n /*\n #GetAdditionalInstruments(): InstrumentDefinitions {\n if (this.options.instrumentDefinitions) {\n return this.options.instrumentDefinitions;\n } else {\n return [ ];\n }\n }\n */\n /*\n #SetupInstruments() {\n this.options.logger.debug(chalk.yellow(`#SetupInstruments:${this.options.processContext.nid}: Started`));\n \n const standardInstruments: InstrumentDefinitions = [\n [ Gauge.TIMER_GAUGE, GaugeTypes.INSTRUMENT_TIMER ],\n [ Gauge.LOGGER, GaugeTypes.INSTRUMENT_LOG, {\n consoleLogging: this.options.consoleLogging,\n instrumentLogging: this.options.instrumentLogging } as InstrumentLogOptions],\n [ Gauge.NETWORK_RX_GAUGE , GaugeTypes.INSTRUMENT_VELOCITY ],\n [ Gauge.NETWORK_TX_GAUGE, GaugeTypes.INSTRUMENT_VELOCITY ]\n ];\n \n let nodeStandardInstruments: InstrumentDefinitions = [ ];\n if (isNode) {\n nodeStandardInstruments = [\n [ Gauge.CPU_LOAD_GAUGE, GaugeTypes.INSTRUMENT_GAUGE, {\n interval: this.options.instrumentationObservationInterval, \n sampleSize: this.options.instrumentationTimeWindow } as InstrumentGaugeOptions],\n [ Gauge.OBJECT_GAUGE, GaugeTypes.INSTRUMENT_OBJECT, {\n label:'InstrumentObjectMaster' } as InstrumentObjectOptions]\n ];\n }\n \n const instruments: InstrumentDefinitions = [\n ...standardInstruments,\n ...nodeStandardInstruments,\n ...this.#GetHttpAgentInstruments(),\n ...this.#GetHttpNodeServerInstruments(),\n ...this.#GetAdditionalInstruments()\n ]\n \n this.options.logger.debug(chalk.green(`#SetupInstruments:${this.options.processContext.nid}: Completed`));\n }\n */\n}\n_instruments = new WeakMap();\n_inPublish = new WeakMap();\n_observer2 = new WeakMap();\n_publishState = new WeakMap();\n_GetInstrument = new WeakSet();\nGetInstrument_fn = function(instrumentName) {\n return __privateGet(this, _instruments)[instrumentName];\n};\n_ProcessTelemetryCommand = new WeakSet();\nProcessTelemetryCommand_fn = function(instrumentName, telemetry) {\n const instrument = __privateMethod(this, _GetInstrument, GetInstrument_fn).call(this, instrumentName);\n if (instrument) {\n instrument.ProcessTelemetry(telemetry);\n }\n};\n_CreateInstrument = new WeakSet();\nCreateInstrument_fn = function(instrumentType, options) {\n let instrument;\n switch (instrumentType) {\n case GaugeTypes.INSTRUMENT_GAUGE:\n instrument = new InstrumentGauge(options);\n break;\n case GaugeTypes.INSTRUMENT_HISTOGRAM:\n instrument = new InstrumentHistogram(options);\n break;\n case GaugeTypes.INSTRUMENT_LOG:\n instrument = new InstrumentLog(options);\n break;\n case GaugeTypes.INSTRUMENT_OBJECT:\n instrument = new InstrumentObject(options);\n break;\n case GaugeTypes.INSTRUMENT_TIMER:\n instrument = new InstrumentTimerGauge(options);\n break;\n case GaugeTypes.INSTRUMENT_VELOCITY:\n instrument = new InstrumentVelocity(options);\n break;\n default:\n throw new Error(`Gauge type: [${instrumentType} not known.]`);\n }\n return instrument;\n};\n_CreateInstruments = new WeakSet();\nCreateInstruments_fn = function(payload) {\n payload.forEach((instrumentDefinition) => {\n const g = instrumentDefinition[0];\n const gt = instrumentDefinition[1];\n const instrumentBaseOptions = instrumentDefinition[2];\n const instrument = __privateMethod(this, _CreateInstrument, CreateInstrument_fn).call(this, gt, instrumentBaseOptions);\n __privateGet(this, _instruments)[g] = instrument;\n });\n};\n_GetPayloadData = new WeakSet();\nGetPayloadData_fn = function(context, instruments) {\n const payloadInstruments = {};\n for (const [key, value] of Object.entries(instruments)) {\n if (value instanceof InstrumentLog) {\n payloadInstruments[key] = { ...value.WithUseLatestMessages(true) };\n } else {\n payloadInstruments[key] = { ...value };\n }\n }\n return {\n context,\n instruments: payloadInstruments\n };\n};\n_PublishTimeoutLoop = new WeakSet();\nPublishTimeoutLoop_fn = function(publishInterval) {\n __privateSet(this, _observer2, setTimeout(async () => {\n const start = performance.now();\n await this.Publish();\n const end = performance.now();\n const diff = end - start;\n if (__privateGet(this, _publishState) === 1) {\n __privateMethod(this, _PublishTimeoutLoop, PublishTimeoutLoop_fn).call(this, this.options.publishInterval - diff);\n }\n }, publishInterval));\n if (isNode)\n __privateGet(this, _observer2).unref();\n};\nconst STSInstrumentControllerPluginKey = Symbol();\nclass AgentInstrumentController extends PublishInstrumentController {\n /**\n * Create the primary instrument publisher\n * @param options\n */\n constructor(options) {\n super(options);\n }\n /**\n * Add additional instrument publishers. Usually invoked when adding workers to the app and/or async runners within a worker.\n * @param processContext \n * @returns Returns the newly created PublishInstrumentController\n */\n AddPublishInstrumentController(processContext) {\n const options = { ...this.options };\n options.processContext = processContext;\n return new PublishInstrumentController(options);\n }\n}\nconst GetSTSInstrumentControllerPluginKey = () => STSInstrumentControllerPluginKey;\nconst CompareSTSInstrumentControllerPluginKey = (val) => val === STSInstrumentControllerPluginKey;\nconst useSTSInstrumentControllerPlugin = () => inject(STSInstrumentControllerPluginKey);\nconst GetSTSInstrumentController = (app) => {\n return app.config.globalProperties.$sts[STSInstrumentControllerPluginKey];\n};\nconst STSInstrumentControllerPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any \n install: (app, options) => {\n options.logger.debug(chalk$1.yellow(`STSInstrumentControllerPlugin:install:Start`));\n const aic = new AgentInstrumentController(options);\n if (!app.config.globalProperties.$sts) {\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: [app.config.globalProperties.$sts] does not exist.`));\n app.config.globalProperties.$sts = {};\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: created empty [app.config.globalProperties.$sts].`));\n } else {\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: [app.config.globalProperties.$sts] already exists.`));\n }\n app.config.globalProperties.$sts.aic = aic;\n app.config.globalProperties.$sts[STSInstrumentControllerPluginKey] = aic;\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: AgentInstrumentController installed into [app.config.globalProperties.$sts] using: [${String(STSInstrumentControllerPluginKey)}].`));\n app.provide(STSInstrumentControllerPluginKey, aic);\n options.logger.debug(chalk$1.cyan(`STSInstrumentControllerPlugin:install: AgentInstrumentController installed into 'provide' using: [${String(STSInstrumentControllerPluginKey)}].`));\n options.logger.debug(chalk$1.green(`STSInstrumentControllerPlugin:install:End`));\n }\n};\nfunction utf8Count(str) {\n var strLength = str.length;\n var byteLength = 0;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 4294967168) === 0) {\n byteLength++;\n continue;\n } else if ((value & 4294965248) === 0) {\n byteLength += 2;\n } else {\n if (value >= 55296 && value <= 56319) {\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 64512) === 56320) {\n ++pos;\n value = ((value & 1023) << 10) + (extra & 1023) + 65536;\n }\n }\n }\n if ((value & 4294901760) === 0) {\n byteLength += 3;\n } else {\n byteLength += 4;\n }\n }\n }\n return byteLength;\n}\nfunction utf8EncodeJs(str, output, outputOffset) {\n var strLength = str.length;\n var offset = outputOffset;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 4294967168) === 0) {\n output[offset++] = value;\n continue;\n } else if ((value & 4294965248) === 0) {\n output[offset++] = value >> 6 & 31 | 192;\n } else {\n if (value >= 55296 && value <= 56319) {\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 64512) === 56320) {\n ++pos;\n value = ((value & 1023) << 10) + (extra & 1023) + 65536;\n }\n }\n }\n if ((value & 4294901760) === 0) {\n output[offset++] = value >> 12 & 15 | 224;\n output[offset++] = value >> 6 & 63 | 128;\n } else {\n output[offset++] = value >> 18 & 7 | 240;\n output[offset++] = value >> 12 & 63 | 128;\n output[offset++] = value >> 6 & 63 | 128;\n }\n }\n output[offset++] = value & 63 | 128;\n }\n}\nvar sharedTextEncoder = new TextEncoder();\nvar TEXT_ENCODER_THRESHOLD = 50;\nfunction utf8EncodeTE(str, output, outputOffset) {\n sharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nfunction utf8Encode(str, output, outputOffset) {\n if (str.length > TEXT_ENCODER_THRESHOLD) {\n utf8EncodeTE(str, output, outputOffset);\n } else {\n utf8EncodeJs(str, output, outputOffset);\n }\n}\nnew TextDecoder();\nvar ExtData = (\n /** @class */\n /* @__PURE__ */ function() {\n function ExtData2(type, data) {\n this.type = type;\n this.data = data;\n }\n return ExtData2;\n }()\n);\nvar __extends = /* @__PURE__ */ function() {\n var extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {\n d2.__proto__ = b2;\n } || function(d2, b2) {\n for (var p in b2)\n if (Object.prototype.hasOwnProperty.call(b2, p))\n d2[p] = b2[p];\n };\n return extendStatics(d, b);\n };\n return function(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar DecodeError = (\n /** @class */\n function(_super) {\n __extends(DecodeError2, _super);\n function DecodeError2(message) {\n var _this = _super.call(this, message) || this;\n var proto2 = Object.create(DecodeError2.prototype);\n Object.setPrototypeOf(_this, proto2);\n Object.defineProperty(_this, \"name\", {\n configurable: true,\n enumerable: false,\n value: DecodeError2.name\n });\n return _this;\n }\n return DecodeError2;\n }(Error)\n);\nfunction setUint64(view, offset, value) {\n var high = value / 4294967296;\n var low = value;\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nfunction setInt64(view, offset, value) {\n var high = Math.floor(value / 4294967296);\n var low = value;\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nfunction getInt64(view, offset) {\n var high = view.getInt32(offset);\n var low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\nvar EXT_TIMESTAMP = -1;\nvar TIMESTAMP32_MAX_SEC = 4294967296 - 1;\nvar TIMESTAMP64_MAX_SEC = 17179869184 - 1;\nfunction encodeTimeSpecToTimestamp(_a2) {\n var sec = _a2.sec, nsec = _a2.nsec;\n if (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) {\n if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n var rv = new Uint8Array(4);\n var view = new DataView(rv.buffer);\n view.setUint32(0, sec);\n return rv;\n } else {\n var secHigh = sec / 4294967296;\n var secLow = sec & 4294967295;\n var rv = new Uint8Array(8);\n var view = new DataView(rv.buffer);\n view.setUint32(0, nsec << 2 | secHigh & 3);\n view.setUint32(4, secLow);\n return rv;\n }\n } else {\n var rv = new Uint8Array(12);\n var view = new DataView(rv.buffer);\n view.setUint32(0, nsec);\n setInt64(view, 4, sec);\n return rv;\n }\n}\nfunction encodeDateToTimeSpec(date) {\n var msec = date.getTime();\n var sec = Math.floor(msec / 1e3);\n var nsec = (msec - sec * 1e3) * 1e6;\n var nsecInSec = Math.floor(nsec / 1e9);\n return {\n sec: sec + nsecInSec,\n nsec: nsec - nsecInSec * 1e9\n };\n}\nfunction encodeTimestampExtension(object) {\n if (object instanceof Date) {\n var timeSpec = encodeDateToTimeSpec(object);\n return encodeTimeSpecToTimestamp(timeSpec);\n } else {\n return null;\n }\n}\nfunction decodeTimestampToTimeSpec(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n switch (data.byteLength) {\n case 4: {\n var sec = view.getUint32(0);\n var nsec = 0;\n return { sec, nsec };\n }\n case 8: {\n var nsec30AndSecHigh2 = view.getUint32(0);\n var secLow32 = view.getUint32(4);\n var sec = (nsec30AndSecHigh2 & 3) * 4294967296 + secLow32;\n var nsec = nsec30AndSecHigh2 >>> 2;\n return { sec, nsec };\n }\n case 12: {\n var sec = getInt64(view, 4);\n var nsec = view.getUint32(0);\n return { sec, nsec };\n }\n default:\n throw new DecodeError(\"Unrecognized data size for timestamp (expected 4, 8, or 12): \".concat(data.length));\n }\n}\nfunction decodeTimestampExtension(data) {\n var timeSpec = decodeTimestampToTimeSpec(data);\n return new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nvar timestampExtension = {\n type: EXT_TIMESTAMP,\n encode: encodeTimestampExtension,\n decode: decodeTimestampExtension\n};\nvar ExtensionCodec = (\n /** @class */\n function() {\n function ExtensionCodec2() {\n this.builtInEncoders = [];\n this.builtInDecoders = [];\n this.encoders = [];\n this.decoders = [];\n this.register(timestampExtension);\n }\n ExtensionCodec2.prototype.register = function(_a2) {\n var type = _a2.type, encode2 = _a2.encode, decode = _a2.decode;\n if (type >= 0) {\n this.encoders[type] = encode2;\n this.decoders[type] = decode;\n } else {\n var index = 1 + type;\n this.builtInEncoders[index] = encode2;\n this.builtInDecoders[index] = decode;\n }\n };\n ExtensionCodec2.prototype.tryToEncode = function(object, context) {\n for (var i = 0; i < this.builtInEncoders.length; i++) {\n var encodeExt = this.builtInEncoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = -1 - i;\n return new ExtData(type, data);\n }\n }\n }\n for (var i = 0; i < this.encoders.length; i++) {\n var encodeExt = this.encoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = i;\n return new ExtData(type, data);\n }\n }\n }\n if (object instanceof ExtData) {\n return object;\n }\n return null;\n };\n ExtensionCodec2.prototype.decode = function(data, type, context) {\n var decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n if (decodeExt) {\n return decodeExt(data, type, context);\n } else {\n return new ExtData(type, data);\n }\n };\n ExtensionCodec2.defaultCodec = new ExtensionCodec2();\n return ExtensionCodec2;\n }()\n);\nfunction ensureUint8Array(buffer) {\n if (buffer instanceof Uint8Array) {\n return buffer;\n } else if (ArrayBuffer.isView(buffer)) {\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n } else if (buffer instanceof ArrayBuffer) {\n return new Uint8Array(buffer);\n } else {\n return Uint8Array.from(buffer);\n }\n}\nvar DEFAULT_MAX_DEPTH = 100;\nvar DEFAULT_INITIAL_BUFFER_SIZE = 2048;\nvar Encoder = (\n /** @class */\n function() {\n function Encoder2(options) {\n var _a2, _b, _c, _d, _e, _f, _g, _h;\n this.extensionCodec = (_a2 = options === null || options === void 0 ? void 0 : options.extensionCodec) !== null && _a2 !== void 0 ? _a2 : ExtensionCodec.defaultCodec;\n this.context = options === null || options === void 0 ? void 0 : options.context;\n this.useBigInt64 = (_b = options === null || options === void 0 ? void 0 : options.useBigInt64) !== null && _b !== void 0 ? _b : false;\n this.maxDepth = (_c = options === null || options === void 0 ? void 0 : options.maxDepth) !== null && _c !== void 0 ? _c : DEFAULT_MAX_DEPTH;\n this.initialBufferSize = (_d = options === null || options === void 0 ? void 0 : options.initialBufferSize) !== null && _d !== void 0 ? _d : DEFAULT_INITIAL_BUFFER_SIZE;\n this.sortKeys = (_e = options === null || options === void 0 ? void 0 : options.sortKeys) !== null && _e !== void 0 ? _e : false;\n this.forceFloat32 = (_f = options === null || options === void 0 ? void 0 : options.forceFloat32) !== null && _f !== void 0 ? _f : false;\n this.ignoreUndefined = (_g = options === null || options === void 0 ? void 0 : options.ignoreUndefined) !== null && _g !== void 0 ? _g : false;\n this.forceIntegerToFloat = (_h = options === null || options === void 0 ? void 0 : options.forceIntegerToFloat) !== null && _h !== void 0 ? _h : false;\n this.pos = 0;\n this.view = new DataView(new ArrayBuffer(this.initialBufferSize));\n this.bytes = new Uint8Array(this.view.buffer);\n }\n Encoder2.prototype.reinitializeState = function() {\n this.pos = 0;\n };\n Encoder2.prototype.encodeSharedRef = function(object) {\n this.reinitializeState();\n this.doEncode(object, 1);\n return this.bytes.subarray(0, this.pos);\n };\n Encoder2.prototype.encode = function(object) {\n this.reinitializeState();\n this.doEncode(object, 1);\n return this.bytes.slice(0, this.pos);\n };\n Encoder2.prototype.doEncode = function(object, depth) {\n if (depth > this.maxDepth) {\n throw new Error(\"Too deep objects in depth \".concat(depth));\n }\n if (object == null) {\n this.encodeNil();\n } else if (typeof object === \"boolean\") {\n this.encodeBoolean(object);\n } else if (typeof object === \"number\") {\n if (!this.forceIntegerToFloat) {\n this.encodeNumber(object);\n } else {\n this.encodeNumberAsFloat(object);\n }\n } else if (typeof object === \"string\") {\n this.encodeString(object);\n } else if (this.useBigInt64 && typeof object === \"bigint\") {\n this.encodeBigInt64(object);\n } else {\n this.encodeObject(object, depth);\n }\n };\n Encoder2.prototype.ensureBufferSizeToWrite = function(sizeToWrite) {\n var requiredSize = this.pos + sizeToWrite;\n if (this.view.byteLength < requiredSize) {\n this.resizeBuffer(requiredSize * 2);\n }\n };\n Encoder2.prototype.resizeBuffer = function(newSize) {\n var newBuffer = new ArrayBuffer(newSize);\n var newBytes = new Uint8Array(newBuffer);\n var newView = new DataView(newBuffer);\n newBytes.set(this.bytes);\n this.view = newView;\n this.bytes = newBytes;\n };\n Encoder2.prototype.encodeNil = function() {\n this.writeU8(192);\n };\n Encoder2.prototype.encodeBoolean = function(object) {\n if (object === false) {\n this.writeU8(194);\n } else {\n this.writeU8(195);\n }\n };\n Encoder2.prototype.encodeNumber = function(object) {\n if (!this.forceIntegerToFloat && Number.isSafeInteger(object)) {\n if (object >= 0) {\n if (object < 128) {\n this.writeU8(object);\n } else if (object < 256) {\n this.writeU8(204);\n this.writeU8(object);\n } else if (object < 65536) {\n this.writeU8(205);\n this.writeU16(object);\n } else if (object < 4294967296) {\n this.writeU8(206);\n this.writeU32(object);\n } else if (!this.useBigInt64) {\n this.writeU8(207);\n this.writeU64(object);\n } else {\n this.encodeNumberAsFloat(object);\n }\n } else {\n if (object >= -32) {\n this.writeU8(224 | object + 32);\n } else if (object >= -128) {\n this.writeU8(208);\n this.writeI8(object);\n } else if (object >= -32768) {\n this.writeU8(209);\n this.writeI16(object);\n } else if (object >= -2147483648) {\n this.writeU8(210);\n this.writeI32(object);\n } else if (!this.useBigInt64) {\n this.writeU8(211);\n this.writeI64(object);\n } else {\n this.encodeNumberAsFloat(object);\n }\n }\n } else {\n this.encodeNumberAsFloat(object);\n }\n };\n Encoder2.prototype.encodeNumberAsFloat = function(object) {\n if (this.forceFloat32) {\n this.writeU8(202);\n this.writeF32(object);\n } else {\n this.writeU8(203);\n this.writeF64(object);\n }\n };\n Encoder2.prototype.encodeBigInt64 = function(object) {\n if (object >= BigInt(0)) {\n this.writeU8(207);\n this.writeBigUint64(object);\n } else {\n this.writeU8(211);\n this.writeBigInt64(object);\n }\n };\n Encoder2.prototype.writeStringHeader = function(byteLength) {\n if (byteLength < 32) {\n this.writeU8(160 + byteLength);\n } else if (byteLength < 256) {\n this.writeU8(217);\n this.writeU8(byteLength);\n } else if (byteLength < 65536) {\n this.writeU8(218);\n this.writeU16(byteLength);\n } else if (byteLength < 4294967296) {\n this.writeU8(219);\n this.writeU32(byteLength);\n } else {\n throw new Error(\"Too long string: \".concat(byteLength, \" bytes in UTF-8\"));\n }\n };\n Encoder2.prototype.encodeString = function(object) {\n var maxHeaderSize = 1 + 4;\n var byteLength = utf8Count(object);\n this.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n this.writeStringHeader(byteLength);\n utf8Encode(object, this.bytes, this.pos);\n this.pos += byteLength;\n };\n Encoder2.prototype.encodeObject = function(object, depth) {\n var ext = this.extensionCodec.tryToEncode(object, this.context);\n if (ext != null) {\n this.encodeExtension(ext);\n } else if (Array.isArray(object)) {\n this.encodeArray(object, depth);\n } else if (ArrayBuffer.isView(object)) {\n this.encodeBinary(object);\n } else if (typeof object === \"object\") {\n this.encodeMap(object, depth);\n } else {\n throw new Error(\"Unrecognized object: \".concat(Object.prototype.toString.apply(object)));\n }\n };\n Encoder2.prototype.encodeBinary = function(object) {\n var size = object.byteLength;\n if (size < 256) {\n this.writeU8(196);\n this.writeU8(size);\n } else if (size < 65536) {\n this.writeU8(197);\n this.writeU16(size);\n } else if (size < 4294967296) {\n this.writeU8(198);\n this.writeU32(size);\n } else {\n throw new Error(\"Too large binary: \".concat(size));\n }\n var bytes = ensureUint8Array(object);\n this.writeU8a(bytes);\n };\n Encoder2.prototype.encodeArray = function(object, depth) {\n var size = object.length;\n if (size < 16) {\n this.writeU8(144 + size);\n } else if (size < 65536) {\n this.writeU8(220);\n this.writeU16(size);\n } else if (size < 4294967296) {\n this.writeU8(221);\n this.writeU32(size);\n } else {\n throw new Error(\"Too large array: \".concat(size));\n }\n for (var _i = 0, object_1 = object; _i < object_1.length; _i++) {\n var item = object_1[_i];\n this.doEncode(item, depth + 1);\n }\n };\n Encoder2.prototype.countWithoutUndefined = function(object, keys) {\n var count = 0;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (object[key] !== void 0) {\n count++;\n }\n }\n return count;\n };\n Encoder2.prototype.encodeMap = function(object, depth) {\n var keys = Object.keys(object);\n if (this.sortKeys) {\n keys.sort();\n }\n var size = this.ignoreUndefined ? this.countWithoutUndefined(object, keys) : keys.length;\n if (size < 16) {\n this.writeU8(128 + size);\n } else if (size < 65536) {\n this.writeU8(222);\n this.writeU16(size);\n } else if (size < 4294967296) {\n this.writeU8(223);\n this.writeU32(size);\n } else {\n throw new Error(\"Too large map object: \".concat(size));\n }\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var value = object[key];\n if (!(this.ignoreUndefined && value === void 0)) {\n this.encodeString(key);\n this.doEncode(value, depth + 1);\n }\n }\n };\n Encoder2.prototype.encodeExtension = function(ext) {\n var size = ext.data.length;\n if (size === 1) {\n this.writeU8(212);\n } else if (size === 2) {\n this.writeU8(213);\n } else if (size === 4) {\n this.writeU8(214);\n } else if (size === 8) {\n this.writeU8(215);\n } else if (size === 16) {\n this.writeU8(216);\n } else if (size < 256) {\n this.writeU8(199);\n this.writeU8(size);\n } else if (size < 65536) {\n this.writeU8(200);\n this.writeU16(size);\n } else if (size < 4294967296) {\n this.writeU8(201);\n this.writeU32(size);\n } else {\n throw new Error(\"Too large extension object: \".concat(size));\n }\n this.writeI8(ext.type);\n this.writeU8a(ext.data);\n };\n Encoder2.prototype.writeU8 = function(value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setUint8(this.pos, value);\n this.pos++;\n };\n Encoder2.prototype.writeU8a = function(values) {\n var size = values.length;\n this.ensureBufferSizeToWrite(size);\n this.bytes.set(values, this.pos);\n this.pos += size;\n };\n Encoder2.prototype.writeI8 = function(value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setInt8(this.pos, value);\n this.pos++;\n };\n Encoder2.prototype.writeU16 = function(value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setUint16(this.pos, value);\n this.pos += 2;\n };\n Encoder2.prototype.writeI16 = function(value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setInt16(this.pos, value);\n this.pos += 2;\n };\n Encoder2.prototype.writeU32 = function(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setUint32(this.pos, value);\n this.pos += 4;\n };\n Encoder2.prototype.writeI32 = function(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setInt32(this.pos, value);\n this.pos += 4;\n };\n Encoder2.prototype.writeF32 = function(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setFloat32(this.pos, value);\n this.pos += 4;\n };\n Encoder2.prototype.writeF64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setFloat64(this.pos, value);\n this.pos += 8;\n };\n Encoder2.prototype.writeU64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n setUint64(this.view, this.pos, value);\n this.pos += 8;\n };\n Encoder2.prototype.writeI64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n setInt64(this.view, this.pos, value);\n this.pos += 8;\n };\n Encoder2.prototype.writeBigUint64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setBigUint64(this.pos, value);\n this.pos += 8;\n };\n Encoder2.prototype.writeBigInt64 = function(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setBigInt64(this.pos, value);\n this.pos += 8;\n };\n return Encoder2;\n }()\n);\nfunction encode(value, options) {\n var encoder = new Encoder(options);\n return encoder.encodeSharedRef(value);\n}\nclass PublishTransportRESTServer extends STSOptionsBase {\n constructor(options) {\n super(options);\n __privateAdd(this, _httpsAgent, void 0);\n // Returns true for success or false for failure.\n __publicField(this, \"Publish\", async (payload) => {\n try {\n const encodedData = encode(payload, { ignoreUndefined: true });\n const headers = { \"Content-Type\": \"application/octet-stream\" };\n let retVal = null;\n if (this.options.socketPath) {\n retVal = await axios({\n method: \"post\",\n //data: payload,\n data: Buffer.from(encodedData),\n headers,\n httpsAgent: __privateGet(this, _httpsAgent),\n socketPath: this.options.socketPath\n });\n } else {\n if (isNode) {\n retVal = await axios({\n //url: `${goptions.imendpoint}:${goptions.import}${goptions.imapiroot}/publishmessage`,\n url: this.options.url,\n method: \"post\",\n data: Buffer.from(encodedData),\n // payload,\n headers,\n httpsAgent: __privateGet(this, _httpsAgent)\n });\n } else {\n const blob = new Blob([encodedData], { type: \"application/octet-stream\" });\n retVal = await axios({\n //url: `${goptions.imendpoint}:${goptions.import}${goptions.imapiroot}/publishmessage`,\n url: this.options.url,\n method: \"post\",\n data: blob,\n //payload,\n headers\n });\n }\n }\n if (retVal.status !== 200) {\n this.options.logger.debug(chalk$1.red(`Error (_PerformPublishRESTAPI:_PerformPublish:#publishmessage): Invalid response from server: [${retVal.status}]`));\n return false;\n } else {\n this.options.logger.debug(chalk$1.green(`_PerformPublishRESTAPI:_PerformPublish:#publishmessage: [${this.options.url}] - Valid response from server: [${retVal.status}]`));\n }\n return true;\n } catch (error) {\n this.options.logger.error(chalk$1.red(`Error (PublishRESTServer:_PerformPublishRESTAPI:Error: [${error}]`));\n return false;\n }\n });\n if (isNode) {\n const agentOptions = this.options.agentOptions;\n __privateSet(this, _httpsAgent, new https.Agent({\n keepAlive: agentOptions == null ? void 0 : agentOptions.keepAlive,\n maxSockets: agentOptions == null ? void 0 : agentOptions.maxSockets,\n maxTotalSockets: agentOptions == null ? void 0 : agentOptions.maxTotalSockets,\n maxFreeSockets: agentOptions == null ? void 0 : agentOptions.maxFreeSockets,\n timeout: agentOptions == null ? void 0 : agentOptions.timeout,\n rejectUnauthorized: agentOptions == null ? void 0 : agentOptions.rejectUnauthorized\n // Allows self signed certs in non production mode(s)\n }));\n }\n options.url += \"V3\";\n }\n get options() {\n return super.options;\n }\n async Close() {\n if (__privateGet(this, _httpsAgent)) {\n __privateGet(this, _httpsAgent).destroy();\n }\n return true;\n }\n}\n_httpsAgent = new WeakMap();\nvar SubscriptionTopic = /* @__PURE__ */ ((SubscriptionTopic2) => {\n SubscriptionTopic2[\"AllServicesCombined\"] = \"AllServicesCombined\";\n SubscriptionTopic2[\"Services\"] = \"Services\";\n SubscriptionTopic2[\"ServiceInstances\"] = \"ServiceInstances\";\n SubscriptionTopic2[\"ServiceInstance\"] = \"ServiceInstance\";\n SubscriptionTopic2[\"AllAgentsCombined\"] = \"AllAgentsCombined\";\n SubscriptionTopic2[\"Agents\"] = \"Agents\";\n SubscriptionTopic2[\"AgentWorkers\"] = \"AgentWorkers\";\n SubscriptionTopic2[\"AgentWorker\"] = \"AgentWorker\";\n SubscriptionTopic2[\"AllLambdasCombined\"] = \"AllLambdasCombined\";\n SubscriptionTopic2[\"LambdaTechnologies\"] = \"LambdaTechnologies\";\n SubscriptionTopic2[\"LambdaSubTechnologies\"] = \"LambdaSubTechnologies\";\n SubscriptionTopic2[\"LambdaSubTechnologiesInstance\"] = \"LambdaSubTechnologiesInstance\";\n SubscriptionTopic2[\"LogProcessing\"] = \"LogProcessing\";\n return SubscriptionTopic2;\n})(SubscriptionTopic || {});\nconst GetSocketIOSubscriptionKey = (subscriptionKey) => {\n return `SubscriptionData_${subscriptionKey.id}`;\n};\nconst KAFKA_PREFIX = \"__STS__\";\nconst _ObservabilityModelUtils = class _ObservabilityModelUtils {\n static GetModelNode(data) {\n const fixedSize = 2;\n const padLength = 9;\n try {\n return {\n val: data,\n vf: parseFloat(data.toString()).toFixed(fixedSize).padStart(padLength, \" \"),\n value: parseFloat(data.toString()).toFixed(fixedSize)\n };\n } catch (error) {\n return {\n val: 0,\n vf: \"\",\n value: \"\"\n };\n }\n }\n static GetModelNodeRawStringArray(data) {\n try {\n return {\n val: data\n };\n } catch (error) {\n return {\n val: []\n };\n }\n }\n static GetModelNodeObject(data) {\n try {\n return {\n val: JSON.parse(data)\n };\n } catch (error) {\n return {\n val: null\n };\n }\n }\n static GetModelNodeWithQuantile(data, quantileData) {\n let quantile2 = \"\";\n const quantileDataElementArray = [];\n for (const [key, val] of Object.entries(quantileData)) {\n quantile2 += parseFloat(val.toFixed(2)).toString().padStart(8, \" \");\n quantileDataElementArray.push([\n key,\n val\n ]);\n }\n const fixedSize = 2;\n const padLength = 9;\n try {\n return {\n val: data,\n vf: parseFloat(data.toString()).toFixed(fixedSize).padStart(padLength, \" \"),\n value: parseFloat(data.toString()).toFixed(fixedSize),\n percentile: quantileDataElementArray,\n percentileFormatted: quantile2\n };\n } catch (error) {\n return {\n val: 0,\n vf: \"\",\n value: \"\",\n percentile: [],\n percentileFormatted: \"\"\n };\n }\n }\n static GetModelNodeHistFromInfluxData(data) {\n try {\n const histVal = [];\n if (data) {\n for (const [key, val] of Object.entries(data)) {\n const dataElement = [\n val,\n key,\n parseInt(key)\n ];\n histVal.push(dataElement);\n }\n }\n try {\n return {\n hist: histVal\n };\n } catch (error) {\n return {\n hist: []\n };\n }\n } catch (error) {\n return {\n hist: []\n };\n }\n }\n static GetModelForService(id, data, subscribeToKafka, logger) {\n try {\n const parseLog = [];\n const model = {\n id,\n instruments: {}\n };\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.REQUEST_COUNT_GAUGE, \"requestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ERROR_COUNT_GAUGE, \"errorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.RETRY_COUNT_GAUGE, \"retryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_COUNT_GAUGE, \"authenticationCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, \"authenticationErrorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, \"authenticationRetryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.VELOCITY_GAUGE, \"velocity\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ACTIVE_REQUEST_GAUGE, \"activeRequestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_COUNT_GAUGE, \"connectionCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_TOTAL_GAUGE, \"connectionPoolCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_IDLE_GAUGE, \"connectionIdleCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_WAITING_GAUGE, \"connectionWaitingCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CORE_COUNT_GAUGE, \"coreCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.TIMER_GAUGE, \"timer\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_RX_GAUGE, \"rx\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_TX_GAUGE, \"tx\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.CPU_LOAD_GAUGE, \"cpu\", \"cpu_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.CPU_SYSTEM_LOAD_GAUGE, \"systemcpu\", \"systemcpu_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.DURATION_GAUGE, \"duration\", \"duration_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.LATENCY_GAUGE, \"latency\", \"latency_quantile\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.DURATION_HISTOGRAM_GAUGE, \"duration_histo\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.LATENCY_HISTOGRAM_GAUGE, \"latency_histo\");\n _ObservabilityModelUtils.ParseModelNodeObject(model, data, parseLog, Gauge.OBJECT_GAUGE, \"memory\");\n if (!subscribeToKafka) {\n model.instruments[Gauge.LOGGER] = _ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n }\n if (parseLog.length > 0) {\n parseLog.forEach((logEntry) => logger.debug(logEntry));\n }\n return model;\n } catch (error) {\n return null;\n }\n }\n static GetModelForLambda(id, data, subscribeToKafka, logger) {\n try {\n const parseLog = [];\n const model = {\n id,\n instruments: {}\n };\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.REQUEST_COUNT_GAUGE, \"requestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ERROR_COUNT_GAUGE, \"errorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.RETRY_COUNT_GAUGE, \"retryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_COUNT_GAUGE, \"authenticationCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, \"authenticationErrorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, \"authenticationRetryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.VELOCITY_GAUGE, \"velocity\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ACTIVE_REQUEST_GAUGE, \"activeRequestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_COUNT_GAUGE, \"connectionCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_TOTAL_GAUGE, \"connectionPoolCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_IDLE_GAUGE, \"connectionIdleCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CONNECTION_POOL_WAITING_GAUGE, \"connectionWaitingCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CORE_COUNT_GAUGE, \"coreCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.TIMER_GAUGE, \"timer\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_RX_GAUGE, \"rx\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_TX_GAUGE, \"tx\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.CPU_LOAD_GAUGE, \"cpu\", \"cpu_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.CPU_SYSTEM_LOAD_GAUGE, \"systemcpu\", \"systemcpu_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.DURATION_GAUGE, \"duration\", \"duration_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.LATENCY_GAUGE, \"latency\", \"latency_quantile\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.DURATION_HISTOGRAM_GAUGE, \"duration_histo\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.LATENCY_HISTOGRAM_GAUGE, \"latency_histo\");\n _ObservabilityModelUtils.ParseModelNodeObject(model, data, parseLog, Gauge.OBJECT_GAUGE, \"memory\");\n if (!subscribeToKafka) {\n model.instruments[Gauge.LOGGER] = _ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n }\n if (parseLog.length > 0) {\n parseLog.forEach((logEntry) => logger.debug(logEntry));\n }\n return model;\n } catch (error) {\n return null;\n }\n }\n static GetModelForAgent(id, data, subscribeToKafka, logger) {\n try {\n if (Object.keys(data).length === 0) {\n return null;\n }\n const parseLog = [];\n const model = {\n id,\n instruments: {}\n };\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.REQUEST_COUNT_GAUGE, \"requestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ERROR_COUNT_GAUGE, \"errorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.RETRY_COUNT_GAUGE, \"retryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_COUNT_GAUGE, \"authenticationCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, \"authenticationErrorCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, \"authenticationRetryCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.VELOCITY_GAUGE, \"velocity\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.CORE_COUNT_GAUGE, \"coreCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.TIMER_GAUGE, \"timer\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.ACTIVE_REQUEST_GAUGE, \"activeRequestCount\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_RX_GAUGE, \"rx\");\n _ObservabilityModelUtils.ParseModelNode(model, data, parseLog, Gauge.NETWORK_TX_GAUGE, \"tx\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.DURATION_GAUGE, \"duration\", \"duration_quantile\");\n _ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, Gauge.LATENCY_GAUGE, \"latency\", \"latency_quantile\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.DURATION_HISTOGRAM_GAUGE, \"duration_histo\");\n _ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, Gauge.LATENCY_HISTOGRAM_GAUGE, \"latency_histo\");\n if (!subscribeToKafka) {\n model.instruments[Gauge.LOGGER] = _ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n }\n if (parseLog.length > 0) {\n parseLog.forEach((logEntry) => logger.debug(logEntry));\n }\n return model;\n } catch (error) {\n return null;\n }\n }\n};\n__publicField(_ObservabilityModelUtils, \"ParseModelNode\", (model, data, parseLog, gaugeName, fieldName) => {\n if (fieldName in data) {\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNode(data[fieldName]);\n } else {\n parseLog.push(`ObservabilityModelUtils:ParseModelNode(): Field not present: [${fieldName}], default to [0]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNode(0);\n }\n});\n__publicField(_ObservabilityModelUtils, \"ParseModelNodeWithQuantile\", (model, data, parseLog, gaugeName, fieldName, quantileFieldName) => {\n if (fieldName in data && quantileFieldName in data) {\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeWithQuantile(data[fieldName], data[quantileFieldName]);\n } else if (fieldName in data) {\n const dataVal = data[fieldName];\n parseLog.push(`ObservabilityModelUtils:ParseModelNodeWithQuantile(): QuantileFieldName not present: [${quantileFieldName}], default to [${dataVal},{}]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeWithQuantile(dataVal, {});\n } else {\n parseLog.push(`ObservabilityModelUtils:ParseModelNodeWithQuantile(): Field not present: [${fieldName}], QuantileFieldName not present: [${quantileFieldName}], default to [0,{}]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeWithQuantile(0, {});\n }\n});\n__publicField(_ObservabilityModelUtils, \"ParseModelNodeHisto\", (model, data, parseLog, gaugeName, fieldName) => {\n if (fieldName in data) {\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeHistFromInfluxData(data[fieldName]);\n } else {\n parseLog.push(`ObservabilityModelUtils:ParseModelNodeHisto(): Field not present: [${fieldName}], default to [{}]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeHistFromInfluxData({});\n }\n});\n__publicField(_ObservabilityModelUtils, \"ParseModelNodeObject\", (model, data, parseLog, gaugeName, fieldName) => {\n if (fieldName in data) {\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeObject(data[fieldName]);\n } else {\n parseLog.push(`ObservabilityModelUtils:ParseModelNodeObject(): Field not present: [${fieldName}], default to [{}]`);\n model.instruments[gaugeName] = _ObservabilityModelUtils.GetModelNodeObject({});\n }\n});\nlet ObservabilityModelUtils = _ObservabilityModelUtils;\nclass KafkaHelper {\n constructor(options) {\n __privateAdd(this, _kafkaLog, {});\n __privateAdd(this, _maxLogLength, void 0);\n __publicField(this, \"GetKafkaLogData\", (kafkaTopic, modelNode) => {\n if (__privateGet(this, _kafkaLog)[kafkaTopic]) {\n modelNode.instruments[Gauge.LOGGER] = ObservabilityModelUtils.GetModelNodeRawStringArray(__privateGet(this, _kafkaLog)[kafkaTopic].kafkaLog);\n }\n });\n __publicField(this, \"ProcessKafkaData\", (payload) => {\n const { data } = payload;\n if (data) {\n const kafkaData = data;\n const { kafkaTopic, value } = kafkaData;\n if (!__privateGet(this, _kafkaLog)[kafkaTopic]) {\n __privateGet(this, _kafkaLog)[kafkaTopic] = {\n kafkaTopic: `${kafkaTopic}`,\n //@@ why is this needed\n kafkaLog: []\n };\n }\n __privateGet(this, _kafkaLog)[kafkaTopic].kafkaLog.push(value);\n while (__privateGet(this, _kafkaLog)[kafkaTopic].kafkaLog.length > __privateGet(this, _maxLogLength)) {\n __privateGet(this, _kafkaLog)[kafkaTopic].kafkaLog.shift();\n }\n }\n });\n __privateSet(this, _maxLogLength, options.maxLogLength);\n }\n}\n_kafkaLog = new WeakMap();\n_maxLogLength = new WeakMap();\nconst debug = debugModule(`proc:${process.pid}`);\nclass ObservabilityRESTAPISubscriber {\n constructor(options) {\n __privateAdd(this, _LogMessage);\n __privateAdd(this, _LogDebugMessage);\n __privateAdd(this, _LogErrorMessage);\n __privateAdd(this, _InvokeRESTAPI);\n __privateAdd(this, _SetupTimeout);\n __privateAdd(this, _AddKeepAlive);\n __privateAdd(this, _RemoveKeepAlive);\n __privateAdd(this, _socketSubscribeKeepAlive, {});\n __privateAdd(this, _options2, void 0);\n // This is required becuase each call to .bind create a new replica bound function - so we need the same instance for on/off event bindings.\n __publicField(this, \"KeepAliveAckBoundFunction\");\n __privateAdd(this, _GetData, async (subscription) => {\n try {\n const retVal = await __privateMethod(this, _InvokeRESTAPI, InvokeRESTAPI_fn).call(this, subscription);\n if (retVal) {\n const payload = {\n subscriptionKey: subscription.subscriptionKey,\n data: retVal\n };\n subscription.cb(payload);\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage, LogErrorMessage_fn).call(this, chalk$1.red(`ObservabilityRESTAPISubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subscription);\n }\n });\n __privateSet(this, _options2, options);\n }\n SubscribeOne(subscription) {\n this.Subscribe([subscription]);\n }\n async Subscribe(subscriptions) {\n subscriptions.map(async (subId) => {\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subId);\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.yellow(`ObservabilityRESTAPISubscriber:Subscribe(): Sending subscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n try {\n __privateMethod(this, _AddKeepAlive, AddKeepAlive_fn).call(this, subId);\n } catch (error) {\n __privateMethod(this, _LogErrorMessage, LogErrorMessage_fn).call(this, chalk$1.red(`ObservabilityRESTAPISubscriber:Subscribe(): Error: response: [${JSON.stringify(error)}]`));\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subId);\n }\n });\n }\n UnSubscribeOne(subscription) {\n this.UnSubscribe([subscription]);\n }\n UnSubscribe(subscriptions) {\n subscriptions.map(async (subId) => {\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subId);\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.yellow(`ObservabilityRESTAPISubscriber:UnSubscribe(): Sending unsubscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n });\n }\n}\n_socketSubscribeKeepAlive = new WeakMap();\n_options2 = new WeakMap();\n_LogMessage = new WeakSet();\nLogMessage_fn = function(message) {\n debug(message);\n};\n_LogDebugMessage = new WeakSet();\nLogDebugMessage_fn = function(message) {\n __privateGet(this, _options2).logger.debug(message);\n};\n_LogErrorMessage = new WeakSet();\nLogErrorMessage_fn = function(message) {\n __privateGet(this, _options2).logger.error(message);\n};\n_InvokeRESTAPI = new WeakSet();\nInvokeRESTAPI_fn = async function(subscription) {\n const { subscriptionKey } = subscription;\n let url = \"\";\n switch (subscriptionKey.topic) {\n case SubscriptionTopic.AllServicesCombined:\n url = `/metrics`;\n break;\n case SubscriptionTopic.Services:\n url = `/metrics/services`;\n break;\n case SubscriptionTopic.ServiceInstances:\n if (subscriptionKey.key) {\n url = `/metrics/services/${subscriptionKey.key}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Services): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.ServiceInstance:\n url = `/metrics/services/${subscriptionKey.key}`;\n if (subscriptionKey.key && subscriptionKey.subkey) {\n url = `/metrics/services/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Services): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.AllLambdasCombined:\n url = `/metrics`;\n break;\n case SubscriptionTopic.LambdaTechnologies:\n url = `/metrics/lambdas`;\n break;\n case SubscriptionTopic.LambdaSubTechnologies:\n if (subscriptionKey.key) {\n url = `/metrics/lambdas/${subscriptionKey.key}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Lambdas): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.LambdaSubTechnologiesInstance:\n url = `/metrics/lambdas/${subscriptionKey.key}`;\n if (subscriptionKey.key && subscriptionKey.subkey) {\n url = `/metrics/lambdas/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Lambdas): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.AllAgentsCombined:\n url = `/metrics`;\n break;\n case SubscriptionTopic.Agents:\n url = `/metrics/agents`;\n break;\n case SubscriptionTopic.AgentWorkers:\n if (subscriptionKey.key) {\n url = `/metrics/agents/${subscriptionKey.key}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Agents): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n }\n case SubscriptionTopic.AgentWorker:\n if (subscriptionKey.key && subscriptionKey.subkey) {\n url = `/metrics/agents/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n break;\n } else {\n throw new Error(`#OutputSubscription(Agents): key and/or subkey not provided for subscription: [${JSON.stringify(subscriptionKey.topic)}]`);\n }\n }\n if (url.localeCompare(\"\") !== 0) {\n const endPointUrl = `${__privateGet(this, _options2).urlBase}${url}`;\n const headers = {\n \"Content-Type\": \"application/json\"\n };\n let retVal;\n const start = performance.now();\n try {\n if (isNode && __privateGet(this, _options2).agent) {\n retVal = await axios({\n url: endPointUrl,\n method: \"get\",\n headers,\n httpsAgent: __privateGet(this, _options2).agent\n });\n } else {\n retVal = await axios({\n url: endPointUrl,\n method: \"get\",\n headers\n });\n }\n const end = performance.now();\n const diff = end - start;\n if (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined) === 0) {\n return retVal.data[\"services\"].data;\n }\n if (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined) === 0) {\n return retVal.data[\"agents\"].data;\n }\n if (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllLambdasCombined) === 0) {\n return retVal.data[\"lambdas\"].data;\n }\n return retVal.data;\n } catch (error) {\n return null;\n }\n } else {\n return null;\n }\n};\n_GetData = new WeakMap();\n_SetupTimeout = new WeakSet();\nSetupTimeout_fn = function(socketSubscribeKeepAlive, subscription, timeout) {\n return setTimeout(async () => {\n try {\n const start = performance.now();\n await __privateGet(this, _GetData).call(this, subscription);\n if (socketSubscribeKeepAlive.timeout) {\n const end = performance.now();\n const diff = end - start;\n let timeoutDuration = __privateGet(this, _options2).keepAlive - diff;\n if (timeoutDuration < 500) {\n timeoutDuration = 500;\n }\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.yellow(`Total duration for subscription: [${diff}], waiting: [${timeoutDuration}]`));\n socketSubscribeKeepAlive.timeout = __privateMethod(this, _SetupTimeout, SetupTimeout_fn).call(this, socketSubscribeKeepAlive, subscription, timeoutDuration);\n } else {\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.yellow(`Subscription removed: [${socketSubscribeKeepAlive.id}]. Processing terminate.`));\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage, LogErrorMessage_fn).call(this, chalk$1.red(`ObservabilityRESTAPISubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subscription);\n }\n }, timeout);\n};\n_AddKeepAlive = new WeakSet();\nAddKeepAlive_fn = function(subscription) {\n __privateMethod(this, _RemoveKeepAlive, RemoveKeepAlive_fn).call(this, subscription);\n const socketSubscribeKeepAlive = {\n id: subscription.subscriptionKey.id\n };\n socketSubscribeKeepAlive.timeout = __privateMethod(this, _SetupTimeout, SetupTimeout_fn).call(this, socketSubscribeKeepAlive, subscription, __privateGet(this, _options2).keepAlive);\n __privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id] = socketSubscribeKeepAlive;\n __privateGet(this, _GetData).call(this, subscription);\n};\n_RemoveKeepAlive = new WeakSet();\nRemoveKeepAlive_fn = function(subscription) {\n if (__privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id]) {\n __privateMethod(this, _LogDebugMessage, LogDebugMessage_fn).call(this, chalk$1.gray(`ObservabilityRESTAPISubscriber:#RemoveKeepAlive(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n clearTimeout(__privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id].timeout);\n delete __privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id].timeout;\n delete __privateGet(this, _socketSubscribeKeepAlive)[subscription.subscriptionKey.id];\n }\n};\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nfunction rng() {\n if (!getRandomValues) {\n getRandomValues = typeof crypto !== \"undefined\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n }\n }\n return getRandomValues(rnds8);\n}\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 256).toString(16).slice(1));\n}\nfunction unsafeStringify(arr, offset = 0) {\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + \"-\" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + \"-\" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + \"-\" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + \"-\" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\nconst randomUUID = typeof crypto !== \"undefined\" && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nconst native = {\n randomUUID\n};\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = rnds[6] & 15 | 64;\n rnds[8] = rnds[8] & 63 | 128;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nvar messageStatus = /* @__PURE__ */ ((messageStatus2) => {\n messageStatus2[\"INPROGRESS\"] = \"INPROGRESS\";\n messageStatus2[\"SUCCESS\"] = \"SUCCESS\";\n messageStatus2[\"FAIL\"] = \"FAIL\";\n messageStatus2[\"INRETRY\"] = \"INRETRY\";\n messageStatus2[\"KILLED\"] = \"KILLED\";\n return messageStatus2;\n})(messageStatus || {});\nvar messageStatusResponse = /* @__PURE__ */ ((messageStatusResponse2) => {\n messageStatusResponse2[\"SUBSCRIPTION_SUCCESSFULLY_ADDED\"] = \"SUBSCRIPTION_SUCCESSFULLY_ADDED\";\n messageStatusResponse2[\"SUBSCRIPTION_SUCCESSFULLY_REMOVED\"] = \"SUBSCRIPTION_SUCCESSFULLY_REMOVED\";\n messageStatusResponse2[\"SUBSCRIPTION_TIMEOUT_RENEWED\"] = \"SUBSCRIPTION_TIMEOUT_RENEWED\";\n messageStatusResponse2[\"NO_MATCHED_SUBSCRIPTION\"] = \"NO_MATCHED_SUBSCRIPTION\";\n return messageStatusResponse2;\n})(messageStatusResponse || {});\nclass SocketIoMessageSender {\n constructor(options) {\n __privateAdd(this, _LogDebugMessage2);\n __privateAdd(this, _GetSubscribeKeepAliveAckEventName);\n __privateAdd(this, _messageWithAckPayloadRecords, {});\n __privateAdd(this, _socket, void 0);\n __privateAdd(this, _maxReties, 3);\n //@@\n __privateAdd(this, _timeoutValue, 5e3);\n //@@\n __privateAdd(this, _options3, void 0);\n __privateSet(this, _options3, options);\n __privateSet(this, _socket, options.socket);\n }\n get socket() {\n return __privateGet(this, _socket);\n }\n set socket(socket) {\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.cyan(`SocketIoMessageSender:set socket(): new socket assigned`));\n __privateSet(this, _socket, socket);\n }\n AckListener(message, payload) {\n if (message.subscriptionKey.id.localeCompare(payload.id) === 0) {\n clearTimeout(message.timeoutId);\n delete message.timeoutId;\n __privateGet(this, _socket).off(__privateMethod(this, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn).call(this, message.eventName, message.subscriptionKey), message.BoundAckListenerCallback);\n message.endTime = performance.now();\n message.duration = message.endTime - message.startTime;\n message.status = \"SUCCESS\";\n message.subscriptionKeyResponse = payload;\n delete __privateGet(this, _messageWithAckPayloadRecords)[message.id];\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.grey(`SocketIoMessageSender:AckListener(): ack received, event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n message.resolve(message);\n }\n }\n ResponseTimout(message) {\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.magenta(`SocketIoMessageSender:ResponseTimout(): timeout reached: [${__privateGet(this, _timeoutValue)}], event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n delete message.timeoutId;\n __privateGet(this, _socket).off(__privateMethod(this, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn).call(this, message.eventName, message.subscriptionKey), message.BoundAckListenerCallback);\n message.endTime = performance.now();\n if (message.retryCount >= __privateGet(this, _maxReties)) {\n message.status = \"FAIL\";\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.red(`SocketIoMessageSender:ResponseTimout(): timeout reached after ${__privateGet(this, _maxReties)} retries, event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n delete __privateGet(this, _messageWithAckPayloadRecords)[message.id];\n message.reject(message);\n return;\n }\n message.status = \"INRETRY\";\n message.retryCount++;\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.magenta(`SocketIoMessageSender:ResponseTimout(): timeout reached, retrying. Retries: [${message.retryCount}], event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n this.SendMessage(message);\n }\n SendMessage(message) {\n message.startTime = performance.now();\n message.timeoutId = setTimeout(() => {\n this.ResponseTimout(message);\n }, __privateGet(this, _timeoutValue));\n const AckListenerCallback = (payload) => {\n this.AckListener(message, payload);\n };\n message.BoundAckListenerCallback = AckListenerCallback.bind(this);\n __privateGet(this, _socket).on(__privateMethod(this, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn).call(this, message.eventName, message.subscriptionKey), message.BoundAckListenerCallback);\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.gray(`SocketIoMessageSender:SendMessage(): event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n __privateGet(this, _socket).emit(message.eventName, message.subscriptionKey);\n }\n SendMessageWithAck(eventName, subscriptionKey) {\n const promise = new Promise((resolve, reject) => {\n const message = {\n id: v4(),\n subscriptionKey,\n retryCount: 0,\n startTime: performance.now(),\n status: \"INPROGRESS\",\n eventName,\n resolve,\n reject\n };\n __privateGet(this, _messageWithAckPayloadRecords)[message.id] = message;\n this.SendMessage(message);\n });\n return promise;\n }\n KillMessageInFlight(subscriptionKey) {\n const killIds = [];\n for (const [, message] of Object.entries(__privateGet(this, _messageWithAckPayloadRecords))) {\n if (message.subscriptionKey.id.localeCompare(subscriptionKey.id) === 0) {\n __privateMethod(this, _LogDebugMessage2, LogDebugMessage_fn2).call(this, chalk$1.blue(`SocketIoMessageSender:KillMessageInFlight(): event: [${message.eventName}], subscriptionKey: [${message.subscriptionKey.id}]`));\n clearTimeout(message.timeoutId);\n delete message.timeoutId;\n __privateGet(this, _socket).off(__privateMethod(this, _GetSubscribeKeepAliveAckEventName, GetSubscribeKeepAliveAckEventName_fn).call(this, message.eventName, message.subscriptionKey), message.BoundAckListenerCallback);\n killIds.push(message.id);\n message.status = \"KILLED\";\n message.reject(message);\n }\n }\n killIds.forEach((id) => {\n delete __privateGet(this, _messageWithAckPayloadRecords)[id];\n });\n }\n}\n_messageWithAckPayloadRecords = new WeakMap();\n_socket = new WeakMap();\n_maxReties = new WeakMap();\n_timeoutValue = new WeakMap();\n_options3 = new WeakMap();\n_LogDebugMessage2 = new WeakSet();\nLogDebugMessage_fn2 = function(message) {\n __privateGet(this, _options3).logger.debug(message);\n};\n_GetSubscribeKeepAliveAckEventName = new WeakSet();\nGetSubscribeKeepAliveAckEventName_fn = function(eventName, subscriptionKey) {\n return `${eventName}Ack_${subscriptionKey.id}`;\n};\nclass ObservabilitySocketIOSubscriber {\n constructor(options) {\n __privateAdd(this, _LogDebugMessage3);\n __privateAdd(this, _LogErrorMessage2);\n __privateAdd(this, _AddKeepAlive2);\n __privateAdd(this, _RemoveKeepAlive2);\n __privateAdd(this, _socketSubscribeKeepAlive2, {});\n __privateAdd(this, _socket2, void 0);\n __privateAdd(this, _options4, void 0);\n __privateAdd(this, _socketIoMessageSender, void 0);\n // This is required becuase each call to .bind create a new replica bound function - so we need the same instance for on/off event bindings.\n __publicField(this, \"KeepAliveAckBoundFunction\");\n __privateSet(this, _options4, options);\n __privateSet(this, _socket2, options.socket);\n __privateSet(this, _socketIoMessageSender, new SocketIoMessageSender({\n socket: __privateGet(this, _socket2),\n logger: __privateGet(this, _options4).logger\n }));\n }\n get socket() {\n return __privateGet(this, _socket2);\n }\n set socket(socket) {\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.cyan(`ObservabilitySocketIOSubscriber:set socket(): new socket assigned`));\n __privateSet(this, _socket2, socket);\n __privateGet(this, _socketIoMessageSender).socket = socket;\n }\n SubscribeOne(subscription) {\n this.Subscribe([subscription]);\n }\n async Subscribe(subscriptions) {\n const socket = __privateGet(this, _socket2);\n subscriptions.map(async (subId) => {\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subId);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.yellow(`ObservabilitySocketIOSubscriber:Subscribe(): Sending subscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n try {\n const retVal = await __privateGet(this, _socketIoMessageSender).SendMessageWithAck(\"subscribe\", subId.subscriptionKey);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.green(`ObservabilitySocketIOSubscriber:Subscribe(): SendMessageWithAck response: [${JSON.stringify(retVal)}]`));\n __privateMethod(this, _AddKeepAlive2, AddKeepAlive_fn2).call(this, socket, subId);\n socket.on(GetSocketIOSubscriptionKey(subId.subscriptionKey), subId.cb);\n } catch (error) {\n __privateMethod(this, _LogErrorMessage2, LogErrorMessage_fn2).call(this, chalk$1.red(`ObservabilitySocketIOSubscriber:Subscribe(): Error: response: [${JSON.stringify(error)}]`));\n socket.off(GetSocketIOSubscriptionKey(subId.subscriptionKey), subId.cb);\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subId);\n }\n });\n }\n UnSubscribeOne(subscription) {\n this.UnSubscribe([subscription]);\n }\n UnSubscribe(subscriptions) {\n const socket = __privateGet(this, _socket2);\n subscriptions.map(async (subId) => {\n socket.off(GetSocketIOSubscriptionKey(subId.subscriptionKey), subId.cb);\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subId);\n __privateGet(this, _socketIoMessageSender).KillMessageInFlight(subId.subscriptionKey);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.yellow(`ObservabilitySocketIOSubscriber:UnSubscribe(): Sending unsubscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n try {\n const retVal = await __privateGet(this, _socketIoMessageSender).SendMessageWithAck(\"unsubscribe\", subId.subscriptionKey);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.green(`ObservabilitySocketIOSubscriber:UnSubscribe(): SendMessageWithAck response: [${JSON.stringify(retVal)}]`));\n } catch (error) {\n __privateMethod(this, _LogErrorMessage2, LogErrorMessage_fn2).call(this, chalk$1.red(`ObservabilitySocketIOSubscriber:UnSubscribe(): Error response: [${JSON.stringify(error)}]`));\n }\n });\n }\n /*\n override SocketIOConnect(socket: Socket<ServerToClientEvents, ClientToServerEvents>): void {\n if (this.#observabilitySocketIOSubscriber instanceof ObservabilitySocketIOSubscriber) {\n if (socket.id.localeCompare((this.#observabilitySocketIOSubscriber as ObservabilitySocketIOSubscriber).socket.id) === 0) {\n //this.#LogMessage(chalk.gray(`Socket ids are the same - ignoring`));\n } else {\n //this.#LogMessage(chalk.yellow(`Socket ids are different - update with new socket`));\n (this.#observabilitySocketIOSubscriber as ObservabilitySocketIOSubscriber).socket = socket;\n this.#observabilitySubscriptionManager.Start();\n }\n }\n }\n */\n}\n_socketSubscribeKeepAlive2 = new WeakMap();\n_socket2 = new WeakMap();\n_options4 = new WeakMap();\n_socketIoMessageSender = new WeakMap();\n_LogDebugMessage3 = new WeakSet();\nLogDebugMessage_fn3 = function(message) {\n __privateGet(this, _options4).logger.debug(message);\n};\n_LogErrorMessage2 = new WeakSet();\nLogErrorMessage_fn2 = function(message) {\n __privateGet(this, _options4).logger.error(message);\n};\n_AddKeepAlive2 = new WeakSet();\nAddKeepAlive_fn2 = function(socket, subscription) {\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subscription);\n __privateGet(this, _socketSubscribeKeepAlive2)[subscription.subscriptionKey.id] = {\n id: subscription.subscriptionKey.id,\n timeout: setTimeout(async () => {\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.yellow(`ObservabilitySocketIOSubscriber:#AddKeepAlive:timeoutCheck(): Sending keepAlive: subscriptionKey: [${subscription.subscriptionKey.id}]`));\n try {\n const retVal = await __privateGet(this, _socketIoMessageSender).SendMessageWithAck(\"subscribeKeepAlive\", subscription.subscriptionKey);\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.green(`ObservabilitySocketIOSubscriber:#AddKeepAlive(): SendMessageWithAck response: [${JSON.stringify(retVal)}]`));\n __privateMethod(this, _AddKeepAlive2, AddKeepAlive_fn2).call(this, socket, subscription);\n } catch (error) {\n __privateMethod(this, _LogErrorMessage2, LogErrorMessage_fn2).call(this, chalk$1.red(`ObservabilitySocketIOSubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n socket.off(GetSocketIOSubscriptionKey(subscription.subscriptionKey), subscription.cb);\n __privateMethod(this, _RemoveKeepAlive2, RemoveKeepAlive_fn2).call(this, subscription);\n }\n }, __privateGet(this, _options4).keepAlive)\n };\n};\n_RemoveKeepAlive2 = new WeakSet();\nRemoveKeepAlive_fn2 = function(subscription) {\n if (__privateGet(this, _socketSubscribeKeepAlive2)[subscription.subscriptionKey.id]) {\n __privateMethod(this, _LogDebugMessage3, LogDebugMessage_fn3).call(this, chalk$1.gray(`ObservabilitySocketIOSubscriber:#RemoveKeepAlive(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n clearTimeout(__privateGet(this, _socketSubscribeKeepAlive2)[subscription.subscriptionKey.id].timeout);\n delete __privateGet(this, _socketSubscribeKeepAlive2)[subscription.subscriptionKey.id];\n }\n};\nclass ObservabilitySubscriptionManager {\n constructor(options) {\n __privateAdd(this, _LogDebugMessage4);\n __privateAdd(this, _LogErrorMessage3);\n __privateAdd(this, _observabilitySocketIOSubscriber, null);\n __privateAdd(this, _subscriptions, []);\n __privateAdd(this, _kafkaHelper, void 0);\n __privateAdd(this, _serviceModel, {});\n __privateAdd(this, _agentModel, {});\n __privateAdd(this, _lambdaModel, {});\n __privateAdd(this, _options5, void 0);\n __privateSet(this, _options5, options);\n __privateSet(this, _kafkaHelper, new KafkaHelper({\n maxLogLength: __privateGet(this, _options5).maxLogLength\n }));\n }\n get observabilitySocketIOSubscriber() {\n return __privateGet(this, _observabilitySocketIOSubscriber);\n }\n set observabilitySocketIOSubscriber(observabilitySocketIOSubscriber) {\n __privateSet(this, _observabilitySocketIOSubscriber, observabilitySocketIOSubscriber);\n }\n get subscriptions() {\n return __privateGet(this, _subscriptions);\n }\n set subscriptions(subscriptions) {\n __privateSet(this, _subscriptions, subscriptions);\n }\n get serviceModel() {\n return __privateGet(this, _serviceModel);\n }\n get agentModel() {\n return __privateGet(this, _agentModel);\n }\n get lambdaModel() {\n return __privateGet(this, _lambdaModel);\n }\n AddSubscriptions(subscriptions) {\n var _a2;\n const subscriptionsToAdd = [];\n subscriptions.map((subscription) => {\n const retVal = this.subscriptions.find((v) => v.subscriptionKey.id.localeCompare(subscription.subscriptionKey.id) === 0);\n if (retVal) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.magenta(`AddSubscription(): Subscription: [${retVal.subscriptionKey.id}] already exists - ignoring.`));\n } else {\n subscriptionsToAdd.push(subscription);\n }\n });\n if (subscriptionsToAdd.length > 0) {\n subscriptionsToAdd.map((s) => this.subscriptions.push(s));\n (_a2 = __privateGet(this, _observabilitySocketIOSubscriber)) == null ? void 0 : _a2.Subscribe(subscriptionsToAdd);\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.magenta(`AddSubscription(): No valid subscriptions to subscribe.`));\n }\n }\n RemoveSubscriptionsByKey(keyToFind) {\n var _a2;\n const newSubscriptions = [];\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (((_a2 = this.subscriptions[i].subscriptionKey.key) == null ? void 0 : _a2.localeCompare(keyToFind)) === 0) {\n if (__privateGet(this, _observabilitySocketIOSubscriber)) {\n __privateGet(this, _observabilitySocketIOSubscriber).UnSubscribeOne(this.subscriptions[i]);\n }\n } else {\n newSubscriptions.push(this.subscriptions[i]);\n }\n }\n __privateSet(this, _subscriptions, newSubscriptions);\n }\n FindSubscriptionByKey(keyToFind) {\n var _a2;\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (((_a2 = this.subscriptions[i].subscriptionKey.key) == null ? void 0 : _a2.localeCompare(keyToFind)) === 0) {\n return this.subscriptions[i];\n }\n }\n return void 0;\n }\n FindSubscriptionByKeyAndSubKey(keyToFind, subKeyToFind) {\n var _a2, _b;\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (((_a2 = this.subscriptions[i].subscriptionKey.key) == null ? void 0 : _a2.localeCompare(keyToFind)) === 0) {\n if (((_b = this.subscriptions[i].subscriptionKey.subkey) == null ? void 0 : _b.localeCompare(subKeyToFind)) === 0) {\n return this.subscriptions[i];\n }\n }\n }\n return void 0;\n }\n Start() {\n if (__privateGet(this, _observabilitySocketIOSubscriber)) {\n __privateGet(this, _observabilitySocketIOSubscriber).Subscribe(this.subscriptions);\n }\n }\n Stop() {\n if (__privateGet(this, _observabilitySocketIOSubscriber)) {\n __privateGet(this, _observabilitySocketIOSubscriber).UnSubscribe(this.subscriptions);\n }\n }\n TransformSubscriptionPayloadCallback(subscriptionPayload, subscribeToKafka) {\n switch (subscriptionPayload.subscriptionKey.topic) {\n case SubscriptionTopic.AllServicesCombined:\n this.CreateModelAllServicesCombined(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.Services:\n this.CreateModelServices(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.ServiceInstances:\n this.CreateModelServiceInstances(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.ServiceInstance:\n this.CreateModelServiceInstance(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.AllLambdasCombined:\n this.CreateModelAllLambdasCombined(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.LambdaTechnologies:\n this.CreateModelLambdaTechnologies(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.LambdaSubTechnologies:\n this.CreateModelLambdaSubTechnologies(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.LambdaSubTechnologiesInstance:\n this.CreateModelLambdaSubTechnologiesInstance(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.AllAgentsCombined:\n this.CreateModelAllAgentsCombined(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.Agents:\n this.CreateModelAgents(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.AgentWorkers:\n this.CreateModelAgentWorkers(subscriptionPayload, subscribeToKafka);\n break;\n case SubscriptionTopic.AgentWorker:\n this.CreateModelAgentWorker(subscriptionPayload, subscribeToKafka);\n break;\n }\n }\n // --- [ Services ] ------------------------------------------------------------------------------------------------------------------------------------------------\n // /\n CreateModelAllServicesCombined(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _serviceModel, {});\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined.toString()) === 0) {\n __privateGet(this, _serviceModel)[\"STS-Service\"] = ObservabilityModelUtils.GetModelForService(\"STS-Service\", subscriptionPayload.data, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _serviceModel)[\"STS-Service\"] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAllServicesCombined():Error: GetModelForService() returned null`));\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, error);\n return;\n }\n }\n // /serviceId\n CreateModelServices(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _serviceModel, {});\n for (const [serviceId, serviceTelemetry] of Object.entries(subscriptionPayload.data)) {\n __privateGet(this, _serviceModel)[serviceId] = ObservabilityModelUtils.GetModelForService(serviceId, serviceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _serviceModel)[serviceId] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelServices():Error: GetModelForService() returned null`));\n }\n }\n } catch (error) {\n return;\n }\n }\n // /serviceId/serviceInstanceId\n CreateModelServiceInstances(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _serviceModel, {});\n for (const [serviceId, service] of Object.entries(subscriptionPayload.data)) {\n for (const [serviceInstanceId, serviceInstanceTelemetry] of Object.entries(service)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${serviceInstanceId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (serviceInstanceTelemetry.cpu && serviceInstanceTelemetry.cpu > 0) {\n __privateGet(this, _serviceModel)[serviceInstanceId] = ObservabilityModelUtils.GetModelForService(serviceInstanceId, serviceInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _serviceModel)[serviceInstanceId] !== null) {\n __privateGet(this, _serviceModel)[serviceInstanceId].options = { serviceId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _serviceModel)[serviceInstanceId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelServiceInstances():Error: GetModelForService() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n } catch (error) {\n return;\n }\n }\n // serviceId/serviceInstanceId/serviceInstanceProcessId\n CreateModelServiceInstance(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _serviceModel, {});\n for (const [serviceId, service] of Object.entries(subscriptionPayload.data)) {\n for (const [serviceInstanceId, serviceInstance] of Object.entries(service)) {\n for (const [serviceInstanceProcessId, serviceInstanceProcessTelemetry] of Object.entries(serviceInstance)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${serviceInstanceId}_${serviceInstanceProcessId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (serviceInstanceProcessTelemetry.cpu && serviceInstanceProcessTelemetry.cpu > 0) {\n __privateGet(this, _serviceModel)[serviceInstanceProcessId] = ObservabilityModelUtils.GetModelForService(serviceInstanceProcessId, serviceInstanceProcessTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _serviceModel)[serviceInstanceProcessId] !== null) {\n __privateGet(this, _serviceModel)[serviceInstanceProcessId].options = { serviceId, serviceInstanceId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _serviceModel)[serviceInstanceProcessId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelServiceInstance():Error: GetModelForService() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n }\n } catch (error) {\n return;\n }\n }\n // --- [ Agents ] ------------------------------------------------------------------------------------------------------------------------------------------------\n // /\n CreateModelAllAgentsCombined(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _agentModel, {});\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined.toString()) === 0) {\n if (Object.keys(subscriptionPayload.data).length !== 0) {\n __privateGet(this, _agentModel)[\"STS-Agent\"] = ObservabilityModelUtils.GetModelForAgent(\"STS-Agent\", subscriptionPayload.data, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _agentModel)[\"STS-Agent\"] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAllAgentsCombined():Error: GetModelForAgent() returned null`));\n }\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, error);\n return;\n }\n }\n // /agentId\n CreateModelAgents(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _agentModel, {});\n for (const [agentId, agentInstanceTelemetry] of Object.entries(subscriptionPayload.data)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${agentId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (agentInstanceTelemetry.timer) {\n __privateGet(this, _agentModel)[agentId] = ObservabilityModelUtils.GetModelForAgent(agentId, agentInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _agentModel)[agentId] !== null) {\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _agentModel)[agentId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAgents():Error: GetModelForAgent() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, chalk$1.red(`UIControllerAgent:CreateModel(): Error: [${error}]`));\n }\n }\n // /agentId/agentWorkerId\n CreateModelAgentWorkers(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _agentModel, {});\n for (const [agentId, agentWorker] of Object.entries(subscriptionPayload.data)) {\n for (const [agentWorkerId, agentInstanceTelemetry] of Object.entries(agentWorker)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${agentId}_${agentWorkerId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (agentInstanceTelemetry.timer) {\n const threadKey = `${agentWorkerId}`;\n __privateGet(this, _agentModel)[threadKey] = ObservabilityModelUtils.GetModelForAgent(threadKey, agentInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _agentModel)[threadKey] !== null) {\n const coreCount = __privateGet(this, _agentModel)[threadKey].instruments[Gauge.CORE_COUNT_GAUGE].val;\n __privateGet(this, _agentModel)[threadKey].canNavigate = coreCount > 0;\n __privateGet(this, _agentModel)[threadKey].options = { agentId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _agentModel)[threadKey]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAgentWorkers():Error: GetModelForAgent() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, chalk$1.red(`UIControllerAgentThreads:CreateModel(): Error: [${error}]`));\n }\n }\n // /agentId/agentWorkerId/asyncRunnerId\n CreateModelAgentWorker(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _agentModel, {});\n for (const [agentId, agentWorker] of Object.entries(subscriptionPayload.data)) {\n for (const [agentWorkerId, asyncRunnerData] of Object.entries(agentWorker)) {\n for (const [asyncRunnerId, agentInstanceTelemetry] of Object.entries(asyncRunnerData)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${agentId}_${agentWorkerId}_${asyncRunnerId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (agentInstanceTelemetry.timer) {\n __privateGet(this, _agentModel)[asyncRunnerId] = ObservabilityModelUtils.GetModelForAgent(asyncRunnerId, agentInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _agentModel)[asyncRunnerId] !== null) {\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _agentModel)[asyncRunnerId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAgentWorker():Error: GetModelForAgent() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, chalk$1.red(`UIControllerAgentThread:CreateModel(): Error: [${error}]`));\n }\n }\n // --- [ Lambdas ] ------------------------------------------------------------------------------------------------------------------------------------------------\n // /\n CreateModelAllLambdasCombined(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _lambdaModel, {});\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllLambdasCombined.toString()) === 0) {\n __privateGet(this, _lambdaModel)[\"STS-Lambda\"] = ObservabilityModelUtils.GetModelForLambda(\"STS-Lambda\", subscriptionPayload.data, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _lambdaModel)[\"STS-Lambda\"] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelAllLambdasCombined():Error: GetModelForLambda() returned null`));\n }\n }\n } catch (error) {\n __privateMethod(this, _LogErrorMessage3, LogErrorMessage_fn3).call(this, error);\n return;\n }\n }\n // /technologyId\n CreateModelLambdaTechnologies(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _lambdaModel, {});\n for (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) {\n __privateGet(this, _lambdaModel)[technologyId] = ObservabilityModelUtils.GetModelForLambda(technologyId, technologyTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _lambdaModel)[technologyId] === null) {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelLambdaTechnologies():Error: GetModelForLambda() returned null`));\n }\n }\n } catch (error) {\n return;\n }\n }\n // /technologyId/subTechnologyId\n CreateModelLambdaSubTechnologies(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _lambdaModel, {});\n for (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) {\n for (const [subTechnologyId, subTechnologyTelemetry] of Object.entries(technologyTelemetry)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${subTechnologyId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (subTechnologyTelemetry.cpu && subTechnologyTelemetry.cpu > 0) {\n __privateGet(this, _lambdaModel)[subTechnologyId] = ObservabilityModelUtils.GetModelForLambda(subTechnologyId, subTechnologyTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _lambdaModel)[subTechnologyId] !== null) {\n __privateGet(this, _lambdaModel)[subTechnologyId].options = { technologyId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _lambdaModel)[subTechnologyId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelLambdaSubTechnologies():Error: GetModelForLambda() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n } catch (error) {\n return;\n }\n }\n // /technologyId/subTechnologyId/subTechnologyInstanceId\n CreateModelLambdaSubTechnologiesInstance(subscriptionPayload, subscribeToKafka) {\n try {\n __privateSet(this, _lambdaModel, {});\n for (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) {\n for (const [subTechnologyId, subTechnologyTelemetry] of Object.entries(technologyTelemetry)) {\n for (const [subTechnologyInstanceId, subTechnologyInstanceTelemetry] of Object.entries(subTechnologyTelemetry)) {\n const kafkaTopic = `${KAFKA_PREFIX}_${subTechnologyId}_${subTechnologyInstanceId}`.replace(/@/g, \"_\").replace(/\\|/g, \"_\");\n if (subTechnologyInstanceTelemetry.cpu && subTechnologyInstanceTelemetry.cpu > 0) {\n __privateGet(this, _lambdaModel)[subTechnologyInstanceId] = ObservabilityModelUtils.GetModelForLambda(subTechnologyInstanceId, subTechnologyInstanceTelemetry, subscribeToKafka, __privateGet(this, _options5).logger);\n if (__privateGet(this, _lambdaModel)[subTechnologyInstanceId] !== null) {\n __privateGet(this, _lambdaModel)[subTechnologyInstanceId].options = { technologyId, subTechnologyId };\n if (subscribeToKafka) {\n __privateGet(this, _kafkaHelper).GetKafkaLogData(kafkaTopic, __privateGet(this, _lambdaModel)[subTechnologyInstanceId]);\n if (!this.FindSubscriptionByKey(kafkaTopic)) {\n this.AddSubscriptions([{\n subscriptionKey: {\n id: v4(),\n topic: SubscriptionTopic.LogProcessing,\n key: kafkaTopic\n },\n cb: (payload) => {\n __privateGet(this, _kafkaHelper).ProcessKafkaData(payload);\n }\n }]);\n }\n }\n } else {\n __privateMethod(this, _LogDebugMessage4, LogDebugMessage_fn4).call(this, chalk$1.red(`CreateModelLambdaSubTechnologiesInstance():Error: GetModelForLambda() returned null`));\n }\n } else {\n if (subscribeToKafka) {\n if (this.FindSubscriptionByKey(kafkaTopic)) {\n this.RemoveSubscriptionsByKey(kafkaTopic);\n }\n }\n }\n }\n }\n }\n } catch (error) {\n return;\n }\n }\n}\n_observabilitySocketIOSubscriber = new WeakMap();\n_subscriptions = new WeakMap();\n_kafkaHelper = new WeakMap();\n_serviceModel = new WeakMap();\n_agentModel = new WeakMap();\n_lambdaModel = new WeakMap();\n_options5 = new WeakMap();\n_LogDebugMessage4 = new WeakSet();\nLogDebugMessage_fn4 = function(message) {\n __privateGet(this, _options5).logger.debug(message);\n};\n_LogErrorMessage3 = new WeakSet();\nLogErrorMessage_fn3 = function(message) {\n __privateGet(this, _options5).logger.error(message);\n};\nclass SocketIoClientHelper {\n constructor(options) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n __privateAdd(this, _LogDebugMessage5);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n __privateAdd(this, _LogErrorMessage4);\n __privateAdd(this, _EstablishSocketConnect);\n __privateAdd(this, _options6, void 0);\n __privateAdd(this, _sockets, {});\n __privateAdd(this, _httpsAgent2, null);\n __privateSet(this, _options6, options);\n if (isNode) {\n const agentOptions = __privateGet(this, _options6).agentOptions;\n __privateSet(this, _httpsAgent2, new https.Agent({\n keepAlive: agentOptions == null ? void 0 : agentOptions.keepAlive,\n maxSockets: agentOptions == null ? void 0 : agentOptions.maxSockets,\n maxTotalSockets: agentOptions == null ? void 0 : agentOptions.maxTotalSockets,\n maxFreeSockets: agentOptions == null ? void 0 : agentOptions.maxFreeSockets,\n timeout: agentOptions == null ? void 0 : agentOptions.timeout,\n rejectUnauthorized: agentOptions == null ? void 0 : agentOptions.rejectUnauthorized\n // Allows self signed certs in non production mode(s)\n }));\n }\n }\n get sockets() {\n return __privateGet(this, _sockets);\n }\n SetupClientSideSocket(name, address, onConnectCallBack, socketEventsCallBack, errorCallBack) {\n this.sockets[name] = {\n name,\n address,\n socket: null,\n errorCallBack\n };\n __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack);\n return this.sockets[name].socket;\n }\n GetSocket(name) {\n return this.sockets[name].socket;\n }\n GetSocketDetail(name) {\n return this.sockets[name];\n }\n}\n_options6 = new WeakMap();\n_sockets = new WeakMap();\n_httpsAgent2 = new WeakMap();\n_LogDebugMessage5 = new WeakSet();\nLogDebugMessage_fn5 = function(message) {\n if (__privateGet(this, _options6).logger)\n __privateGet(this, _options6).logger.debug(message);\n};\n_LogErrorMessage4 = new WeakSet();\nLogErrorMessage_fn4 = function(message) {\n if (__privateGet(this, _options6).logger)\n __privateGet(this, _options6).logger.error(message);\n};\n_EstablishSocketConnect = new WeakSet();\nEstablishSocketConnect_fn = function(name, onConnectCallBack, socketEventsCallBack) {\n const socketDetail = this.sockets[name];\n if (socketDetail.socket !== null) {\n if (socketDetail.socket.connected === true) {\n socketDetail.socket.disconnect();\n }\n socketDetail.socket = null;\n if (isNode) {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100).unref();\n } else {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100);\n }\n return;\n }\n let socketOptions;\n if (isNode) {\n socketOptions = {\n transports: [\"websocket\"],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n agent: __privateGet(this, _httpsAgent2)\n // Custom https agent\n };\n } else {\n socketOptions = {\n transports: [\"websocket\"]\n };\n }\n socketDetail.socket = io(socketDetail.address, socketOptions);\n socketDetail.socket.on(\"connect\", () => {\n if (socketDetail.socket) {\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, `Socket: [${socketDetail.socket.id}]: connected`);\n if (onConnectCallBack) {\n setTimeout(() => {\n onConnectCallBack(socketDetail.socket);\n }, 0);\n }\n if (socketEventsCallBack) {\n socketEventsCallBack(socketDetail.socket);\n }\n } else {\n const errorMessage = \"Could not get socket object from socket.io\";\n __privateMethod(this, _LogErrorMessage4, LogErrorMessage_fn4).call(this, errorMessage);\n socketDetail.errorCallBack(new Error(errorMessage));\n }\n });\n socketDetail.socket.on(\"disconnect\", (reason) => {\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"socket disconnect: \" + reason);\n switch (reason) {\n case \"io server disconnect\":\n {\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The server disconnected using disconnectSockets, i.e. normal safe shutdown from explicit disconnection by the server.\");\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The connection will be re-established when the server becomes available.\");\n const socketDetail2 = this.sockets[name];\n socketDetail2.socket = null;\n if (isNode) {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100).unref();\n } else {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100);\n }\n }\n break;\n case \"io client disconnect\":\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The client disconnected using disconnectSockets, i.e. normal safe disconnection from explicit disconnection by the client.\");\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The connection will not be re-established automatically.\");\n break;\n case \"transport close\":\n case \"ping timeout\":\n case \"transport error\":\n {\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, `Server unexpectedly disconnected. Reason: [${reason}]`);\n __privateMethod(this, _LogDebugMessage5, LogDebugMessage_fn5).call(this, \"The connection will be re-established when the server becomes available.\");\n const socketDetail2 = this.sockets[name];\n if (socketDetail2.socket) {\n socketDetail2.socket.disconnect();\n }\n socketDetail2.socket = null;\n if (isNode) {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100).unref();\n } else {\n setTimeout(() => __privateMethod(this, _EstablishSocketConnect, EstablishSocketConnect_fn).call(this, name, onConnectCallBack, socketEventsCallBack), 100);\n }\n }\n break;\n }\n });\n};\nvar influxDBDataType = /* @__PURE__ */ ((influxDBDataType2) => {\n influxDBDataType2[\"intField\"] = \"intField\";\n influxDBDataType2[\"floatField\"] = \"floatField\";\n influxDBDataType2[\"stringField\"] = \"stringField\";\n return influxDBDataType2;\n})(influxDBDataType || {});\nconst globalServiceDefinitions = {\n coreFieldList: [\n {\n fieldName: \"requestCount\",\n gauge: Gauge.REQUEST_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"errorCount\",\n gauge: Gauge.ERROR_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"retryCount\",\n gauge: Gauge.RETRY_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"authenticationCount\",\n gauge: Gauge.AUTHENTICATION_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"authenticationErrorCount\",\n gauge: Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"authenticationRetryCount\",\n gauge: Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"velocity\",\n gauge: Gauge.VELOCITY_GAUGE,\n instrumentProperty: \"va\",\n dataType: \"number\",\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"activeRequestCount\",\n gauge: Gauge.ACTIVE_REQUEST_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"coreCount\",\n gauge: Gauge.CORE_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"rx\",\n gauge: Gauge.NETWORK_RX_GAUGE,\n instrumentProperty: \"va\",\n dataType: \"number\",\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"tx\",\n gauge: Gauge.NETWORK_TX_GAUGE,\n instrumentProperty: \"va\",\n dataType: \"number\",\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"timer\",\n gauge: Gauge.TIMER_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"duration\",\n gauge: Gauge.DURATION_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\",\n histo: [\n { label: \"B10\", bucketLimit: 10 },\n { label: \"B20\", bucketLimit: 20 },\n { label: \"B50\", bucketLimit: 50 },\n { label: \"B100\", bucketLimit: 100 },\n { label: \"B1000\", bucketLimit: 1e3 },\n { label: \"B50000\", bucketLimit: 5e4 },\n { label: \"BInfinity\", bucketLimit: -1 }\n ]\n },\n {\n fieldName: \"latency\",\n gauge: Gauge.LATENCY_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\",\n histo: [\n { label: \"B10\", bucketLimit: 10 },\n { label: \"B20\", bucketLimit: 20 },\n { label: \"B50\", bucketLimit: 50 },\n { label: \"B100\", bucketLimit: 100 },\n { label: \"B1000\", bucketLimit: 1e3 },\n { label: \"B50000\", bucketLimit: 5e4 },\n { label: \"BInfinity\", bucketLimit: -1 }\n ]\n }\n ],\n services: {\n [\"service\"]: {\n influxDBContextTags: [\n \"serviceId\",\n \"serviceName\",\n \"serviceVersion\",\n \"serviceInstanceId\",\n \"serviceInstanceProcessId\",\n \"hostName\",\n \"pid\",\n \"ppid\"\n ],\n redisIndexPrefixDefinitions: {\n timeSeriesIndex: \"idx:serviceIndexTimeSeries\",\n timeSeriesPrefix: \"/serviceTimeSeries:\",\n instantIndex: \"idx:serviceIndexInstant\",\n instantPrefix: \"/serviceInstant:\"\n },\n fieldList: [\n {\n fieldName: \"cpu\",\n gauge: Gauge.CPU_LOAD_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"connectionCount\",\n gauge: Gauge.CONNECTION_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionPoolCount\",\n gauge: Gauge.CONNECTION_POOL_TOTAL_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionIdleCount\",\n gauge: Gauge.CONNECTION_POOL_IDLE_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionWaitingCount\",\n gauge: Gauge.CONNECTION_POOL_WAITING_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"systemcpu\",\n gauge: Gauge.CPU_SYSTEM_LOAD_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"memory\",\n gauge: Gauge.OBJECT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"JSON\",\n influxdbDataType: \"stringField\"\n /* stringField */\n }\n ],\n GetPathFromContext(context) {\n const { serviceId, serviceInstanceId, serviceInstanceProcessId } = context;\n return `/${serviceId}/${serviceInstanceId}/${serviceInstanceProcessId}`;\n },\n redisQueryFilters: {\n level1ContextField: \"serviceType\",\n level2ContextField: \"appid\",\n level3ContextField: \"appinstanceid\"\n },\n subscriptionTopics: [\n {\n subscriptionTopic: SubscriptionTopic.AllServicesCombined,\n route: \"/metrics\"\n },\n {\n subscriptionTopic: SubscriptionTopic.Services,\n route: \"/metrics/services\"\n },\n {\n subscriptionTopic: SubscriptionTopic.ServiceInstances,\n route: \"/metrics/services/:key\"\n },\n {\n subscriptionTopic: SubscriptionTopic.ServiceInstance,\n route: \"/metrics/services/:key/:subkey\"\n }\n ]\n },\n [\"agent\"]: {\n influxDBContextTags: [\n \"id\",\n \"hostName\",\n \"agentName\",\n \"threadId\",\n \"asyncRunnerId\"\n ],\n redisIndexPrefixDefinitions: {\n timeSeriesIndex: \"idx:agentIndexTimeSeries\",\n timeSeriesPrefix: \"/agentTimeSeries:\",\n instantIndex: \"idx:agentIndexInstant\",\n instantPrefix: \"/agentInstant:\"\n },\n fieldList: [\n {\n fieldName: \"childCount\",\n gauge: Gauge.CHILD_COUNT,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n }\n ],\n //@@ need type declare in appframework ?? agent does not use appframework ... perhaps stspublisher\n GetPathFromContext(context) {\n const { agentName, threadId, asyncRunnerId } = context;\n return `/${agentName}/${threadId}/${asyncRunnerId}`;\n },\n redisQueryFilters: {\n level1ContextField: \"serviceType\",\n level2ContextField: \"appid\",\n //@@ this should be named something else\n level3ContextField: \"appinstanceid\"\n //@@ this should be named something else\n },\n subscriptionTopics: [\n {\n subscriptionTopic: SubscriptionTopic.AllAgentsCombined,\n route: \"/metrics\"\n },\n {\n subscriptionTopic: SubscriptionTopic.Agents,\n route: \"/metrics/agents\"\n },\n {\n subscriptionTopic: SubscriptionTopic.AgentWorkers,\n route: \"/metrics/agents/:key\"\n },\n {\n subscriptionTopic: SubscriptionTopic.AgentWorker,\n route: \"/metrics/agents/:key/:subkey\"\n }\n ]\n },\n [\"lambda\"]: {\n influxDBContextTags: [\n \"technology\",\n \"subTechnology\",\n \"lambdaFunctionName\",\n \"lambdaInstance\",\n \"hostName\",\n \"processId\",\n \"parentProcessId\",\n \"useCase\",\n \"pattern\"\n ],\n redisIndexPrefixDefinitions: {\n timeSeriesIndex: \"idx:lambdaIndexTimeSeries\",\n timeSeriesPrefix: \"/lambdaTimeSeries:\",\n instantIndex: \"idx:lambdaIndexInstant\",\n instantPrefix: \"/lambdaInstant:\"\n },\n fieldList: [\n {\n fieldName: \"cpu\",\n gauge: Gauge.CPU_LOAD_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"connectionCount\",\n gauge: Gauge.CONNECTION_COUNT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionPoolCount\",\n gauge: Gauge.CONNECTION_POOL_TOTAL_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionIdleCount\",\n gauge: Gauge.CONNECTION_POOL_IDLE_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"connectionWaitingCount\",\n gauge: Gauge.CONNECTION_POOL_WAITING_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n influxdbDataType: \"intField\"\n /* intField */\n },\n {\n fieldName: \"systemcpu\",\n gauge: Gauge.CPU_SYSTEM_LOAD_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"number\",\n timeSeriesIndex: true,\n quantile: true,\n influxdbDataType: \"floatField\"\n /* floatField */\n },\n {\n fieldName: \"memory\",\n gauge: Gauge.OBJECT_GAUGE,\n instrumentProperty: \"val\",\n dataType: \"JSON\",\n influxdbDataType: \"stringField\"\n /* stringField */\n }\n ],\n //@@ need type declare in appframework\n GetPathFromContext(context) {\n const { technology, subTechnology, lambdaInstance } = context;\n return `/${technology}/${subTechnology}/${lambdaInstance}`;\n },\n redisQueryFilters: {\n level1ContextField: \"serviceType\",\n level2ContextField: \"technology\",\n level3ContextField: \"subTechnology\"\n },\n subscriptionTopics: [\n {\n subscriptionTopic: SubscriptionTopic.AllLambdasCombined,\n // uicontrollerlanding\n route: \"/metrics\"\n },\n {\n subscriptionTopic: SubscriptionTopic.LambdaTechnologies,\n // uicontrollerlambda\n route: \"/metrics/lambdas\"\n },\n {\n subscriptionTopic: SubscriptionTopic.LambdaSubTechnologies,\n // uicontrollerlambdasubtechnologies\n route: \"/metrics/lambdas/:key\"\n },\n {\n subscriptionTopic: SubscriptionTopic.LambdaSubTechnologiesInstance,\n // uicontrollerlambdasubtechnologiesinstance\n route: \"/metrics/lambdas/:key/:subkey\"\n }\n ]\n }\n }\n};\nexport {\n AgentInstrumentController,\n CompareSTSInstrumentControllerPluginKey,\n CreateInstrument,\n Gauge,\n GaugeTypes,\n GetInstrumentName,\n GetSTSInstrumentController,\n GetSTSInstrumentControllerPluginKey,\n GetSocketIOSubscriptionKey,\n GetTransportMode,\n HistogramDataElementPos,\n InstrumentBase,\n InstrumentBaseOptions,\n InstrumentBaseTelemetry,\n InstrumentGauge,\n InstrumentGaugeOptions,\n InstrumentGaugeTelemetry,\n InstrumentHistogram,\n InstrumentHistogramOptions,\n InstrumentHistogramTelemetry,\n InstrumentLog,\n InstrumentLogOptions,\n InstrumentLogTelemetry,\n InstrumentObject,\n InstrumentObjectOptions,\n InstrumentObjectTelemetry,\n InstrumentPayloadType,\n InstrumentTimerGauge,\n InstrumentTimerOptions,\n InstrumentTimerTelemetry,\n InstrumentVelocity,\n InstrumentVelocityOptions,\n InstrumentVelocityTelemetry,\n KAFKA_PREFIX,\n KafkaHelper,\n ObservabilityModelUtils,\n ObservabilityRESTAPISubscriber,\n ObservabilitySocketIOSubscriber,\n ObservabilitySubscriptionManager,\n PublishInstrumentController,\n PublishTransportRESTServer,\n RequestLoggerMiddleware,\n RequestLoggerMiddlewareEventName,\n STSInstrumentControllerPlugin,\n STSInstrumentControllerPluginKey,\n SocketIoClientHelper,\n SocketIoMessageSender,\n StopInstruments,\n SubscriptionTopic,\n TransportType,\n ePublishState,\n globalServiceDefinitions,\n influxDBDataType,\n messageStatus,\n messageStatusResponse,\n useSTSInstrumentControllerPlugin\n};\n//# sourceMappingURL=stsobservability.mjs.map\n","import { defineStore } from 'pinia'\n\nimport type { IWorker, IWorkerEx, IRunnerEx, IRunner, ITelemetryStore } from './../plugins/stsTestWorkerDefinitions'\n\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\nexport const TelemetryStore = defineStore('__sts__TelemetryStore', {\n // State\n // https://pinia.vuejs.org/core-concepts/state.html\n state: (): ITelemetryStore => {\n return {\n workers: { }\n }\n },\n\n // Getters\n // https://pinia.vuejs.org/core-concepts/getters.html\n\n // Actions\n // https://pinia.vuejs.org/core-concepts/actions.html\n actions: {\n RemoveWorker(workerEx: IWorkerEx) {\n delete this.workers[workerEx.id];\n },\n\n RemoveRunner(workerEx: IWorkerEx, runnerEx: IRunnerEx) {\n const worker: IWorker = this.workers[workerEx.id];\n if (worker && worker.runners) {\n delete worker.runners[runnerEx.id];\n }\n },\n\n Update(workerEx: IWorkerEx, runnerEx: IRunnerEx) {\n if (!this.workers[workerEx.id]) {\n // Create a new telemetry record\n this.workers[workerEx.id] = {\n id: workerEx.id,\n state: workerEx.state,\n primaryThreadWorkerOptions: { ...workerEx.primaryThreadWorkerOptions },\n workerThreadWorkerOptions: { ...workerEx.workerThreadWorkerOptions },\n runners: { }\n } as IWorker\n }\n const worker: IWorker = this.workers[workerEx.id];\n // Now check for the async runner\n if (worker.runners) {\n if (!worker.runners[runnerEx.id]) {\n // Create a new asyncRunnerInstance telemetry record\n const runner: IRunner = {\n id: runnerEx.id,\n asyncRunnerContext: { ...runnerEx.asyncRunnerContext },\n options: { ...runnerEx.options },\n state: runnerEx.state,\n instrumentData: { ...runnerEx.instrumentData },\n }\n worker.runners[runner.id] = runner;\n } else {\n const runner: IRunner = worker.runners[runnerEx.id];\n runner.instrumentData = { ...runnerEx.instrumentData }\n }\n }\n }\n }\n});\n","import type { PublishInstrumentController } from '@nsshunt/stsobservability'\n\nimport type { IIWMessagePayloadContentBase, \n IIWMessagePayload, IAsyncRunnerContext } from './../commonTypes'\n\t\nexport interface ISTSAgentWorkerMessagePort extends IIWMessagePayloadContentBase {\n port: MessagePort\n options: IWorkerOptions\n}\n\nexport enum IRunnerState {\n\tcreated = 'created',\n\trunning = 'running',\n\tstopped = 'stopped',\n\tpaused = 'paused',\n\terror = 'error',\n}\n\nexport interface IRunnerTelemetry {\n\trequestCount: number // requestCount\n\terrorCount: number\n\tretryCount: number\n\tauthenticationCount: number\n\tauthenticationErrorCount: number\n\tauthenticationRetryCount: number\n\tvelocity: number\n\tcoreCount: number\n\ttimer: number\n\tduration: number\n\tlatency: number\n\tactiveRequestCount: number\n\tmessage: string[]\n\tchildCount: number\n\trx: number\n\ttx: number\n}\n\nexport interface IRunner {\n\tid: number\n\tasyncRunnerContext: IAsyncRunnerContext\n\toptions: IRunnerOptions\n\tstate: IRunnerState\n\tinstrumentData: IRunnerTelemetry\n}\n\nexport interface IRunnerEx extends IRunner {\n publishInstrumentController: PublishInstrumentController\n Stop: () => Promise<boolean>\n}\n\nexport enum IWorkerState {\n\tstarting = 'starting',\n\tstarted = 'started',\n\tstopped = 'stopped'\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IWorkerOptions {\n hostName: string\n agentId: string\n userAgent: string\n}\n\nexport type Runners = Record<string, IRunner>\n\nexport interface IWorker {\n\tid: number\n\tstate: IWorkerState\n primaryThreadWorkerOptions: IWorkerOptions\n\tworkerThreadWorkerOptions: IWorkerOptions\n\trunners?: Runners // Will be created by utility helper\n}\n\nexport type Workers = Record<string, IWorker>\n\nexport interface IPrimaryWorker {\n ProcessMessageFromWorker(workerPort: MessagePort, publishMessagePayload: IIWMessagePayload): Promise<void>\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IRunnerOptions {\n\n}\n\nexport interface IWorkerEx extends IWorker {\n\tworker: Worker\n primaryWorker: IPrimaryWorker\n\trunnersEx: Record<string, IRunnerEx>\n\tAddRunner: (runnerOptions: IRunnerOptions) => IRunnerEx\n\tStopRunner: (runner: IRunnerEx) => Promise<boolean>\n\tStop: () => Promise<boolean>\n}\n\nexport interface ISTSTestWorkerOptions {\n messageMod: number\n iterations: number\n}\n\nexport interface ITelemetryStore {\n\tworkers: Workers\n}\n\nexport interface ITestRunnerTelemetryPayload extends IIWMessagePayloadContentBase {\n\trunner: IRunner\n}\n\nexport interface IWorkerFactory {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createPrimaryThreadWorker: (app: any, options: IWorkerOptions) => IPrimaryWorker\n\tcreateWorkerThreadWorker: () => Worker // | wt.Worker\n get workerThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup\n get primaryThreadWorkerOptions(): IWorkerOptions // These options will be passed as a message to the thread worker once setup\n}\n\nexport interface IWorkerManagerOptions {\n workerFactory: IWorkerFactory\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","import debugModule from 'debug'\nconst debug = debugModule(`proc:${process.pid}:workerManager`);\n\n//import MyWorker from './sts-worker?worker' // https://vitejs.dev/guide/features.html#web-workers\nimport { type IAsyncRunnerContext, IIWMessagePayload, IIWMessagePayloadContentBase, \n type IIWMessageCommand, eIWMessageCommands } from './../commonTypes'\n \nimport { Gauge, InstrumentGaugeTelemetry } from '@nsshunt/stsobservability'\n\nimport { ModelDelimeter } from '@nsshunt/stsutils'\n\nimport { TelemetryStore } from './../stores/TelemetryStore'\n//import { ApplicationStore } from './../stores/applicationStore'\n\nimport type { ISTSAgentWorkerMessagePort, IWorkerEx, IRunner, IRunnerEx,\n ITestRunnerTelemetryPayload, IRunnerOptions, IRunnerTelemetry,\n IWorkerManagerOptions, IWorkerFactory } from './stsTestWorkerDefinitions'\n\nimport { IWorkerState, IRunnerState } from './stsTestWorkerDefinitions'\nimport { Sleep } from '@nsshunt/stsutils';\nimport { inject } from 'vue';\n\nimport { STSInstrumentControllerPluginKey, GetSTSInstrumentControllerPluginKey, GetSTSInstrumentController, AgentInstrumentController } from '@nsshunt/stsobservability'\nimport { STSWorkerManagerPluginKey } from './stsPluginKeys';\n\nimport chalk from 'chalk';\nchalk.level = 3;\n\nexport class STSWorkerManager {\n //#agentSession: string = null;\n #workersEx: Record<string, IWorkerEx> = { };\n #runner = 0;\n #workerId = 0;\n #options: IWorkerManagerOptions;\n #STSInstrumentController: AgentInstrumentController\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #app: any\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(app: any, options?: IWorkerManagerOptions) {\n this.#app = app;\n if (options) {\n this.#options = options;\n } else {\n this.#options = { } as IWorkerManagerOptions;\n }\n\n debug(`CompareSTSInstrumentControllerPluginKeyWMEx(): [${CompareSTSInstrumentControllerPluginKeyWMEx()}]`);\n\n debug(`Attempting to get STSInstrumentControllerPlugin using symbol: [${String(STSInstrumentControllerPluginKey)}]`);\n //this.#STSInstrumentController = app.config.globalProperties.$sts[STSInstrumentControllerPluginKey]\n //this.#STSInstrumentController = app.config.globalProperties.$sts[GetSTSInstrumentControllerPluginKey()]\n this.#STSInstrumentController = GetSTSInstrumentController(app);\n //this.#STSInstrumentController = app.config.globalProperties.$sts.aic;\n\n debug(this.#STSInstrumentController);\n debug('keys within app.config.globalProperties.$sts');\n for (const [key, ] of Object.entries(app.config.globalProperties.$sts)) {\n debug(`${key}`);\n }\n\n if (!this.#STSInstrumentController) {\n debug(`Failed to get STSInstrumentControllerPlugin using symbol: [${String(STSInstrumentControllerPluginKey)}]`);\n }\n }\n \n get WorkersEx(): Record<string, IWorkerEx>\n {\n return this.#workersEx;\n }\n\n AddWorker = async (useWorkerFactory?: IWorkerFactory): Promise<IWorkerEx> => {\n let workerFactory: IWorkerFactory;\n if (useWorkerFactory) {\n // Use the supplied workFactory\n workerFactory = useWorkerFactory;\n } else {\n // Use the default workFactory\n workerFactory = this.#options.workerFactory\n }\n const stsWorkerEx: IWorkerEx = {\n id: this.#workerId++, // uuidv4()\n worker: workerFactory.createWorkerThreadWorker(),\n primaryWorker: workerFactory.createPrimaryThreadWorker(this.#app, workerFactory.primaryThreadWorkerOptions),\n state: IWorkerState.starting,\n workerThreadWorkerOptions: workerFactory.workerThreadWorkerOptions,\n primaryThreadWorkerOptions: workerFactory.primaryThreadWorkerOptions,\n runnersEx: { } as Record<string, IRunnerEx>,\n AddRunner: (runnerOptions: IRunnerOptions): IRunnerEx => this.AddRunnerToWorker(stsWorkerEx, runnerOptions),\n StopRunner: (runner: IRunnerEx): Promise<boolean> => this.#StopRunner(stsWorkerEx, runner),\n Stop: async (): Promise<boolean> => this.#StopWorker(stsWorkerEx)\n }\n this.#STSInstrumentController.LogEx(chalk.yellow(`Creating new worker: [${stsWorkerEx.id}]`));\n console.log(`Adding worker: [${stsWorkerEx.id}]`);\n\n stsWorkerEx.worker.onmessage = function(data: MessageEvent) {\n console.log(data.data);\n }\n\n stsWorkerEx.worker.onerror = function(error) {\n console.log(error);\n };\n\n const { \n port1, // process message port\n port2 // collector message port\n } = new MessageChannel();\n\n const workerPort = port1;\n \n console.log(`STSWorkerManager::AddWorker::workerThreadWorkerOptions: [${JSON.stringify(stsWorkerEx.workerThreadWorkerOptions)}]`);\n\n this.#PostMessageToWorker(stsWorkerEx, eIWMessageCommands.MessagePort, {\n port: port2,\n //applicationStoreState: stateCopy,\n options: { ...stsWorkerEx.workerThreadWorkerOptions }\n } as ISTSAgentWorkerMessagePort, port2);\n \n // Process messages received back from the worker\n workerPort.onmessage = async (data: MessageEvent) => {\n const publishMessagePayload: IIWMessagePayload = data.data as IIWMessagePayload;\n switch (publishMessagePayload.command) {\n case eIWMessageCommands.MessagePortResponse : \n stsWorkerEx.state = IWorkerState.started;\n break;\n case eIWMessageCommands.InstrumentTelemetry :\n this.#ProcessTelemetry(stsWorkerEx, publishMessagePayload.payload as ITestRunnerTelemetryPayload);\n break;\n default :\n stsWorkerEx.primaryWorker.ProcessMessageFromWorker(workerPort, publishMessagePayload);\n }\n }\n\n this.#workersEx[stsWorkerEx.id] = stsWorkerEx;\n\n console.log(`Added worker: [${stsWorkerEx.id}]`);\n\n return stsWorkerEx;\n }\n\n AddRunnerToWorker = (stsWorkerEx: IWorkerEx, runnerOptions: IRunnerOptions): IRunnerEx => {\n const runnerEx: IRunnerEx = this.#CreateAsyncRunner(stsWorkerEx, runnerOptions);\n stsWorkerEx.runnersEx[runnerEx.id] = runnerEx;\n this.#SetRunnerIntoWorker(stsWorkerEx, runnerEx);\n runnerEx.publishInstrumentController.LogEx(chalk.green(`Added runner: [${runnerEx.id}] into worker: [${stsWorkerEx.id}]`));\n return runnerEx;\n }\n\n #CreateRunnerCopy(runnerEx: IRunnerEx): IRunner {\n return {\n id: runnerEx.id,\n asyncRunnerContext: { ...runnerEx.asyncRunnerContext },\n options: { ...runnerEx.options },\n state: runnerEx.state,\n instrumentData: { ...runnerEx.instrumentData }\n } as IRunner\n }\n\n #SetRunnerIntoWorker = (workerEx: IWorkerEx, runnerEx: IRunnerEx): void => {\n // Now that the worker is setup, send the options\n //@@ wait until worker in running state\n const payload: ITestRunnerTelemetryPayload = {\n runner: this.#CreateRunnerCopy(runnerEx)\n }\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.AddAsyncRunner, payload);\n }\n\n #ProcessTelemetry = (workerEx: IWorkerEx, payloadContents: ITestRunnerTelemetryPayload): void => {\n const store = TelemetryStore();\n\n const { runner } = payloadContents;\n\n if (workerEx.runnersEx[runner.id]) {\n const runnerEx: IRunnerEx = workerEx.runnersEx[runner.id];\n let update = false;\n\n // Copy telemetry\n runnerEx.instrumentData = { ...runner.instrumentData };\n\n if (runner.instrumentData.message) {\n runnerEx.instrumentData.message = [...runner.instrumentData.message];\n } else {\n runnerEx.instrumentData.message = [ ];\n }\n\n if (runner.instrumentData.message) {\n runner.instrumentData.message.forEach((message) => {\n runnerEx.publishInstrumentController.LogEx(message);\n });\n update = true;\n }\n\n if (runner.instrumentData.requestCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.REQUEST_COUNT_GAUGE, {\n val: runnerEx.instrumentData.requestCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.errorCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ERROR_COUNT_GAUGE, {\n val: runnerEx.instrumentData.errorCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.retryCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.RETRY_COUNT_GAUGE, {\n val: runnerEx.instrumentData.retryCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationErrorCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.authenticationRetryCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE, {\n val: runnerEx.instrumentData.authenticationCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.coreCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CORE_COUNT_GAUGE, {\n val: runnerEx.instrumentData.coreCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.timer) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.TIMER_GAUGE, {\n val: runnerEx.instrumentData.timer\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.activeRequestCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.ACTIVE_REQUEST_GAUGE, {\n val: runnerEx.instrumentData.activeRequestCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.velocity) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.VELOCITY_GAUGE, {\n Inc: runnerEx.instrumentData.velocity\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.duration) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_GAUGE, {\n val: runnerEx.instrumentData.duration\n } as InstrumentGaugeTelemetry);\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.DURATION_HISTOGRAM_GAUGE, {\n val: runnerEx.instrumentData.duration\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.latency) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_GAUGE, {\n val: runnerEx.instrumentData.latency\n } as InstrumentGaugeTelemetry);\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.LATENCY_HISTOGRAM_GAUGE, {\n val: runnerEx.instrumentData.latency\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.childCount) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.CHILD_COUNT, {\n val: runnerEx.instrumentData.childCount\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.rx) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_RX_GAUGE, {\n Inc: runnerEx.instrumentData.rx\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (runner.instrumentData.tx) {\n runnerEx.publishInstrumentController.UpdateInstrument(Gauge.NETWORK_TX_GAUGE, {\n Inc: runnerEx.instrumentData.tx\n } as InstrumentGaugeTelemetry);\n update = true;\n }\n\n if (update) {\n store.Update(workerEx, runnerEx);\n }\n }\n }\n\n #CreateAsyncRunner = (workerEx: IWorkerEx, runnerOptions: IRunnerOptions): IRunnerEx => {\n //const applicationStore = ApplicationStore();\n this.#runner++; // The runner number always increases\n this.#STSInstrumentController.LogEx(chalk.yellow(`Creating new async runner: [${this.#runner}]`));\n const asyncRunnerContext: IAsyncRunnerContext = {\n nid: `\\\n${workerEx.workerThreadWorkerOptions.hostName}${ModelDelimeter.COMPONENT_SEPERATOR}${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}\\\n${ModelDelimeter.NID_SEPERATOR}\\\nworker${workerEx.id}\\\n${ModelDelimeter.SEPERATOR}\\\n${this.#runner}`,\n id: this.#runner.toString(),\n hostName: (workerEx.workerThreadWorkerOptions.hostName ? workerEx.workerThreadWorkerOptions.hostName : 'host'),\n agentName: `${workerEx.workerThreadWorkerOptions.agentId}-${workerEx.workerThreadWorkerOptions.userAgent}`,\n threadId: `worker${workerEx.id}`,\n asyncRunnerId: this.#runner\n }\n const runnerEx: IRunnerEx = {\n id: this.#runner,\n publishInstrumentController: this.#STSInstrumentController.AddPublishInstrumentController(asyncRunnerContext),\n asyncRunnerContext: asyncRunnerContext,\n state: IRunnerState.created,\n options: runnerOptions,\n instrumentData: {\n requestCount: 0,\n errorCount: 0,\n retryCount: 0,\n authenticationCount: 0,\n authenticationErrorCount: 0,\n authenticationRetryCount: 0,\n velocity: 0,\n coreCount: 0,\n timer: 0,\n duration: 0,\n latency: 0,\n activeRequestCount: 0,\n message: [ ],\n childCount: 0,\n rx: 0,\n tx: 0\n } as IRunnerTelemetry,\n Stop: async (): Promise<boolean> => this.#StopRunner(workerEx, runnerEx)\n }\n return runnerEx;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #PostMessageToWorker = (workerEx: IWorkerEx, command: IIWMessageCommand, payload: IIWMessagePayloadContentBase | null, transferObject?: any) => {\n if (transferObject) {\n console.log(`#PostMessageToWorker with transfer object`);\n workerEx.worker.postMessage({ command, payload }, [transferObject]);\n console.log(`#PostMessageToWorker with transfer object - done...`);\n } else {\n console.log(`#PostMessageToWorker`);\n workerEx.worker.postMessage({ command, payload });\n }\n }\n\n #TerminateWorker = (workerEx: IWorkerEx) => {\n if (workerEx.worker) {\n const store = TelemetryStore();\n\n workerEx.worker.terminate();\n //@@workerEx.worker = null;\n console.log(`Terminated worker: [${workerEx.id}]`);\n store.RemoveWorker(workerEx);\n delete this.#workersEx[workerEx.id];\n } else {\n // Some other runner has already removed the parent worker, do nothing\n // console.log(`WORKER ALREADY NULL`);\n }\n }\n\n #StopRunner = async (workerEx: IWorkerEx, runnerEx: IRunnerEx | null = null): Promise<boolean> => {\n // If runnerEx not provided, Remove the first runner in the collection\n if (runnerEx === null) {\n const ids: string[] = Object.keys(workerEx.runnersEx);\n if (ids.length > 0) {\n const id = ids[0];\n runnerEx = workerEx.runnersEx[id];\n }\n }\n if (runnerEx !== null) {\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.StopAllAsyncRunners, {\n runner: this.#CreateRunnerCopy(runnerEx)\n } as ITestRunnerTelemetryPayload);\n\n runnerEx.publishInstrumentController.LogEx(`Terminating runner: [${runnerEx.id}]`);\n \n const promArray: Promise<boolean>[] = [ ];\n\n promArray.push((async (): Promise<boolean> => {\n await Sleep(100);\n return runnerEx.publishInstrumentController.EndPublish() as Promise<boolean>\n })());\n\n const store = TelemetryStore();\n store.RemoveRunner(workerEx, runnerEx);\n\n delete workerEx.runnersEx[runnerEx.id];\n\n const retVal = await Promise.all(promArray);\n console.log(`Removed instrument workers: [${retVal}]`);\n\n /*\n // If the removed runner was the last runner, remove the worker\n if (Object.keys(workerEx.runnersEx).length === 0) {\n this.#TerminateWorker(workerEx);\n }\n */\n }\n return true;\n }\n\n #StopWorker = async (workerEx: IWorkerEx): Promise<boolean> => {\n try {\n if (workerEx.state !== IWorkerState.stopped) {\n this.#PostMessageToWorker(workerEx, eIWMessageCommands.StopAllAsyncRunners, null);\n \n //@@ Now wait until we get an ack back from the worker\n // This is because we may be trying to stop BEFORE the worker has had a chance to startup ...\n \n console.log(`Terminating worker: [${workerEx.id}]`);\n const promArray: Promise<boolean>[] = [ ];\n \n // Terminate only those that are currently running...\n const ids: string[] = Object.keys(workerEx.runnersEx);\n\n ids.forEach((id) => {\n const runnerEx: IRunnerEx = workerEx.runnersEx[id];\n promArray.push(this.#StopRunner(workerEx, runnerEx));\n });\n await Promise.all(promArray);\n\n this.#TerminateWorker(workerEx);\n }\n return true;\n } catch (error) {\n console.log(`Error in STSTestWorker:StopWorker: [${error}]`);\n return false;\n }\n }\n\n GetNextAvailableWorker = (): IWorkerEx | null => {\n // Calculate the worker with the least runners\n let leastRunnerWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (leastRunnerWorker) {\n if (Object.keys(stsWorker.runnersEx).length < Object.keys(leastRunnerWorker.runnersEx).length) {\n leastRunnerWorker = stsWorker;\n }\n } else {\n leastRunnerWorker = stsWorker;\n }\n }\n return leastRunnerWorker;\n }\n\n GetBusyWorker = (): IWorkerEx | null => {\n // Calculate the worker with the least runners\n let busyWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (busyWorker) {\n if (Object.keys(stsWorker.runnersEx).length > Object.keys(busyWorker.runnersEx).length) {\n busyWorker = stsWorker;\n }\n } else {\n busyWorker = stsWorker;\n }\n }\n return busyWorker;\n }\n\n get Options(): IWorkerManagerOptions {\n return this.#options;\n }\n\n set Options(options: IWorkerManagerOptions) {\n this.#options = options;\n }\n\n /*\n StopRunner = async () => {\n // Calculate the worker with the most runners\n let largestRunnerWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (largestRunnerWorker) {\n if (Object.keys(stsWorker.runnersEx).length > Object.keys(largestRunnerWorker.runnersEx).length) {\n largestRunnerWorker = stsWorker;\n }\n } else {\n largestRunnerWorker = stsWorker;\n }\n }\n if (largestRunnerWorker) largestRunnerWorker.StopRunner();\n }\n */\n\n /*\n StopWorker = async () => {\n // Calculate the worker with the least runners\n let largestRunnerWorker: IWorkerEx | null = null;\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n if (largestRunnerWorker) {\n if (Object.keys(stsWorker.runnersEx).length < Object.keys(largestRunnerWorker.runnersEx).length) {\n largestRunnerWorker = stsWorker;\n }\n } else {\n largestRunnerWorker = stsWorker;\n }\n }\n if (largestRunnerWorker) largestRunnerWorker.Stop();\n }\n */\n\n StopAllWorkers = async () => {\n const promArray = [ ];\n for (const [, stsWorker] of Object.entries(this.WorkersEx)) {\n promArray.push(stsWorker.Stop());\n }\n\n await Promise.all(promArray);\n }\n}\n\nexport const GetSTSInstrumentControllerPluginKeyWM = (): symbol => STSInstrumentControllerPluginKey\n\nexport const CompareSTSInstrumentControllerPluginKeyWM = (val: symbol): boolean => val === STSInstrumentControllerPluginKey\n\nexport const CompareSTSInstrumentControllerPluginKeyWMEx = (): boolean => STSInstrumentControllerPluginKey === GetSTSInstrumentControllerPluginKey()\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSWorkerManager = (): STSWorkerManager => inject(STSWorkerManagerPluginKey) as STSWorkerManager\n\nexport const STSWorkerManagerPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any, options?: IWorkerManagerOptions) => {\n const wm = new STSWorkerManager(app, options);\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSWorkerManagerPluginKey] = wm;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSWorkerManagerPluginKey, wm);\n }\n}\n","import debugModule from 'debug'\nconst debug = debugModule(`proc:${process.pid}`);\n\nimport type { IIWMessagePayload } from './../commonTypes'\n\ndeclare interface RequestResponseMessage {\n\tpublishMessagePayload: IIWMessagePayload\n\tpublishMessagePayloadResponse?: IIWMessagePayload\n\tcb: () => void,\n\ttimeout: NodeJS.Timeout\n}\n\ndeclare type RequestResponseMessages = Record<string, RequestResponseMessage>;\n\n//@@ this should become a low level stsutils type helper\nexport class RequestResponseHelper\n{\n #requestResponseMessages: RequestResponseMessages = { }\n #requestResponseMessageTimeout = 10000; //@@ config\n #port: MessagePort\n\n constructor(port: MessagePort) {\n this.#port = port\n this.#SetupListener();\n }\n\n PostMessage = (message: IIWMessagePayload): Promise<IIWMessagePayload> => {\n return new Promise((resolve, reject) => {\n const { messageId } = message.payload;\n if (messageId) {\n if (this.#requestResponseMessages[messageId]) {\n reject(`RequestResponseHelper: Message with id: [${messageId}] already exists within the Request/Response record structure`);\n } else {\n this.#requestResponseMessages[messageId] = {\n publishMessagePayload: { ...message },\n cb: () => {\n const detail = this.#requestResponseMessages[messageId].publishMessagePayloadResponse;\n clearTimeout(this.#requestResponseMessages[messageId].timeout);\n setTimeout(() => {\n delete this.#requestResponseMessages[messageId];\n }, 0);\n if (detail) {\n debug(`RequestResponseHelper: Resolving response message with id: [${messageId}] from target worker port. Details: [${JSON.stringify(detail)}]`);\n resolve(detail);\n } else {\n const msg = `Could not get detail from this.#requestResponseMessages[messageId].publishMessagePayloadResponse`;\n debug(msg);\n reject(msg);\n }\n },\n timeout: setTimeout(() => {\n setTimeout(() => {\n delete this.#requestResponseMessages[messageId];\n }, 0);\n debug(`RequestResponseHelper: Timeout has occurred after: [${this.#requestResponseMessageTimeout}]ms with message id: [${messageId}]. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);\n reject('RequestResponseHelper: Did not receive response form parent process.');\n }, this.#requestResponseMessageTimeout) // max message timeout allowed\n }\n debug(`RequestResponseHelper: Sending message with id: [${messageId}] to target worker port. Details: [${JSON.stringify(this.#requestResponseMessages[messageId].publishMessagePayload)}]`);\n this.#port.postMessage(message);\n }\n } else {\n const msg = `RequestResponseHelper: Response did not include a message id`;\n debug(msg);\n reject(msg);\n }\n });\n }\n\n #SetupListener = () => {\n this.#port.onmessage = async (msg: MessageEvent) => {\n const publishMessagePayload: IIWMessagePayload = msg.data as IIWMessagePayload;\n if (publishMessagePayload.payload.messageId) {\n const messageId = publishMessagePayload.payload.messageId;\n if (messageId && messageId !== '') {\n if (this.#requestResponseMessages[messageId]) {\n const requestResponseMessage: RequestResponseMessage = this.#requestResponseMessages[messageId];\n requestResponseMessage.publishMessagePayloadResponse = { ...publishMessagePayload };\n requestResponseMessage.cb();\n } else {\n throw new Error(`RequestResponseHelper: Could not find Request/Response message with id: [${messageId}]`);\n }\n }\n }\n }\n }\n}\n","import debugModule from 'debug'\nconst debug = debugModule(`proc:${process.pid}:workerInstance`);\n\nimport { IIWMessagePayload, eIWMessageCommands, IIWMessagePayloadContentBase } from './../commonTypes'\n\nimport type { ISTSAgentWorkerMessagePort, IRunner, ITestRunnerTelemetryPayload } from './stsTestWorkerDefinitions'\nimport { IRunnerState } from './stsTestWorkerDefinitions'\n\nimport { RequestResponseHelper } from './requestResponseHelper'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IWorkerInstanceOptions {\n\n}\n\nexport abstract class WorkerInstance {\n #collectorCollectorPort: MessagePort | null = null;\n #requestResponseHelper: RequestResponseHelper | null = null;\n #runners: Record<string, IRunner> = { };\n #options: IWorkerInstanceOptions | null = null;\n\n constructor() {\n debug(`WorkerInstance::constructor`)\n }\n\n GetRandomInt = (max: number) => {\n debug(`WorkerInstance::GetRandomInt`)\n return Math.floor(Math.random() * Math.floor(max));\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StartWork = async (runner: IRunner): Promise<void> => {\n debug(`WorkerInstance::StartWork`)\n return;\n }\n\n PostTelemetry = (runner: IRunner) => {\n //debug(`WorkerInstance::PostTelemetry`)\n if (this.#collectorCollectorPort) {\n const message: IIWMessagePayload = {\n command: eIWMessageCommands.InstrumentTelemetry,\n payload: {\n runner\n } as ITestRunnerTelemetryPayload\n }\n this.#collectorCollectorPort.postMessage(message);\n }\n }\n\n get RequestResponseHelper(): RequestResponseHelper | null {\n return this.#requestResponseHelper;\n }\n\n get CollectorCollectorPort(): MessagePort | null {\n return this.#collectorCollectorPort;\n }\n\n get Options(): IWorkerInstanceOptions | null {\n return this.#options;\n }\n\n #SetMessagePort = (workerMessagePort: ISTSAgentWorkerMessagePort) => {\n debug(`WorkerInstance::SetMessagePort`)\n this.#collectorCollectorPort = workerMessagePort.port as MessagePort;\n this.#collectorCollectorPort.onmessage = function(data: MessageEvent) {\n console.log(`collectorCollectorPort onmessage: ${data.data}`);\n }\n\n this.#requestResponseHelper = new RequestResponseHelper(this.#collectorCollectorPort);\n\n const response: IIWMessagePayload = {\n command: eIWMessageCommands.MessagePortResponse,\n payload: { } as IIWMessagePayloadContentBase\n }\n\n this.#collectorCollectorPort.postMessage(response);\n }\n\n StartRunner = async (runner: IRunner) => {\n debug(`WorkerInstance::StartRunner`)\n console.log(`StartTests: [${JSON.stringify(runner)}]`);\n runner.state = IRunnerState.running;\n this.StartWork(runner);\n }\n\n #AddAsyncRunner = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {\n debug(`WorkerInstance::AddAsyncRunner`)\n const { runner } = testRunnerTelemetryPayload;\n this.#runners[runner.id] = runner;\n this.StartRunner(runner);\n }\n\n #StopRunners = (testRunnerTelemetryPayload: ITestRunnerTelemetryPayload) => {\n debug(`WorkerInstance::StopRunners`)\n if (testRunnerTelemetryPayload === null) {\n for (const [, testRunner] of Object.entries(this.#runners)) {\n testRunner.state = IRunnerState.stopped;\n }\n } else {\n const runner: IRunner = this.#runners[testRunnerTelemetryPayload.runner.id];\n if (runner) {\n runner.state = IRunnerState.stopped;\n }\n }\n }\n\n ProcessMessage = async(data: MessageEvent) => {\n debug(`WorkerInstance::ProcessMessage`)\n try {\n const payloadMessage: IIWMessagePayload = data.data as IIWMessagePayload;\n switch (payloadMessage.command) {\n case eIWMessageCommands.MessagePort :\n this.#SetMessagePort(payloadMessage.payload as ISTSAgentWorkerMessagePort);\n this.#options = (payloadMessage.payload as ISTSAgentWorkerMessagePort).options;\n debug(`WorkerInstance::ProcessMessage::#options: [${JSON.stringify(this.#options)}]`)\n break;\n case eIWMessageCommands.AddAsyncRunner :\n this.#AddAsyncRunner(payloadMessage.payload as ITestRunnerTelemetryPayload);\n break;\n case eIWMessageCommands.StopAllAsyncRunners :\n this.#StopRunners(payloadMessage.payload as ITestRunnerTelemetryPayload);\n break;\n default :\n debug(`Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);\n }\n } catch (error) {\n console.log(error);\n }\n }\n}"],"names":["self","tinyEmitterModule","tinyEmitter","te.TinyEmitter","source","converter","debug","Debug","ClientStorageType","Cookies","eIWMessageCommands","global","Buffer","Symbol","Uint8Array","DataView","Map","Promise","WeakMap","isArray","key","proto","__defProp","__defNormalProp","__publicField","ansiStyles$1","colorName","hasRequiredColorName","requireColorName","conversions","hasRequiredConversions","requireConversions","route","hasRequiredRoute","requireRoute","colorConvert","hasRequiredColorConvert","requireColorConvert","ansiStylesExports","browser","stringReplaceAll$1","stringEncaseCRLFWithFirstIndex$1","util","templates","hasRequiredTemplates","requireTemplates","escape","ansiStyles","stdoutColor","stderrColor","stringReplaceAll","stringEncaseCRLFWithFirstIndex","levelMapping","styles","applyOptions","chalkFactory","chalkTag","Chalk","ChalkClass","createBuilder","createStyler","usedModels","applyStyle","template","chalk","_ObservabilityModelUtils","IRunnerState","IWorkerState","require$$0","require$$1","require$$2","require$$3","_options"],"mappings":"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","x_google_ignoreList":[1,3,7,8,9,12,13,14,15,16,17,18,19,20]}