@nsshunt/stsoauth2plugin 1.0.69 → 1.0.70

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":"stsoauth2plugin.mjs","sources":["../src/stsPluginKeys.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","../node_modules/detect-node/index.esm.js","../__vite-browser-external","../node_modules/crypto-js/core.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/enc-base64.js","../src/Utils/CryptoUtils.ts","../src/Utils/QueryParams.ts","../src/stsoauth2types.ts","../node_modules/jwt-decode/build/esm/index.js","../src/stores/stsoauth2store.ts","../node_modules/lodash.clonedeep/index.js","../node_modules/tiny-emitter/index.js","../node_modules/@nsshunt/stsobservability/dist/stsobservability.mjs","../src/stsoauth2manager.ts","../node_modules/http-status-codes/build/es/status-codes.js","../src/stsoauth2worker.ts","../src/stores/testStore.ts","../src/index.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSOAuth2ManagerPluginKey = Symbol()\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","// 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","export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport sha256 from 'crypto-js/sha256';\nimport Base64 from 'crypto-js/enc-base64';\n\nexport class CryptoUtils {\n #crypto;\n\n constructor() {\n try {\n this.#crypto = crypto;\n } catch {\n this.#crypto = require('crypto')\n }\n }\n\n DigestMessage = async function (message: any) {\n const hashDigest = sha256(message);\n return Base64.stringify(hashDigest);\n }\n\n CreateRandomString = (size = 43) => {\n //const randomValues: any = Array.from(window.crypto.getRandomValues(new Uint8Array(size)))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const randomValues: any = Array.from(this.#crypto.getRandomValues(new Uint8Array(size)))\n //let b64 = window.btoa(String.fromCharCode(...randomValues));\n const b64 = btoa(String.fromCharCode(...randomValues));\n return b64;\n //return randomValues.toString('base64');\n }\n}\n\n/*\nexport class CryptoUtils {\n\tDigestMessage = async function (message) {\n\t\tconst encoder = new TextEncoder();\n\t\tconst data = encoder.encode(message);\n\t\tconst hashBuffer = await crypto.subtle.digest('SHA-256', data);\n\t\tconst hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array\n\t\t//let b64 = window.btoa(String.fromCharCode(...hashArray));\n\t\tconst b64 = btoa(String.fromCharCode(...hashArray));// Use below if a HEX string is required\n\t\t// const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string\n\t\treturn b64;\n\t}\n\n\tCreateRandomString = (size = 43) => {\n\t\t//const randomValues: any = Array.from(window.crypto.getRandomValues(new Uint8Array(size)))\n\t\tconst randomValues: any = Array.from(crypto.getRandomValues(new Uint8Array(size)))\n\t\t//let b64 = window.btoa(String.fromCharCode(...randomValues));\n\t\tconst b64 = btoa(String.fromCharCode(...randomValues));\n\t\treturn b64;\n\t\t//return randomValues.toString('base64');\n\t}\n}\n*/\n\nexport default CryptoUtils\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n// https://github.com/auth0/auth0-spa-js/blob/1de6427f81a8c5b005e9b6d10b9efb1e73542528/static/index.html\n\nimport { JSONObject } from \"@nsshunt/stsutils\";\n\n// https://stackoverflow.com/questions/12446317/change-url-without-redirecting-using-javascript\nclass QueryParams {\n DecodeQueryParams = (params: any): JSONObject => {\n const retObj: JSONObject = { };\n Object.keys(params)\n .filter(k => typeof params[k] !== 'undefined')\n .map(k => { \n retObj[decodeURIComponent(k)] = decodeURIComponent(params[k]);\n });\n return retObj;\n }\n\n CreateQueryParams = (params: JSONObject): string => {\n return Object.keys(params)\n .filter(k => typeof params[k] !== 'undefined')\n .map(k => {\n if (Array.isArray(params[k])) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(params[k].join(' '))\n } else {\n return encodeURIComponent(k) + '=' + encodeURIComponent(params[k])\n }\n })\n .join('&');\n }\n\n _GetQueryParams = (param: string): JSONObject => {\n let retVal: JSONObject = { };\n const uri = param.split(\"?\");\n if (uri.length == 2) {\n const vars = uri[1].split(\"&\");\n const getVars: JSONObject = { };\n let tmp: string[];\n vars.forEach(function (v) {\n tmp = v.split(\"=\");\n if (tmp.length == 2) getVars[tmp[0]] = tmp[1];\n });\n retVal = this.DecodeQueryParams(getVars);\n }\n return retVal;\n }\n \n GetQueryParams = () => {\n return this._GetQueryParams(window.location.href);\n }\n}\n\nexport default QueryParams;\n","import { ISTSLogger } from '@nsshunt/stsutils'\nimport * as wt from 'node:worker_threads'\n\nexport enum AuthorizeOptionsResponseType {\n\tCODE = 'code',\n\tID_TOKEN = 'id_token',\n\tTOKEN = 'token'\n}\n\nexport enum AuthorizeOptionsResponseMode {\n\tQUERY = 'query',\n\tFRAGMENT = 'fragment',\n\tFORM_POST = 'form_post'\n}\n\n// https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow\nexport interface IAuthorizeOptions {\n\tclient_id: string,\n\tnonce: string,\n\tresponse_type: AuthorizeOptionsResponseType[], // Must include: 'code' and may include: 'id_token' and/or 'token'\n\tredirect_uri: string,\n\tresponse_mode: AuthorizeOptionsResponseMode\n\tscope: string, // A space-separated list of scopes that you want the user to consent to. For the /authorize leg of the request, this parameter can cover multiple resources. This value allows your app to get consent for multiple web APIs you want to call.\n\tstate: string, // Client application state (if required)\n\tcode_challenge: string,\n\tcode_challenge_method: string, //@@ enum S256\n\tcode_verifier?: string\n}\n\nexport interface IAuthorizeResponse {\n\tstate: string, // state passed to authorize end-point\n\tcode: string // authorization code\n}\n\nexport interface IAuthorizeErrorResponse {\n\terror: string, \n\terror_description: string \n}\n\nexport enum OAuthGrantTypes {\n\tCLIENT_CREDENTIALS = 'client_credentials',\n\tAUTHORIZATION_CODE = 'authorization_code',\n\tREFRESH_TOKEN = 'refresh_token'\n}\n\nexport interface IAuthorizationCodeFlowParameters {\n\tclient_id: string,\n\tscope: string,\n\tcode: string,\n\tredirect_uri: string, // URI\n\tgrant_type: OAuthGrantTypes, // 'authorization_code', //@@ need enum\n\tcode_verifier: string\n}\n\nexport interface IRefreshFlowParameters {\n\tclient_id: string,\n\tscope: string,\n\trefresh_token: string, // JWT\n\tgrant_type: OAuthGrantTypes // 'refresh_token' //@@ enum\n}\n\nexport interface ITokenResponse {\n access_token: string, // JWT\n token_type: string, //@@ \"Bearer\" only\n expires_in: number,\n scope: string,\n refresh_token: string, // JWT\n id_token: string, // JWT\n}\n\nexport interface ISessionData {\n\ttokenResponse: ITokenResponse,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tbrokerCookie?: any\n}\n\nexport interface ITokenErrorResponse {\n\terror: string,\n\terror_description: string,\n\terror_codes: number[],\n\ttimestamp: number\n\tdetails: unknown //@@ STS attribute ?\n\t//\"trace_id\": \"255d1aef-8c98-452f-ac51-23d051240864\", //@@ MS attribute\n\t//\"correlation_id\": \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\" //@@ MS attribute\n}\n\nexport type AuthenticateEvent = (id_token: string) => void;\n\n// ---------------\n\nexport enum IOauth2ListenerCommand {\n\tRESTORE_SESSION = 'RestoreSession',\n\tAUTHORIZE = 'Authorize',\n\tHANDLE_REDIRECT = 'HandleRedirect',\n\tLOGOUT = 'Logout',\n\tAUTHENTICATE_EVENT = 'AuthenticateEvent',\n\tERROR = 'Error',\n\tLOG = '__LOG',\n\tUPDATE_INSTRUMENT = '__UPDATE_INSTRUMENT',\n\tID_TOKEN = '__ID_TOKEN',\n\tACCESS_TOKEN = '__ACCESS_TOKEN',\n\tCOOKIES = '__COOKIES',\n\tEXECUTE_REFRESH_TOKEN = '__EXECUTE_REFRESH_TOKEN'\n}\n\nexport interface IOauth2ListenerMessage {\n\tmessageId?: number\n\tcommand: IOauth2ListenerCommand\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpayload?: any\n}\n\nexport interface IOauth2ListenerMessageResponse {\n\tmessageId: number\n\tcommand: IOauth2ListenerCommand\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpayload: any\n}\n\nexport type StsOauth2WorkerFactory = () => Worker | wt.Worker\n\nexport interface ISTSOAuth2WorkerOptions {\n\tclient_id: string\n\tscope: string\n\tredirect_uri: string\n\taudience: string\n\t\n\tbrokerendpoint: string\n\tbrokerport: string\n\tbrokerapiroot: string\n\t\n\tauthorizeendpoint: string\n\tauthorizeport: string\n\tauthorizeapiroot: string\n\tauthorizeapi: string\n\t\n\ttimeout: number\n\n\tagentOptions?: {\n\t\tkeepAlive: boolean\n\t\tmaxSockets: number\n\t\tmaxTotalSockets: number\n\t\tmaxFreeSockets: number\n\t\trejectUnauthorized: boolean\n\t}\n}\n\nexport interface ISTSOAuth2ManagerOptions {\n\tauthenticateEvent?: AuthenticateEvent\n\tworkerFactory?: StsOauth2WorkerFactory\n\tworkerOptions: ISTSOAuth2WorkerOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpinia: any\n\turiBase: string // This MUST end in a '/' character, e.g. / or /stsgraph/ or /{tenant}/graph/v1.0/\n\tlogger: ISTSLogger\n}\n\nexport interface ISTSOAuth2WorkerMessage {\n\tworkerPort: MessagePort | wt.MessagePort,\n\toptions: ISTSOAuth2WorkerOptions\n}\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","//import { createPinia, defineStore } from 'pinia'\n//import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'\n\nimport { defineStore } from 'pinia'\n\nimport { jwtDecode } from \"jwt-decode\";\nimport { JSONObject } from '@nsshunt/stsutils';\n\nexport interface ISTSOauth2Store {\n id_token: string | null\n error: { \n message: JSONObject\n } | null\n}\n\n// Replace with pinia\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\nexport const STSOauth2Store = defineStore('__sts__STSOauth2Store', {\n state: (): ISTSOauth2Store => {\n return {\n id_token: null,\n error: null\n }\n },\n actions: {\n UpdateIdToken(id_token: string) {\n this.id_token = id_token;\n },\n UpdateError(error: JSONObject) {\n if (this.error) {\n this.error.message = error;\n } else {\n this.error = {\n message: error\n }\n }\n }\n },\n getters: {\n LoggedIn: (state: ISTSOauth2Store): boolean => {\n if (typeof state.id_token === 'undefined') {\n return false;\n }\n if (state.id_token === null) {\n return false;\n }\n return true;\n },\n UserDetails: (state: ISTSOauth2Store): JSONObject | null => {\n //if (state.sessionData && state.sessionData.id_token) {\n if (state.id_token) {\n const id_token = state.id_token;\n const decodedIdToken = jwtDecode<JSONObject>(id_token);\n return decodedIdToken;\n } else {\n return null;\n }\n }\n },\n /*\n\tpersist: {\n\t\tstorage: globalThis.sessionStorage\n\t}\n\t*/\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","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","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","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n\nimport chalk from 'chalk';\n\nimport * as wt from 'node:worker_threads'\n\nimport { JSONObject, OAuth2ParameterType, Sleep } from '@nsshunt/stsutils';\n\nimport isNode from 'detect-node'\n\nimport CryptoUtils from './Utils/CryptoUtils'\nimport QueryParams from './Utils/QueryParams';\n\nimport { IAuthorizeOptions, IAuthorizeResponse, IAuthorizeErrorResponse, AuthenticateEvent,\n ISTSOAuth2ManagerOptions, IOauth2ListenerMessage, IOauth2ListenerMessageResponse, \n IOauth2ListenerCommand, ISTSOAuth2WorkerMessage } from './stsoauth2types'\n\n//import { IStsStorage, ClientStorageType, ClientStorageFactory } from './stsStorage'\nimport { IStsStorage, ClientStorageType, ClientStorageFactory } from '@nsshunt/stsvueutils'\n\nimport { Gauge, InstrumentBaseTelemetry } from '@nsshunt/stsobservability'\n\nimport { STSOAuth2ManagerPluginKey } from './stsPluginKeys'\n\n//import { createPinia, defineStore } from 'pinia'\n//import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'\n\nimport { STSOauth2Store } from './stores/stsoauth2store'\n\nimport { STSInstrumentControllerPluginKey, AgentInstrumentController, PublishInstrumentController } from '@nsshunt/stsobservability'\n\n// STS Client SDK for SPAs\nexport class STSOAuth2Manager {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #router: any = null;\n #cUtils = new CryptoUtils();\n #qParams = new QueryParams();\n #STORAGE_AUTHORIZE_OPTIONS_KEY = 'authorize_options.stsmda.com.au';\n #STORAGE_SESSION_KEY = 'session.stsmda.com.au';\n #aic: PublishInstrumentController | null = null;\n #options: ISTSOAuth2ManagerOptions;\n #messages: Record<number, IOauth2ListenerMessage> = { };\n #oauth2ManagerPort: MessagePort | wt.MessagePort;\n #messageId = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #messageHandlers: Record<number, any> = { }; // keyed by messageId\n #messageTimeout = 10000;\n #worker: Worker | wt.Worker;\n #transactionStore: IStsStorage<IAuthorizeOptions>; // Transient transaction data used to establish a session via OAuth2 authorize handshake\n #operationSemaphore = false;\n #maxSemaphoreRetries = 100; // 100 retries, i.e. allow 100 x 50 = 5000ms to unblock\n #semaphoreRetrySleep = 50; // ms\n\n constructor(app: any, options: ISTSOAuth2ManagerOptions) {\n this.#options = options;\n\n if (!isNode) {\n if (app.config.globalProperties.$sts[STSInstrumentControllerPluginKey]) {\n const STSInstrumentController: AgentInstrumentController = app.config.globalProperties.$sts[STSInstrumentControllerPluginKey];\n this.#aic = STSInstrumentController;\n }\n this.#router = app.config.globalProperties.$router;\n }\n\n // Use session storage for the transient nature of the OAuth2 authorize handshake. Once completed, the storage will be removed.\n if (isNode) {\n this.#transactionStore = new ClientStorageFactory<IAuthorizeOptions>({clientStorageType: ClientStorageType.MEMORY_STORAGE, usePrefix: false}).GetStorage();\n } else {\n this.#transactionStore = new ClientStorageFactory<IAuthorizeOptions>({clientStorageType: ClientStorageType.SESSION_STORAGE, usePrefix: false}).GetStorage();\n }\n\n if (this.#options.workerFactory) {\n this.#worker = this.#options.workerFactory();\n } else {\n throw new Error(`STSOAuth2Manager:constructor: Cannot init STSOAuth2Manager - this.#options.workerFactory not specified`);\n }\n\t\t\n if (!isNode) {\n (this.#worker as Worker).onmessage = (data: MessageEvent) => {\n this.#LogInfoMessage(chalk.green(`this.#worker.onmessage = [${data}]`));\n };\n\n (this.#worker as Worker).onerror = (error) => {\n this.#LogInfoMessage(chalk.green(`this.#worker.onerror = [${JSON.stringify(error)}]`));\n };\n }\n\n let workerMessage: ISTSOAuth2WorkerMessage\n if (isNode) {\n const { \n port1: oauth2ManagerPort, // this process port\n port2: oauth2WorkerPort // worker port\n } = new wt.MessageChannel();\n this.#oauth2ManagerPort = oauth2ManagerPort;\n workerMessage = {\n workerPort: oauth2WorkerPort,\n options: this.#options.workerOptions\n };\n (this.#worker as wt.Worker).postMessage(workerMessage, [ oauth2WorkerPort ]);\n\n this.#oauth2ManagerPort.on('message', (payload) => {\n this.#ProcessMessageResponse(payload);\n }).unref();\n } else {\n const { \n port1: oauth2ManagerPort, // this process port\n port2: oauth2WorkerPort // worker port\n } = new MessageChannel();\n this.#oauth2ManagerPort = oauth2ManagerPort;\n workerMessage = {\n workerPort: oauth2WorkerPort,\n options: this.#options.workerOptions\n };\n (this.#worker as Worker).postMessage(workerMessage, [ oauth2WorkerPort ]);\n\n this.#oauth2ManagerPort.onmessage = (data: MessageEvent) => {\n this.#ProcessMessageResponse(data.data);\n }\n\t\n this.#SetupRoute(app, this.#router);\n }\n }\n \n #LogDebugMessage(message: any) {\n this.#options.logger.debug(message);\n }\n\n #LogInfoMessage(message: any) {\n this.#options.logger.info(message);\n }\n\n #LogErrorMessage(message: any) {\n this.#options.logger.error(message);\n }\n\n #ProcessMessageResponse = (data: IOauth2ListenerMessageResponse) => {\n const messageResponse: IOauth2ListenerMessageResponse = data;\n this.#LogDebugMessage(chalk.yellow(`STSOAuth2Manager:#ProcessMessageResponse: message data = [${JSON.stringify(messageResponse)}]`));\n if (messageResponse.messageId === -1) {\n // unsolicted message\n switch (messageResponse.command) {\n case IOauth2ListenerCommand.AUTHENTICATE_EVENT :\n this.#HandleAuthenticateEvent(messageResponse.payload as string);\n break;\n case IOauth2ListenerCommand.ERROR :\n this.#HandleErrorEvent(messageResponse.payload as JSONObject);\n break;\n case IOauth2ListenerCommand.LOG :\n this.#HandleLogEvent(messageResponse.payload as string);\n break;\n case IOauth2ListenerCommand.UPDATE_INSTRUMENT :\n this.#HandleUpdateInstrumentEvent(messageResponse.payload.instrumentName, messageResponse.payload.telemetry);\n break;\n default :\n throw new Error(`ProcessMessageResponse command [${messageResponse.command}] not valid.`);\n }\n } else {\n const callBack = this.#messageHandlers[messageResponse.messageId];\n if (callBack) {\n callBack(messageResponse);\n } else {\n throw new Error(`Message: [${messageResponse.messageId}] does not exists in callBacks.`);\n }\n }\n }\n\n #PostMessage = (message: IOauth2ListenerMessage): Promise<IOauth2ListenerMessageResponse> => {\n message.messageId = this.#messageId++;\n\n return new Promise<IOauth2ListenerMessageResponse>((resolve, reject) => {\n // Setup message timeout\n const timeout: NodeJS.Timeout = setTimeout(() => {\n delete this.#messageHandlers[message.messageId as number];\n reject(`Message: [${message.messageId}] timeout error after: [${this.#messageTimeout}] ms.`);\n }, this.#messageTimeout);\n\n // Setup message callback based on messageId\n this.#messageHandlers[message.messageId as number] = (response: IOauth2ListenerMessageResponse) => {\n clearTimeout(timeout);\n delete this.#messageHandlers[message.messageId as number];\n this.#LogDebugMessage(chalk.yellow(`STSOAuth2Manager:#PostMessage: resolve callback response= [${JSON.stringify(response)}]`));\n resolve(response);\n }\n\n // Send the message\n this.#LogDebugMessage(chalk.yellow(`STSOAuth2Manager:#PostMessage: posting message = [${JSON.stringify(message)}]`));\n this.#oauth2ManagerPort.postMessage(message);\t\n });\n }\n\n #HandleLogEvent = (message: string): void => {\n if (this.#aic) {\n this.#aic.LogEx(message);\n }\n this.#LogDebugMessage(message);\n }\n\n // UpdateInstrument = (instrumentName: Gauge, telemetry: InstrumentBaseTelemetry): void => {\n #HandleUpdateInstrumentEvent = (instrumentName: Gauge, telemetry: InstrumentBaseTelemetry): void => {\n if (this.#aic) {\n this.#aic.UpdateInstrument(instrumentName, telemetry);\n }\n }\n\n #GetStore = () => {\n return STSOauth2Store(this.#options.pinia);\n }\n\n // Will come from message channel\n #HandleErrorEvent = (error: JSONObject): void => {\n if (isNode) {\n // Node Mode ...\n } else {\n // User Agent Mode\n this.#GetStore().UpdateError({ // Authorize applications store\n message: error\n });\n\n // plugin to do this ...\n setTimeout(() => {\n this.#router.replace(`${this.#options.uriBase}error`);\n }, 0);\n }\n }\n\n #HandleAuthenticateEvent: AuthenticateEvent = (id_token: string): void => {\n if (isNode) {\n // Node Mode ...\n } else {\n // User Agent Mode\n if (this.#options.authenticateEvent) {\n this.#options.authenticateEvent(id_token);\n }\n\n this.#GetStore().UpdateIdToken(id_token);\n }\n }\n\n #SetupRoute = (app: any, router: any) => {\n this.#LogDebugMessage(chalk.gray(`STSOAuth2Manager:#SetupRoute`));\n router.beforeEach(async (to: any, from: any, next: any) => {\n const oAuth2Manager: STSOAuth2Manager = app.config.globalProperties.$sts[STSOAuth2ManagerPluginKey];\n\n this.#LogDebugMessage(chalk.gray(`beforeEach: from: [${from.path}], to: [${to.path}]`));\n\n if (this.#GetStore().LoggedIn === false) {\n this.#LogInfoMessage(`Not logged in`);\n // Not logged in\n if (to.path.localeCompare(`${this.#options.uriBase}authorize`) === 0) {\n this.#LogInfoMessage(`to = ${this.#options.uriBase}authorize`);\n next();\n return;\n } else if (to.path.localeCompare(`${this.#options.uriBase}consent`) === 0) {\n // Need to check if we are in the correct state, if not - drop back to the start of the process\n if (this.#GetStore().id_token) {\n //if (typeof store.getters.Session.sessionId !== 'undefined') {\n next();\n return;\n }\n }\n if (to.path.localeCompare(`${this.#options.uriBase}logout`) === 0) {\n next();\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}error`) === 0) {\n next();\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}config`) === 0) {\n next();\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}redirected`) === 0) {\n next();\n return;\n }\n\t\t\n const str = to.query;\n // Check if this route is from a redirect from the authorization server\n if (str[OAuth2ParameterType.CODE] || str[OAuth2ParameterType.ERROR]) {\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:#SetupRoute:Processing redirect: [${JSON.stringify(str)}]`));\n const retVal: boolean = await oAuth2Manager.HandleRedirect(str);\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:#SetupRoute:Redirect result: [${retVal}]`));\n if (retVal) {\n // Success\n next({ \n path: `${this.#options.uriBase}`,\n replace: true\n });\n return;\n } else {\n // Error\n next({ \n path: `${this.#options.uriBase}error`,\n replace: true\n });\n\n //@@ need the error data here - or use the vuex store ?\n //@@ this.#router.replace(`error'); //@@ was push\n\n //@@ should replaceState be used as in above?\n return;\n }\n }\n\t\t\n this.#LogDebugMessage(`STSOAuth2Manager:#SetupRoute:Restoring session`);\n const sessionRestored = await oAuth2Manager.RestoreSession();\n this.#LogDebugMessage(`STSOAuth2Manager:#SetupRoute:Session restored: [${sessionRestored}]`);\n\n if (sessionRestored !== true) {\n this.#LogDebugMessage(`STSOAuth2Manager:#SetupRoute:Session not restored - need to authorize`);\n oAuth2Manager.Authorize();\n next();\n return;\n } else {\n next(`${this.#options.uriBase}`);\n return;\n }\n } else {\n // Prevent pages if already logged in\n if (to.path.localeCompare(`${this.#options.uriBase}consent`) === 0) {\n next(`${this.#options.uriBase}`);\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}authorize`) === 0) {\n next(`${this.#options.uriBase}`);\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}logout`) === 0) {\n next(`${this.#options.uriBase}`);\n return;\n }\n next();\n }\n })\n }\n\n //@@ this needs to be re-implemented so that access_token never leaves the auth worker\n GetAccessToken = async(): Promise<string> => {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.ACCESS_TOKEN });\n return response.payload;\n }\n\n // Update operation protected using operationSemaphore. This may occur when using workers and/or multiple async fetch operations.\n ExecuteRefreshToken = async(retryCount = 0): Promise<boolean> => {\n if (this.#operationSemaphore === true) {\n if (retryCount > this.#maxSemaphoreRetries) {\n throw new Error(`STSOAuth2Manager:ExecuteRefreshToken:maxSemaphoreRetries: [${this.#maxSemaphoreRetries}] exceeded.`);\n }\n await Sleep(this.#semaphoreRetrySleep);\n this.#LogDebugMessage(chalk.cyan(`STSOAuth2Manager:ExecuteRefreshToken:locked by operationSemaphore, retry count: [${retryCount}]`));\n return await this.ExecuteRefreshToken(retryCount+1);\n } else {\n this.#operationSemaphore = true;\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.EXECUTE_REFRESH_TOKEN });\n this.#operationSemaphore = false;\n return response.payload;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GetCookies = async(): Promise<any> => {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.COOKIES });\n return response.payload;\n }\n\n RestoreSession = async(): Promise<boolean> => {\n try {\n this.#LogDebugMessage(`STSOAuth2Manager:RestoreSession:postMessage: [${IOauth2ListenerCommand.RESTORE_SESSION}]`);\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.RESTORE_SESSION });\n this.#LogDebugMessage(`STSOAuth2Manager:RestoreSession:response: [${JSON.stringify(response.payload)}]`);\n return response.payload;\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`RestoreSession Error: ${error}`));\n return false;\n }\n }\n\n Authorize = async (): Promise<JSONObject> => {\n try {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.AUTHORIZE });\n this.#transactionStore.set(this.#STORAGE_AUTHORIZE_OPTIONS_KEY, response.payload.authorizeOptions);\n const url = response.payload.url;\n if (!isNode) {\n window.location.replace(url);\n } else {\n return response.payload.authorizeOptionsClientCopy;\n }\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`Authorize Error: ${error}`));\n }\n return { };\n }\n\n HandleRedirect = async (queryVars: JSONObject): Promise<boolean> => {\n try {\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:HandleRedirect`));\n let response: IOauth2ListenerMessageResponse | null = null;\n if (queryVars[OAuth2ParameterType.CODE]) {\n const authorizeOptions: IAuthorizeOptions = this.#transactionStore.get(this.#STORAGE_AUTHORIZE_OPTIONS_KEY) as IAuthorizeOptions;\n this.#transactionStore.remove(this.#STORAGE_AUTHORIZE_OPTIONS_KEY);\n\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:HandleRedirect: sending HANDLE_REDIRECT command`));\n response = await this.#PostMessage({ command: IOauth2ListenerCommand.HANDLE_REDIRECT, payload: {\n queryVars: queryVars as IAuthorizeResponse,\n authorizeOptions\n }});\n } else {\n response = await this.#PostMessage({ command: IOauth2ListenerCommand.HANDLE_REDIRECT, payload: queryVars as IAuthorizeErrorResponse });\n }\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:HandleRedirect: HANDLE_REDIRECT response: [${JSON.stringify(response)}]`));\n return response.payload;\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`HandleRedirect Error: ${error}`));\n return false;\n }\n }\n\n Logout = async (): Promise<boolean> => {\n try {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.LOGOUT });\n return response.payload;\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`Logout Error: ${error}`));\n return false;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n InvokeExternalAPI = async (): Promise<any> => {\n try {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.LOGOUT });\n return response.payload;\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`InvokeExternalAPI Error: ${error}`));\n return null;\n }\n }\n\n LoggedIn = (): boolean => {\n try {\n return this.#GetStore().LoggedIn;\n } catch (error) {\n return false;\n }\n }\n}\n","// Generated file. Do not edit\nexport var StatusCodes;\n(function (StatusCodes) {\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.1\n *\n * This interim response indicates that everything so far is OK and that the client should continue with the request or ignore it if it is already finished.\n */\n StatusCodes[StatusCodes[\"CONTINUE\"] = 100] = \"CONTINUE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.2\n *\n * This code is sent in response to an Upgrade request header by the client, and indicates the protocol the server is switching too.\n */\n StatusCodes[StatusCodes[\"SWITCHING_PROTOCOLS\"] = 101] = \"SWITCHING_PROTOCOLS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.1\n *\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n */\n StatusCodes[StatusCodes[\"PROCESSING\"] = 102] = \"PROCESSING\";\n /**\n * Official Documentation @ https://www.rfc-editor.org/rfc/rfc8297#page-3\n *\n * This code indicates to the client that the server is likely to send a final response with the header fields included in the informational response.\n */\n StatusCodes[StatusCodes[\"EARLY_HINTS\"] = 103] = \"EARLY_HINTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.1\n *\n * The request has succeeded. The meaning of a success varies depending on the HTTP method:\n * GET: The resource has been fetched and is transmitted in the message body.\n * HEAD: The entity headers are in the message body.\n * POST: The resource describing the result of the action is transmitted in the message body.\n * TRACE: The message body contains the request message as received by the server\n */\n StatusCodes[StatusCodes[\"OK\"] = 200] = \"OK\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.2\n *\n * The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.\n */\n StatusCodes[StatusCodes[\"CREATED\"] = 201] = \"CREATED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.3\n *\n * The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.\n */\n StatusCodes[StatusCodes[\"ACCEPTED\"] = 202] = \"ACCEPTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.4\n *\n * This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.\n */\n StatusCodes[StatusCodes[\"NON_AUTHORITATIVE_INFORMATION\"] = 203] = \"NON_AUTHORITATIVE_INFORMATION\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.5\n *\n * There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.\n */\n StatusCodes[StatusCodes[\"NO_CONTENT\"] = 204] = \"NO_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.6\n *\n * This response code is sent after accomplishing request to tell user agent reset document view which sent this request.\n */\n StatusCodes[StatusCodes[\"RESET_CONTENT\"] = 205] = \"RESET_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.1\n *\n * This response code is used because of range header sent by the client to separate download into multiple streams.\n */\n StatusCodes[StatusCodes[\"PARTIAL_CONTENT\"] = 206] = \"PARTIAL_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.2\n *\n * A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.\n */\n StatusCodes[StatusCodes[\"MULTI_STATUS\"] = 207] = \"MULTI_STATUS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.1\n *\n * The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.\n */\n StatusCodes[StatusCodes[\"MULTIPLE_CHOICES\"] = 300] = \"MULTIPLE_CHOICES\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.2\n *\n * This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.\n */\n StatusCodes[StatusCodes[\"MOVED_PERMANENTLY\"] = 301] = \"MOVED_PERMANENTLY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.3\n *\n * This response code means that URI of requested resource has been changed temporarily. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.\n */\n StatusCodes[StatusCodes[\"MOVED_TEMPORARILY\"] = 302] = \"MOVED_TEMPORARILY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.4\n *\n * Server sent this response to directing client to get requested resource to another URI with an GET request.\n */\n StatusCodes[StatusCodes[\"SEE_OTHER\"] = 303] = \"SEE_OTHER\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.1\n *\n * This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.\n */\n StatusCodes[StatusCodes[\"NOT_MODIFIED\"] = 304] = \"NOT_MODIFIED\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6\n *\n * Was defined in a previous version of the HTTP specification to indicate that a requested response must be accessed by a proxy. It has been deprecated due to security concerns regarding in-band configuration of a proxy.\n */\n StatusCodes[StatusCodes[\"USE_PROXY\"] = 305] = \"USE_PROXY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.7\n *\n * Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"TEMPORARY_REDIRECT\"] = 307] = \"TEMPORARY_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7538#section-3\n *\n * This means that the resource is now permanently located at another URI, specified by the Location: HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"PERMANENT_REDIRECT\"] = 308] = \"PERMANENT_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.1\n *\n * This response means that server could not understand the request due to invalid syntax.\n */\n StatusCodes[StatusCodes[\"BAD_REQUEST\"] = 400] = \"BAD_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.1\n *\n * Although the HTTP standard specifies \"unauthorized\", semantically this response means \"unauthenticated\". That is, the client must authenticate itself to get the requested response.\n */\n StatusCodes[StatusCodes[\"UNAUTHORIZED\"] = 401] = \"UNAUTHORIZED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.2\n *\n * This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.\n */\n StatusCodes[StatusCodes[\"PAYMENT_REQUIRED\"] = 402] = \"PAYMENT_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.3\n *\n * The client does not have access rights to the content, i.e. they are unauthorized, so server is rejecting to give proper response. Unlike 401, the client's identity is known to the server.\n */\n StatusCodes[StatusCodes[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.4\n *\n * The server can not find requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client. This response code is probably the most famous one due to its frequent occurence on the web.\n */\n StatusCodes[StatusCodes[\"NOT_FOUND\"] = 404] = \"NOT_FOUND\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.5\n *\n * The request method is known by the server but has been disabled and cannot be used. For example, an API may forbid DELETE-ing a resource. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.\n */\n StatusCodes[StatusCodes[\"METHOD_NOT_ALLOWED\"] = 405] = \"METHOD_NOT_ALLOWED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.6\n *\n * This response is sent when the web server, after performing server-driven content negotiation, doesn't find any content following the criteria given by the user agent.\n */\n StatusCodes[StatusCodes[\"NOT_ACCEPTABLE\"] = 406] = \"NOT_ACCEPTABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.2\n *\n * This is similar to 401 but authentication is needed to be done by a proxy.\n */\n StatusCodes[StatusCodes[\"PROXY_AUTHENTICATION_REQUIRED\"] = 407] = \"PROXY_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.7\n *\n * This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up surfing. Also note that some servers merely shut down the connection without sending this message.\n */\n StatusCodes[StatusCodes[\"REQUEST_TIMEOUT\"] = 408] = \"REQUEST_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.8\n *\n * This response is sent when a request conflicts with the current state of the server.\n */\n StatusCodes[StatusCodes[\"CONFLICT\"] = 409] = \"CONFLICT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.9\n *\n * This response would be sent when the requested content has been permenantly deleted from server, with no forwarding address. Clients are expected to remove their caches and links to the resource. The HTTP specification intends this status code to be used for \"limited-time, promotional services\". APIs should not feel compelled to indicate resources that have been deleted with this status code.\n */\n StatusCodes[StatusCodes[\"GONE\"] = 410] = \"GONE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.10\n *\n * The server rejected the request because the Content-Length header field is not defined and the server requires it.\n */\n StatusCodes[StatusCodes[\"LENGTH_REQUIRED\"] = 411] = \"LENGTH_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.2\n *\n * The client has indicated preconditions in its headers which the server does not meet.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_FAILED\"] = 412] = \"PRECONDITION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.11\n *\n * Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.\n */\n StatusCodes[StatusCodes[\"REQUEST_TOO_LONG\"] = 413] = \"REQUEST_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.12\n *\n * The URI requested by the client is longer than the server is willing to interpret.\n */\n StatusCodes[StatusCodes[\"REQUEST_URI_TOO_LONG\"] = 414] = \"REQUEST_URI_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.13\n *\n * The media format of the requested data is not supported by the server, so the server is rejecting the request.\n */\n StatusCodes[StatusCodes[\"UNSUPPORTED_MEDIA_TYPE\"] = 415] = \"UNSUPPORTED_MEDIA_TYPE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.4\n *\n * The range specified by the Range header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.\n */\n StatusCodes[StatusCodes[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = 416] = \"REQUESTED_RANGE_NOT_SATISFIABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.14\n *\n * This response code means the expectation indicated by the Expect request header field can't be met by the server.\n */\n StatusCodes[StatusCodes[\"EXPECTATION_FAILED\"] = 417] = \"EXPECTATION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2324#section-2.3.2\n *\n * Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n */\n StatusCodes[StatusCodes[\"IM_A_TEAPOT\"] = 418] = \"IM_A_TEAPOT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The 507 (Insufficient Storage) status code means the method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request. This condition is considered to be temporary. If the request which received this status code was the result of a user action, the request MUST NOT be repeated until it is requested by a separate user action.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_SPACE_ON_RESOURCE\"] = 419] = \"INSUFFICIENT_SPACE_ON_RESOURCE\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt\n *\n * A deprecated response used by the Spring Framework when a method has failed.\n */\n StatusCodes[StatusCodes[\"METHOD_FAILURE\"] = 420] = \"METHOD_FAILURE\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2\n *\n * Defined in the specification of HTTP/2 to indicate that a server is not able to produce a response for the combination of scheme and authority that are included in the request URI.\n */\n StatusCodes[StatusCodes[\"MISDIRECTED_REQUEST\"] = 421] = \"MISDIRECTED_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.3\n *\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n StatusCodes[StatusCodes[\"UNPROCESSABLE_ENTITY\"] = 422] = \"UNPROCESSABLE_ENTITY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.4\n *\n * The resource that is being accessed is locked.\n */\n StatusCodes[StatusCodes[\"LOCKED\"] = 423] = \"LOCKED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.5\n *\n * The request failed due to failure of a previous request.\n */\n StatusCodes[StatusCodes[\"FAILED_DEPENDENCY\"] = 424] = \"FAILED_DEPENDENCY\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.15\n *\n * The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.\n */\n StatusCodes[StatusCodes[\"UPGRADE_REQUIRED\"] = 426] = \"UPGRADE_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-3\n *\n * The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_REQUIRED\"] = 428] = \"PRECONDITION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-4\n *\n * The user has sent too many requests in a given amount of time (\"rate limiting\").\n */\n StatusCodes[StatusCodes[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-5\n *\n * The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.\n */\n StatusCodes[StatusCodes[\"REQUEST_HEADER_FIELDS_TOO_LARGE\"] = 431] = \"REQUEST_HEADER_FIELDS_TOO_LARGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7725\n *\n * The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government.\n */\n StatusCodes[StatusCodes[\"UNAVAILABLE_FOR_LEGAL_REASONS\"] = 451] = \"UNAVAILABLE_FOR_LEGAL_REASONS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.1\n *\n * The server encountered an unexpected condition that prevented it from fulfilling the request.\n */\n StatusCodes[StatusCodes[\"INTERNAL_SERVER_ERROR\"] = 500] = \"INTERNAL_SERVER_ERROR\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.2\n *\n * The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.\n */\n StatusCodes[StatusCodes[\"NOT_IMPLEMENTED\"] = 501] = \"NOT_IMPLEMENTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.3\n *\n * This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.\n */\n StatusCodes[StatusCodes[\"BAD_GATEWAY\"] = 502] = \"BAD_GATEWAY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.4\n *\n * The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.\n */\n StatusCodes[StatusCodes[\"SERVICE_UNAVAILABLE\"] = 503] = \"SERVICE_UNAVAILABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.5\n *\n * This error response is given when the server is acting as a gateway and cannot get a response in time.\n */\n StatusCodes[StatusCodes[\"GATEWAY_TIMEOUT\"] = 504] = \"GATEWAY_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.6\n *\n * The HTTP version used in the request is not supported by the server.\n */\n StatusCodes[StatusCodes[\"HTTP_VERSION_NOT_SUPPORTED\"] = 505] = \"HTTP_VERSION_NOT_SUPPORTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_STORAGE\"] = 507] = \"INSUFFICIENT_STORAGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-6\n *\n * The 511 status code indicates that the client needs to authenticate to gain network access.\n */\n StatusCodes[StatusCodes[\"NETWORK_AUTHENTICATION_REQUIRED\"] = 511] = \"NETWORK_AUTHENTICATION_REQUIRED\";\n})(StatusCodes || (StatusCodes = {}));\n","import chalk from 'chalk';\n\nimport https from 'node:https'\n\nimport 'colors'\n\nimport isNode from 'detect-node'\n\nimport axios, { AxiosRequestConfig } from \"axios\";\n\nimport { ISTSLogger, JSONObject, OAuth2ParameterType } from '@nsshunt/stsutils';\n\nimport CryptoUtils from './Utils/CryptoUtils'\nimport QueryParams from './Utils/QueryParams'\n\nimport { jwtDecode } from \"jwt-decode\";\n\nimport { IStsStorage, ClientStorageType, ClientStorageFactory } from '@nsshunt/stsvueutils'\n\nimport { StatusCodes } from 'http-status-codes'\n\nimport { AuthorizeOptionsResponseType, AuthorizeOptionsResponseMode, IAuthorizationCodeFlowParameters, IRefreshFlowParameters,\n IAuthorizeOptions, ITokenResponse, IAuthorizeResponse, IAuthorizeErrorResponse, OAuthGrantTypes, \n IOauth2ListenerMessage, IOauth2ListenerCommand, IOauth2ListenerMessageResponse, ISTSOAuth2WorkerOptions, ISessionData } from './stsoauth2types'\n\nimport { Gauge, InstrumentBaseTelemetry, InstrumentLogTelemetry } from '@nsshunt/stsobservability'\n\n// STS Client SDK for SPAs\nexport class STSOAuth2Worker {\n //#storageManager = null;\n #clientSessionStore: IStsStorage<ISessionData>;\n #cUtils = new CryptoUtils();\n #qParams = new QueryParams();\n #STORAGE_SESSION_KEY = 'session.stsmda.com.au';\n //@@#aic = null;\n #oauthWorkerPort: MessagePort;\n #options: ISTSOAuth2WorkerOptions;\n #httpsAgent: https.Agent | null = null;\n #logger: ISTSLogger;\n\n constructor(workerPort: MessagePort, options: ISTSOAuth2WorkerOptions, logger: ISTSLogger) {\n this.#options = options;\n this.#logger = logger;\n\t\t\n this.#LogDebugMessage(`STSOAuth2Worker:constructor:#options: [${JSON.stringify(this.#options)}]`);\n\n // In memory storage for OAuth2 tokens for our valid session\n this.#clientSessionStore = new ClientStorageFactory<ISessionData>({clientStorageType: ClientStorageType.MEMORY_STORAGE, usePrefix: false}).GetStorage();\n\n //@@ needs to be sent the instrument manager controller port\n //@@this.#aic = app.config.globalProperties.$sts.aic.PrimaryPublishInstrumentController;\n\n //this.#handleAuthenticateEvent = handleAuthenticateEvent;\n\n this.#oauthWorkerPort = workerPort;\n\n this.#LogDebugMessage(`STSOAuth2Worker:constructor:#oauthWorkerPort: [${JSON.stringify(this.#oauthWorkerPort)}]`);\n\n if (isNode && this.#options.agentOptions) {\n this.#httpsAgent = new https.Agent({ \n keepAlive: this.#options.agentOptions.keepAlive,\n maxSockets: this.#options.agentOptions.maxSockets,\n maxTotalSockets: this.#options.agentOptions.maxTotalSockets,\n maxFreeSockets: this.#options.agentOptions.maxFreeSockets,\n timeout: this.#options.timeout,\n rejectUnauthorized: this.#options.agentOptions.rejectUnauthorized // Allows self-signed certificates if non-production\n });\n }\n\n this.SetupListener();\n\n this.#UpdateInstrument(Gauge.LOGGER, {\n LogMessage: `STSOauth2 Plugin - Successfully Loaded`\n } as InstrumentLogTelemetry);\n\n /*\n\t\tsetInterval(() => { // Used for testing purposes only.\n\t\t\tthis.#UpdateInstrument(Gauge.LOGGER, {\n\t\t\t\tLogMessage: `--> [${Date.now().toString()}] <--`\n\t\t\t} as InstrumentLogTelemetry);\n\t\t}, 1000);\n\t\t*/\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #LogDebugMessage(message: any) {\n this.#logger.debug(message);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #LogInfoMessage(message: any) {\n this.#logger.info(message);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #LogErrorMessage(message: any) {\n this.#logger.error(message);\n }\n\n // Attempt to restore a previous session using the STSBroker\n /*\n { parameterType: OAuth2ParameterType.CLIENT_ID, errorType: authErrorType.CLIENT_ID_MISMATCH },\n { parameterType: OAuth2ParameterType.SCOPE, errorType: authErrorType.SCOPE_MISMATCH }\n { parameterType: OAuth2ParameterType.REDIRECT_URI, errorType: authErrorType.REDIRECT_URI_MISMATCH },\n { parameterType: OAuth2ParameterType.AUDIENCE, errorType: authErrorType.SCOPE_MISMATCH }\n\n Successful Response\n {\n \"access_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3599,\n \"scope\": \"https%3A%2F%2Fgraph.microsoft.com%2Fmail.read\",\n \"refresh_token\": \"AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...\",\n \"id_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...\",\n }\n\n Error Response\n {\n \"error\": \"invalid_scope\",\n \"error_description\": \"AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://foo.microsoft.com/mail.read is not valid.\\r\\nTrace ID: 255d1aef-8c98-452f-ac51-23d051240864\\r\\nCorrelation ID: fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\\r\\nTimestamp: 2016-01-09 02:02:12Z\",\n \"error_codes\": [\n 70011\n ],\n \"timestamp\": \"2016-01-09 02:02:12Z\",\n }\n \n */\n\n #HandleAuthenticateEvent = (id_token: string | null) => {\n const message: IOauth2ListenerMessage = {\n messageId: -1, // un-solicited message\n command: IOauth2ListenerCommand.AUTHENTICATE_EVENT\n }\n this.#ProcessCommand(message, id_token);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #HandleErrorEvent = (error: any) => {\n const message: IOauth2ListenerMessage = {\n messageId: -1, // un-solicited message\n command: IOauth2ListenerCommand.ERROR\n }\n this.#ProcessCommand(message, error);\n }\n\n #LogMessage = (messageToSend: string) => {\n const message: IOauth2ListenerMessage = {\n messageId: -1, // un-solicited message\n command: IOauth2ListenerCommand.LOG\n }\n this.#ProcessCommand(message, messageToSend);\n }\n\n #GetAccessToken = (): string | null => {\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n const tokens: ITokenResponse = sessionData.tokenResponse;\n return tokens.access_token;\n } else {\n return null;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #GetCookies = (): any => {\n if (isNode) {\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n return sessionData.brokerCookie;\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n #UpdateInstrument = (instrumentName: Gauge, telemetry: InstrumentBaseTelemetry): void => {\n const message: IOauth2ListenerMessage = {\n messageId: -1, // un-solicited message\n command: IOauth2ListenerCommand.UPDATE_INSTRUMENT\n }\n this.#ProcessCommand(message, {\n instrumentName,\n telemetry\n });\n }\n\n SetupListener = () => {\n this.#oauthWorkerPort.onmessage = async (data: MessageEvent) => {\n const auth2ListenerMessage: IOauth2ListenerMessage = data.data as IOauth2ListenerMessage;\n this.#LogDebugMessage(`STSOAuth2Worker:SetupListener:onmessage: [${auth2ListenerMessage.command}]`);\n switch (auth2ListenerMessage.command) {\n case IOauth2ListenerCommand.RESTORE_SESSION :\n this.#ProcessCommand(auth2ListenerMessage, await this.#RestoreSession());\n break;\n case IOauth2ListenerCommand.AUTHORIZE :\n this.#ProcessCommand(auth2ListenerMessage, await this.#Authorize());\n break;\n case IOauth2ListenerCommand.HANDLE_REDIRECT :\n this.#ProcessCommand(auth2ListenerMessage, await this.#HandleRedirect(auth2ListenerMessage.payload));\n break;\n case IOauth2ListenerCommand.LOGOUT :\n this.#ProcessCommand(auth2ListenerMessage, await this.#Logout());\n break;\n //@@ Need a way of keeping this out of the main thread - should always stay within the worker\n case IOauth2ListenerCommand.ACCESS_TOKEN :\n this.#ProcessCommand(auth2ListenerMessage, await this.#GetAccessToken());\n break;\n case IOauth2ListenerCommand.EXECUTE_REFRESH_TOKEN :\n this.#ProcessCommand(auth2ListenerMessage, await this.#RefreshToken());\n break;\n case IOauth2ListenerCommand.COOKIES :\n this.#ProcessCommand(auth2ListenerMessage, await this.#GetCookies());\n break;\n default :\n throw new Error(`Command: [${auth2ListenerMessage.command}'] not found.`);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #ProcessCommand = async (auth2ListenerMessage: IOauth2ListenerMessage, response: any) => {\n const messageResponse: IOauth2ListenerMessageResponse = {\n messageId: auth2ListenerMessage.messageId as number,\n command: auth2ListenerMessage.command,\n payload: response\n }\n\n this.#oauthWorkerPort.postMessage(messageResponse);\n }\n\n #RestoreSession = async (): Promise<boolean> => {\n //@@ attempt to get from client storage first\n\n let restoredSessionData: ITokenResponse | null = null;\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n restoredSessionData = sessionData.tokenResponse;\n this.#LogInfoMessage('Session restored from client storage.');\n /*\n if (this.#aic) {\n this.#aic.UpdateInstrument('m', { LogMessage: 'Session restored from client storage.' });\n }\n */\n this.#LogMessage('Session restored from client storage.')\n } else {\n const url = `${this.#options.brokerendpoint}:${this.#options.brokerport}${this.#options.brokerapiroot}/session`;\n this.#LogInfoMessage('RestoreSession');\n this.#LogInfoMessage(url);\n /*\n if (this.#aic) {\n this.#aic.UpdateInstrument('m', { LogMessage: 'RestoreSession' });\n this.#aic.UpdateInstrument('m', { LogMessage: url });\n }\n */\n this.#LogMessage('RestoreSession.');\n this.#LogMessage(url);\n try {\n const rConfig: AxiosRequestConfig = {\n method: \"post\",\n url: url,\n data: {\n [OAuth2ParameterType.CLIENT_ID]: this.#options.client_id,\n [OAuth2ParameterType.SCOPE]: this.#options.scope,\n [OAuth2ParameterType.REDIRECT_URI]: this.#options.redirect_uri,\n [OAuth2ParameterType.AUDIENCE]: this.#options.audience\n },\n withCredentials: true, // Ensure cookies are passed to the service\n timeout: this.#options.timeout\n }\n this.#LogDebugMessage(chalk.magenta(`#RestoreSession:session request detail: [${JSON.stringify(rConfig)}]`));\n if (isNode) {\n rConfig.httpsAgent =this.#httpsAgent\n }\n const retVal = await axios(rConfig);\n if (retVal.data.status === StatusCodes.OK) {\n restoredSessionData = retVal.data.detail;\n if (restoredSessionData) {\n const newSessionData: ISessionData = {\n tokenResponse: restoredSessionData\n }\n\n if (isNode) {\n newSessionData.brokerCookie = retVal.headers['set-cookie'];\n }\n\n this.#clientSessionStore.set(this.#STORAGE_SESSION_KEY, newSessionData);\n this.#LogInfoMessage('Session restored from server side cookie.');\n } else {\n //@@ handle error better\n this.#LogErrorMessage(`Could not restore previous session. No restoredSessionData available.`);\n this.#LogErrorMessage(JSON.stringify(retVal.data));\n }\n } else {\n //@@ handle error better\n this.#LogErrorMessage('Could not restore previous session:-');\n this.#LogErrorMessage(JSON.stringify(retVal.data));\n }\n } catch (error) {\n //@@ handle error better\n this.#LogErrorMessage('Could not restore previous session (error state):-');\n this.#LogErrorMessage(error);\n this.#LogErrorMessage(JSON.stringify(error));\n }\n }\n\t\t\n //@@ must only use in-memory for this ...\n if (restoredSessionData !== null) {\n this.#HandleAuthenticateEvent(restoredSessionData.id_token);\n this.#LogInfoMessage('Refreshing tokens ...');\n return await this.#RefreshToken();\n } else {\n this.#HandleAuthenticateEvent(null);\n return false;\n }\n }\n\n #Authorize = async (): Promise<JSONObject> => {\n this.#LogInfoMessage('Authorize ...');\n\n /* MS Example\n --------------\n https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?\n client_id=6731de76-14a6-49ae-97bc-6eba6914391e\n &response_type=code\n &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F\n &response_mode=query\n &scope=offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read%20api%3A%2F%2F\n &state=12345\n &code_challenge=YTFjNjI1OWYzMzA3MTI4ZDY2Njg5M2RkNmVjNDE5YmEyZGRhOGYyM2IzNjdmZWFhMTQ1ODg3NDcxY2Nl\n &code_challenge_method=S256\n\n Successful Response\n\n GET http://localhost?\n code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...\n &state=12345\n\n Error Response\n GET http://localhost?\n error=access_denied\n &error_description=the+user+canceled+the+authentication\n\n << Hybrid Flow >>\n\n https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?\n client_id=6731de76-14a6-49ae-97bc-6eba6914391e\n &response_type=code%20id_token\n &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F\n &response_mode=fragment\n &scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read\n &state=12345\n &nonce=abcde\n &code_challenge=YTFjNjI1OWYzMzA3MTI4ZDY2Njg5M2RkNmVjNDE5YmEyZGRhOGYyM2IzNjdmZWFhMTQ1ODg3NDcxY2Nl\n &code_challenge_method=S256\n\n Successful Response\n\n GET https://login.microsoftonline.com/common/oauth2/nativeclient#\n code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...\n &id_token=eYj...\n &state=12345\n\n Notes:\n The nonce is included as a claim inside the returned id_token\n Ref: https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow\n */\n\n const client_id = this.#options.client_id;\n const nonce = this.#cUtils.CreateRandomString();\n const response_type = [ AuthorizeOptionsResponseType.CODE ]\n const redirect_uri = this.#options.redirect_uri;\n const response_mode = AuthorizeOptionsResponseMode.QUERY\n const scope = this.#options.scope\n const state = this.#cUtils.CreateRandomString();\n const code_verifier = this.#cUtils.CreateRandomString();\n const code_challenge = await this.#cUtils.DigestMessage(code_verifier);\n const code_challenge_method = 'S256';\n //let audience = this.#options.AUDIENCE;\n\n const authorizeOptions: IAuthorizeOptions = {\n client_id,\n nonce,\n response_type,\n redirect_uri,\n response_mode,\n scope,\n state,\n code_challenge,\n code_challenge_method\n }\n\n const authorizeOptionsClientCopy = { ...authorizeOptions };\n\n const url = `${this.#options.authorizeendpoint}:${this.#options.authorizeport}${this.#options.authorizeapiroot}${this.#options.authorizeapi}?${this.#qParams.CreateQueryParams(authorizeOptions)}`;\n\n this.#LogInfoMessage(url);\n\n // Now add the code_verifier to the transaction data\n authorizeOptions.code_verifier = code_verifier; //@@ Is this is the only thing required across the transaction ?\n\n this.#LogInfoMessage(`Authorize:authorizeOptions: [${JSON.stringify(authorizeOptions)}]`);\n\n return {\n url,\n authorizeOptions,\n authorizeOptionsClientCopy\n }\n //window.location.assign(url);\n //@@ this may need to be a message back to the plugin to re-direct\n //window.location.replace(url);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #HandleRedirect = async (payload: any): Promise<boolean> => {\n const queryVars: IAuthorizeResponse | IAuthorizeErrorResponse = payload.queryVars;\n const authorizeOptions: IAuthorizeOptions = payload.authorizeOptions\n\n this.#LogDebugMessage(chalk.magenta(`#HandleRedirect: HandleRedirect`));\n // We have been re-direct back here from the /authorize end-point\n this.#LogDebugMessage(chalk.magenta(`#HandleRedirect: HandleRedirect:Query Vars: [${JSON.stringify(queryVars)}]`));\n\n if ((queryVars as JSONObject)[OAuth2ParameterType.CODE]) {\n const response: IAuthorizeResponse = queryVars as IAuthorizeResponse;\n\n this.#LogInfoMessage(`authorizeOptions from transaction state: [${JSON.stringify(authorizeOptions)}]`);\n\t\n const redirectState = response.state;\n const authorizeOptionsState = authorizeOptions.state;\n\t\n if (authorizeOptionsState.localeCompare(redirectState) === 0) {\n this.#LogInfoMessage(chalk.green('redirected state (from queryVars) matched previously saved transaction authorizeOptions state'));\n\n return await this.#GetToken(authorizeOptions, response);\n } else {\n this.#LogErrorMessage(chalk.red('redirected state (from queryVars) did NOT match previously saved transaction authorizeOptions state'));\n this.#LogErrorMessage(chalk.red(`authorizeOptionsState: [${authorizeOptionsState}]`));\n this.#LogErrorMessage(chalk.red(`redirectState: [${redirectState}]`));\n this.#HandleErrorEvent({message: 'State un-matched'});\n return false;\n }\n } else if ((queryVars as JSONObject)[OAuth2ParameterType.ERROR]) {\n //const response: IAuthorizeErrorResponse = queryVars as IAuthorizeErrorResponse;\n //@@ pass error back to parent thread (to the plugin) as a message\n //const error = response.error;\n //const errorDescription = response.error_description;\n this.#LogErrorMessage(chalk.red(`State un-matched (1)`));\n this.#HandleErrorEvent({message: 'State un-matched'});\n return false;\n } else {\n // Invalid redirect query params\n //const error = 'Invalid redirect query params'; //@@ fix\n //const errorDescription = 'Invalid redirect query params description'; //@@ fix\n this.#LogErrorMessage(chalk.red(`State un-matched (2)`));\n this.#HandleErrorEvent({message: 'State un-matched'});\n return false;\n }\n }\n\n /*\n client_id=6731de76-14a6-49ae-97bc-6eba6914391e\n &scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read\n &code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...\n &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F\n &grant_type=authorization_code\n &code_verifier=ThisIsntRandomButItNeedsToBe43CharactersLong \n &client_secret=JqQX2PNo9bpM0uEihUPzyrh // NOTE: Only required for web apps. This secret needs to be URL-Encoded.\n\n Successful Response\n {\n \"access_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3599,\n \"scope\": \"https%3A%2F%2Fgraph.microsoft.com%2Fmail.read\",\n \"refresh_token\": \"AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...\",\n \"id_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...\",\n }\n */\n\n // Get access_token, refresh_token and id_token using OAuth2 Authorization Code Flow\n #GetTokenFromBroker = async (authorizationCodeFlowParameters: IAuthorizationCodeFlowParameters | IRefreshFlowParameters): Promise<boolean> => {\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker`));\n\n this.#clientSessionStore.remove(this.#STORAGE_SESSION_KEY);\n const url = `${this.#options.brokerendpoint}:${this.#options.brokerport}${this.#options.brokerapiroot}/token`;\n\n try {\n const rConfig: AxiosRequestConfig = {\n method: \"post\",\n url: url,\n data: authorizationCodeFlowParameters,\n withCredentials: true, // Ensure cookies are passed to the service\n timeout: this.#options.timeout\n }\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: request config: [${JSON.stringify(rConfig)}]`));\n if (isNode) {\n rConfig.httpsAgent = this.#httpsAgent;\n }\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: axios API call`));\n const retVal = await axios(rConfig);\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: axios API call result: [${retVal.status}]`));\n\n if (retVal.status === StatusCodes.OK) {\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: storing tokens`));\n const tokenResponse: ITokenResponse = retVal.data as ITokenResponse;\n this.#HandleAuthenticateEvent(tokenResponse.id_token);\n const newSessionData: ISessionData = {\n tokenResponse: tokenResponse\n }\n\n if (isNode) {\n newSessionData.brokerCookie = retVal.headers['set-cookie'];\n }\n\n this.#clientSessionStore.set(this.#STORAGE_SESSION_KEY, newSessionData);\n return true;\n } else if (retVal.status === StatusCodes.UNAUTHORIZED) {\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: NOT storing tokens, status: [${retVal.status}]`));\n\n this.#HandleAuthenticateEvent(null);\n\n //const response: ITokenErrorResponse = retVal.data as ITokenErrorResponse;\n\n //@@ store response in state\n //@@ go to error page ??\n return false;\n\n } else {\n // General error\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: NOT storing tokens (general error 1), status: [${retVal.status}]`));\n this.#HandleAuthenticateEvent(null);\n this.#LogErrorMessage(chalk.red('Could not obtain access_token from token end-point:-'));\n this.#LogErrorMessage(chalk.red(JSON.stringify(retVal.data)));\n //@@ store error in state to show in error page\n return false;\n }\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`#GetTokenFromBroker: NOT storing tokens (general error 2), status: [${error}]`));\n this.#HandleAuthenticateEvent(null);\n //@@ store error in state to show in error page\n return false;\n }\n }\n\n // Get access_token, refresh_token and id_token using OAuth2 Authorization Code Flow\n #GetToken = async (authorizeOptions: IAuthorizeOptions, authorizeResponse: IAuthorizeResponse): Promise<boolean> => {\n this.#LogInfoMessage(\"#GetToken\");\n this.#LogInfoMessage(authorizeResponse);\n\n this.#clientSessionStore.remove(this.#STORAGE_SESSION_KEY);\n //this.#clientSessionStore.set(this.#STORAGE_SESSION_KEY, null);\n\n const authorizationCodeFlowParameters: IAuthorizationCodeFlowParameters = {\n client_id: this.#options.client_id,\n scope: this.#options.scope,\n code: authorizeResponse.code,\n redirect_uri: this.#options.redirect_uri,\n grant_type: OAuthGrantTypes.AUTHORIZATION_CODE,\n code_verifier: authorizeOptions.code_verifier as string\n }\n\n return await this.#GetTokenFromBroker(authorizationCodeFlowParameters);\n }\n\t\n /*\n\t// Line breaks for legibility only\n\nPOST /{tenant}/oauth2/v2.0/token HTTP/1.1\nHost: https://login.microsoftonline.com\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=535fb089-9ff3-47b6-9bfb-4f1264799865\n&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read\n&refresh_token=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq...\n&grant_type=refresh_token\n&client_secret=sampleCredentia1s // NOTE: Only required for web apps. This secret needs to be URL-Encoded\n\nError Response\n{\n\t\"error\": \"invalid_scope\",\n\t\"error_description\": \"AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://foo.microsoft.com/mail.read is not valid.\\r\\nTrace ID: 255d1aef-8c98-452f-ac51-23d051240864\\r\\nCorrelation ID: fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\\r\\nTimestamp: 2016-01-09 02:02:12Z\",\n\t\"error_codes\": [\n\t 70011\n\t],\n\t\"timestamp\": \"2016-01-09 02:02:12Z\",\n\t\"trace_id\": \"255d1aef-8c98-452f-ac51-23d051240864\",\n\t\"correlation_id\": \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\"\n }\n*/\n\n #RefreshToken = async (): Promise<boolean> => {\n // Get access_token, refresh_token and id_token using OAuth2 Authorization Code Flow\n this.#LogDebugMessage(chalk.cyan(`STSOAuth2Worker:#RefreshToken:start`));\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n this.#LogDebugMessage(chalk.cyan(`STSOAuth2Worker:#RefreshToken:sessionData: [${JSON.stringify(sessionData)}]`));\n const currentSessionData = sessionData.tokenResponse;\n const refreshFlowParameters: IRefreshFlowParameters = {\n client_id: this.#options.client_id,\n scope: this.#options.scope,\n refresh_token: currentSessionData.refresh_token,\n grant_type: OAuthGrantTypes.REFRESH_TOKEN\n }\n return await this.#GetTokenFromBroker(refreshFlowParameters);\n } else {\n this.#LogErrorMessage(chalk.red(`STSOAuth2Worker:#RefreshToken:sessionData not found within clientSessionStore`));\n // show error\n //@@ no valid session exists for refresh\n return false;\n }\n }\n\n // call broker to logout\n // broker to logout of server\n // delete cookie\n // clear session storage\n // clear all state from $store\n #Logout = async (): Promise<boolean> => {\n this.#LogInfoMessage('Logout');\n const url = `${this.#options.brokerendpoint}:${this.#options.brokerport}${this.#options.brokerapiroot}/logout`;\n this.#LogInfoMessage(url);\n\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n const currentSessionData: ITokenResponse = sessionData.tokenResponse;\n const refresh_token = currentSessionData.refresh_token;\n this.#LogInfoMessage(refresh_token);\n\n const decodedRefreshToken: JSONObject = jwtDecode<JSONObject>(refresh_token);\n this.#LogInfoMessage(decodedRefreshToken);\n const sessionId = decodedRefreshToken.sts_session;\n this.#LogInfoMessage(sessionId);\n\n this.#clientSessionStore.remove(this.#STORAGE_SESSION_KEY);\n this.#HandleAuthenticateEvent(null);\n\n try {\n const rConfig: AxiosRequestConfig = {\n method: \"post\",\n url: url,\n data: {\n sessionId\n },\n withCredentials: true, // Ensure cookies are passed to the service\n timeout: this.#options.timeout,\n }\n this.#LogDebugMessage(chalk.magenta(`#Logout: request config: [${rConfig}]`));\n if (isNode) {\n rConfig.httpsAgent = this.#httpsAgent;\n }\n const retVal = await axios(rConfig);\n if (retVal.data.status === StatusCodes.OK) {\n return true;\n } else {\n this.#LogErrorMessage(chalk.red('Error during logout (1: server side)'));\n this.#LogErrorMessage(chalk.red(JSON.stringify(retVal.data)));\n return false;\n }\n } catch (error) {\n this.#LogErrorMessage(chalk.red('Error during logout (2: server side)'));\n this.#LogErrorMessage(chalk.red(error));\n this.#LogErrorMessage(chalk.red(JSON.stringify(error)));\n return false;\n }\n } else {\n this.#LogInfoMessage('Error during logout. Could not restore session from session storage.');\n return false;\n }\n }\n}\n","//import { createPinia, defineStore } from 'pinia'\n//import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'\n\nimport { defineStore } from 'pinia'\n\n// Replace with pinia\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\nexport const TestStore = defineStore('__sts__TestStore', {\n state: () => {\n return {\n count: 0\n }\n },\n actions: {\n UpdateCount() {\n this.count++;\n }\n },\n getters: {\n CountXX: (state) => {\n return state.count * 2;\n }\n }\n /*\n\tpersist: {\n\t\tstorage: globalThis.sessionStorage\n\t}\n\t*/\n});\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { inject } from 'vue'\n\nimport { STSOAuth2ManagerPluginKey } from './stsPluginKeys'\n\nimport { STSOAuth2Manager } from './stsoauth2manager'\nimport { ISTSOAuth2ManagerOptions } from './stsoauth2types'\n\nexport * from './stsoauth2types'\nexport * from './stsoauth2manager'\nexport * from './stsoauth2worker'\n\nexport * from './stores/testStore'\nexport * from './stores/stsoauth2store'\n\nexport * from './stsPluginKeys'\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 useSTSOAuth2ManagerPlugin = (): STSOAuth2Manager => inject(STSOAuth2ManagerPluginKey) as STSOAuth2Manager\n\nexport const STSOAuth2ManagerPlugin = {\n install: (app: any, options: ISTSOAuth2ManagerOptions) => {\n const om = new STSOAuth2Manager(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[STSOAuth2ManagerPluginKey] = om;\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(STSOAuth2ManagerPluginKey, om);\n }\n}\n"],"names":["colorName","require$$0","conversions","route","require$$1","colorConvert","styles","browser","stringReplaceAll","stringEncaseCRLFWithFirstIndex","util","unescape","escape","chalk","templates","ansiStyles","stdoutColor","stderrColor","require$$2","isArray","levelMapping","applyOptions","chalkFactory","chalkTag","Chalk","ChalkClass","createBuilder","createStyler","usedModels","proto","self","applyStyle","template","require$$3","this","Math","undefined","crypto","global","require","n","H","AuthorizeOptionsResponseType","AuthorizeOptionsResponseMode","OAuthGrantTypes","IOauth2ListenerCommand","Buffer","Symbol","Uint8Array","DataView","Map","Promise","WeakMap","source","key","tinyEmitterModule","__defProp","__defNormalProp","__publicField","_ObservabilityModelUtils","StatusCodes","_LogDebugMessage","_LogInfoMessage","_LogErrorMessage","_cUtils","_qParams","_STORAGE_SESSION_KEY","_options","_HandleAuthenticateEvent","_HandleErrorEvent","LogDebugMessage_fn","LogInfoMessage_fn","LogErrorMessage_fn"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,12,13,14,18,20,21,22,24]}
1
+ {"version":3,"file":"stsoauth2plugin.mjs","sources":["../src/stsPluginKeys.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","../node_modules/detect-node/index.esm.js","../__vite-browser-external","../node_modules/crypto-js/core.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/enc-base64.js","../src/Utils/CryptoUtils.ts","../src/Utils/QueryParams.ts","../src/stsoauth2types.ts","../node_modules/jwt-decode/build/esm/index.js","../src/stores/stsoauth2store.ts","../node_modules/lodash.clonedeep/index.js","../node_modules/tiny-emitter/index.js","../node_modules/@nsshunt/stsobservability/dist/stsobservability.mjs","../src/stsoauth2manager.ts","../node_modules/http-status-codes/build/es/status-codes.js","../src/stsoauth2worker.ts","../src/stores/testStore.ts","../src/index.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSOAuth2ManagerPluginKey = Symbol()\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","// 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","export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport sha256 from 'crypto-js/sha256';\nimport Base64 from 'crypto-js/enc-base64';\n\nexport class CryptoUtils {\n #crypto;\n\n constructor() {\n try {\n this.#crypto = crypto;\n } catch {\n this.#crypto = require('crypto')\n }\n }\n\n DigestMessage = async function (message: any) {\n const hashDigest = sha256(message);\n return Base64.stringify(hashDigest);\n }\n\n CreateRandomString = (size = 43) => {\n //const randomValues: any = Array.from(window.crypto.getRandomValues(new Uint8Array(size)))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const randomValues: any = Array.from(this.#crypto.getRandomValues(new Uint8Array(size)))\n //let b64 = window.btoa(String.fromCharCode(...randomValues));\n const b64 = btoa(String.fromCharCode(...randomValues));\n return b64;\n //return randomValues.toString('base64');\n }\n}\n\n/*\nexport class CryptoUtils {\n\tDigestMessage = async function (message) {\n\t\tconst encoder = new TextEncoder();\n\t\tconst data = encoder.encode(message);\n\t\tconst hashBuffer = await crypto.subtle.digest('SHA-256', data);\n\t\tconst hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array\n\t\t//let b64 = window.btoa(String.fromCharCode(...hashArray));\n\t\tconst b64 = btoa(String.fromCharCode(...hashArray));// Use below if a HEX string is required\n\t\t// const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string\n\t\treturn b64;\n\t}\n\n\tCreateRandomString = (size = 43) => {\n\t\t//const randomValues: any = Array.from(window.crypto.getRandomValues(new Uint8Array(size)))\n\t\tconst randomValues: any = Array.from(crypto.getRandomValues(new Uint8Array(size)))\n\t\t//let b64 = window.btoa(String.fromCharCode(...randomValues));\n\t\tconst b64 = btoa(String.fromCharCode(...randomValues));\n\t\treturn b64;\n\t\t//return randomValues.toString('base64');\n\t}\n}\n*/\n\nexport default CryptoUtils\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n// https://github.com/auth0/auth0-spa-js/blob/1de6427f81a8c5b005e9b6d10b9efb1e73542528/static/index.html\n\nimport { JSONObject } from \"@nsshunt/stsutils\";\n\n// https://stackoverflow.com/questions/12446317/change-url-without-redirecting-using-javascript\nclass QueryParams {\n DecodeQueryParams = (params: any): JSONObject => {\n const retObj: JSONObject = { };\n Object.keys(params)\n .filter(k => typeof params[k] !== 'undefined')\n .map(k => { \n retObj[decodeURIComponent(k)] = decodeURIComponent(params[k]);\n });\n return retObj;\n }\n\n CreateQueryParams = (params: JSONObject): string => {\n return Object.keys(params)\n .filter(k => typeof params[k] !== 'undefined')\n .map(k => {\n if (Array.isArray(params[k])) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(params[k].join(' '))\n } else {\n return encodeURIComponent(k) + '=' + encodeURIComponent(params[k])\n }\n })\n .join('&');\n }\n\n _GetQueryParams = (param: string): JSONObject => {\n let retVal: JSONObject = { };\n const uri = param.split(\"?\");\n if (uri.length == 2) {\n const vars = uri[1].split(\"&\");\n const getVars: JSONObject = { };\n let tmp: string[];\n vars.forEach(function (v) {\n tmp = v.split(\"=\");\n if (tmp.length == 2) getVars[tmp[0]] = tmp[1];\n });\n retVal = this.DecodeQueryParams(getVars);\n }\n return retVal;\n }\n \n GetQueryParams = () => {\n return this._GetQueryParams(window.location.href);\n }\n}\n\nexport default QueryParams;\n","import { ISTSLogger } from '@nsshunt/stsutils'\nimport * as wt from 'node:worker_threads'\n\nexport enum AuthorizeOptionsResponseType {\n\tCODE = 'code',\n\tID_TOKEN = 'id_token',\n\tTOKEN = 'token'\n}\n\nexport enum AuthorizeOptionsResponseMode {\n\tQUERY = 'query',\n\tFRAGMENT = 'fragment',\n\tFORM_POST = 'form_post'\n}\n\n// https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow\nexport interface IAuthorizeOptions {\n\tclient_id: string,\n\tnonce: string,\n\tresponse_type: AuthorizeOptionsResponseType[], // Must include: 'code' and may include: 'id_token' and/or 'token'\n\tredirect_uri: string,\n\tresponse_mode: AuthorizeOptionsResponseMode\n\tscope: string, // A space-separated list of scopes that you want the user to consent to. For the /authorize leg of the request, this parameter can cover multiple resources. This value allows your app to get consent for multiple web APIs you want to call.\n\tstate: string, // Client application state (if required)\n\tcode_challenge: string,\n\tcode_challenge_method: string, //@@ enum S256\n\tcode_verifier?: string\n}\n\nexport interface IAuthorizeResponse {\n\tstate: string, // state passed to authorize end-point\n\tcode: string // authorization code\n}\n\nexport interface IAuthorizeErrorResponse {\n\terror: string, \n\terror_description: string \n}\n\nexport enum OAuthGrantTypes {\n\tCLIENT_CREDENTIALS = 'client_credentials',\n\tAUTHORIZATION_CODE = 'authorization_code',\n\tREFRESH_TOKEN = 'refresh_token'\n}\n\nexport interface IAuthorizationCodeFlowParameters {\n\tclient_id: string,\n\tscope: string,\n\tcode: string,\n\tredirect_uri: string, // URI\n\tgrant_type: OAuthGrantTypes, // 'authorization_code', //@@ need enum\n\tcode_verifier: string\n}\n\nexport interface IRefreshFlowParameters {\n\tclient_id: string,\n\tscope: string,\n\trefresh_token: string, // JWT\n\tgrant_type: OAuthGrantTypes // 'refresh_token' //@@ enum\n}\n\nexport interface ITokenResponse {\n access_token: string, // JWT\n token_type: string, //@@ \"Bearer\" only\n expires_in: number,\n scope: string,\n refresh_token: string, // JWT\n id_token: string, // JWT\n}\n\nexport interface ISessionData {\n\ttokenResponse: ITokenResponse,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tbrokerCookie?: any\n}\n\nexport interface ITokenErrorResponse {\n\terror: string,\n\terror_description: string,\n\terror_codes: number[],\n\ttimestamp: number\n\tdetails: unknown //@@ STS attribute ?\n\t//\"trace_id\": \"255d1aef-8c98-452f-ac51-23d051240864\", //@@ MS attribute\n\t//\"correlation_id\": \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\" //@@ MS attribute\n}\n\nexport type AuthenticateEvent = (id_token: string) => void;\n\n// ---------------\n\nexport enum IOauth2ListenerCommand {\n\tRESTORE_SESSION = 'RestoreSession',\n\tAUTHORIZE = 'Authorize',\n\tHANDLE_REDIRECT = 'HandleRedirect',\n\tLOGOUT = 'Logout',\n\tAUTHENTICATE_EVENT = 'AuthenticateEvent',\n\tERROR = 'Error',\n\tLOG = '__LOG',\n\tUPDATE_INSTRUMENT = '__UPDATE_INSTRUMENT',\n\tID_TOKEN = '__ID_TOKEN',\n\tACCESS_TOKEN = '__ACCESS_TOKEN',\n\tCOOKIES = '__COOKIES',\n\tEXECUTE_REFRESH_TOKEN = '__EXECUTE_REFRESH_TOKEN'\n}\n\nexport interface IOauth2ListenerMessage {\n\tmessageId?: number\n\tcommand: IOauth2ListenerCommand\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpayload?: any\n}\n\nexport interface IOauth2ListenerMessageResponse {\n\tmessageId: number\n\tcommand: IOauth2ListenerCommand\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpayload: any\n}\n\nexport type StsOauth2WorkerFactory = () => Worker | wt.Worker\n\nexport interface ISTSOAuth2WorkerOptions {\n\tclient_id: string\n\tscope: string\n\tredirect_uri: string\n\taudience: string\n\t\n\tbrokerendpoint: string\n\tbrokerport: string\n\tbrokerapiroot: string\n\t\n\tauthorizeendpoint: string\n\tauthorizeport: string\n\tauthorizeapiroot: string\n\tauthorizeapi: string\n\t\n\ttimeout: number\n\n\tagentOptions?: {\n\t\tkeepAlive: boolean\n\t\tmaxSockets: number\n\t\tmaxTotalSockets: number\n\t\tmaxFreeSockets: number\n\t\trejectUnauthorized: boolean\n\t}\n}\n\nexport interface ISTSOAuth2ManagerOptions {\n\tauthenticateEvent?: AuthenticateEvent\n\tworkerFactory?: StsOauth2WorkerFactory\n\tworkerOptions: ISTSOAuth2WorkerOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpinia: any\n\turiBase: string // This MUST end in a '/' character, e.g. / or /stsgraph/ or /{tenant}/graph/v1.0/\n\tlogger: ISTSLogger\n}\n\nexport interface ISTSOAuth2WorkerMessage {\n\tworkerPort: MessagePort | wt.MessagePort,\n\toptions: ISTSOAuth2WorkerOptions\n}\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","//import { createPinia, defineStore } from 'pinia'\n//import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'\n\nimport { defineStore } from 'pinia'\n\nimport { jwtDecode } from \"jwt-decode\";\nimport { JSONObject } from '@nsshunt/stsutils';\n\nexport interface ISTSOauth2Store {\n id_token: string | null\n error: { \n message: JSONObject\n } | null\n}\n\n// Replace with pinia\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\nexport const STSOauth2Store = defineStore('__sts__STSOauth2Store', {\n state: (): ISTSOauth2Store => {\n return {\n id_token: null,\n error: null\n }\n },\n actions: {\n UpdateIdToken(id_token: string) {\n this.id_token = id_token;\n },\n UpdateError(error: JSONObject) {\n if (this.error) {\n this.error.message = error;\n } else {\n this.error = {\n message: error\n }\n }\n }\n },\n getters: {\n LoggedIn: (state: ISTSOauth2Store): boolean => {\n if (typeof state.id_token === 'undefined') {\n return false;\n }\n if (state.id_token === null) {\n return false;\n }\n return true;\n },\n UserDetails: (state: ISTSOauth2Store): JSONObject | null => {\n //if (state.sessionData && state.sessionData.id_token) {\n if (state.id_token) {\n const id_token = state.id_token;\n const decodedIdToken = jwtDecode<JSONObject>(id_token);\n return decodedIdToken;\n } else {\n return null;\n }\n }\n },\n /*\n\tpersist: {\n\t\tstorage: globalThis.sessionStorage\n\t}\n\t*/\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","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","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","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n\nimport chalk from 'chalk';\n\nimport * as wt from 'node:worker_threads'\n\nimport { JSONObject, OAuth2ParameterType, Sleep } from '@nsshunt/stsutils';\n\nimport isNode from 'detect-node'\n\nimport CryptoUtils from './Utils/CryptoUtils'\nimport QueryParams from './Utils/QueryParams';\n\nimport { IAuthorizeOptions, IAuthorizeResponse, IAuthorizeErrorResponse, AuthenticateEvent,\n ISTSOAuth2ManagerOptions, IOauth2ListenerMessage, IOauth2ListenerMessageResponse, \n IOauth2ListenerCommand, ISTSOAuth2WorkerMessage } from './stsoauth2types'\n\n//import { IStsStorage, ClientStorageType, ClientStorageFactory } from './stsStorage'\nimport { IStsStorage, ClientStorageType, ClientStorageFactory } from '@nsshunt/stsvueutils'\n\nimport { Gauge, InstrumentBaseTelemetry } from '@nsshunt/stsobservability'\n\nimport { STSOAuth2ManagerPluginKey } from './stsPluginKeys'\n\n//import { createPinia, defineStore } from 'pinia'\n//import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'\n\nimport { STSOauth2Store } from './stores/stsoauth2store'\n\nimport { STSInstrumentControllerPluginKey, AgentInstrumentController, PublishInstrumentController } from '@nsshunt/stsobservability'\n\n// STS Client SDK for SPAs\nexport class STSOAuth2Manager {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #router: any = null;\n #cUtils = new CryptoUtils();\n #qParams = new QueryParams();\n #STORAGE_AUTHORIZE_OPTIONS_KEY = 'authorize_options.stsmda.com.au';\n #STORAGE_SESSION_KEY = 'session.stsmda.com.au';\n #aic: PublishInstrumentController | null = null;\n #options: ISTSOAuth2ManagerOptions;\n #messages: Record<number, IOauth2ListenerMessage> = { };\n #oauth2ManagerPort: MessagePort | wt.MessagePort;\n #messageId = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #messageHandlers: Record<number, any> = { }; // keyed by messageId\n #messageTimeout = 10000;\n #worker: Worker | wt.Worker;\n #transactionStore: IStsStorage<IAuthorizeOptions>; // Transient transaction data used to establish a session via OAuth2 authorize handshake\n #operationSemaphore = false;\n #maxSemaphoreRetries = 100; // 100 retries, i.e. allow 100 x 50 = 5000ms to unblock\n #semaphoreRetrySleep = 50; // ms\n\n constructor(app: any, options: ISTSOAuth2ManagerOptions) {\n this.#options = options;\n\n if (!isNode) {\n if (app.config.globalProperties.$sts[STSInstrumentControllerPluginKey]) {\n const STSInstrumentController: AgentInstrumentController = app.config.globalProperties.$sts[STSInstrumentControllerPluginKey];\n this.#aic = STSInstrumentController;\n }\n this.#router = app.config.globalProperties.$router;\n }\n\n // Use session storage for the transient nature of the OAuth2 authorize handshake. Once completed, the storage will be removed.\n if (isNode) {\n this.#transactionStore = new ClientStorageFactory<IAuthorizeOptions>({clientStorageType: ClientStorageType.MEMORY_STORAGE, usePrefix: false}).GetStorage();\n } else {\n this.#transactionStore = new ClientStorageFactory<IAuthorizeOptions>({clientStorageType: ClientStorageType.SESSION_STORAGE, usePrefix: false}).GetStorage();\n }\n\n if (this.#options.workerFactory) {\n this.#worker = this.#options.workerFactory();\n } else {\n throw new Error(`STSOAuth2Manager:constructor: Cannot init STSOAuth2Manager - this.#options.workerFactory not specified`);\n }\n\t\t\n if (!isNode) {\n (this.#worker as Worker).onmessage = (data: MessageEvent) => {\n this.#LogInfoMessage(chalk.green(`this.#worker.onmessage = [${data}]`));\n };\n\n (this.#worker as Worker).onerror = (error) => {\n this.#LogInfoMessage(chalk.green(`this.#worker.onerror = [${JSON.stringify(error)}]`));\n };\n }\n\n let workerMessage: ISTSOAuth2WorkerMessage\n if (isNode) {\n const { \n port1: oauth2ManagerPort, // this process port\n port2: oauth2WorkerPort // worker port\n } = new wt.MessageChannel();\n this.#oauth2ManagerPort = oauth2ManagerPort;\n workerMessage = {\n workerPort: oauth2WorkerPort,\n options: this.#options.workerOptions\n };\n (this.#worker as wt.Worker).postMessage(workerMessage, [ oauth2WorkerPort ]);\n\n this.#oauth2ManagerPort.on('message', (payload) => {\n this.#ProcessMessageResponse(payload);\n }).unref();\n } else {\n const { \n port1: oauth2ManagerPort, // this process port\n port2: oauth2WorkerPort // worker port\n } = new MessageChannel();\n this.#oauth2ManagerPort = oauth2ManagerPort;\n workerMessage = {\n workerPort: oauth2WorkerPort,\n options: this.#options.workerOptions\n };\n (this.#worker as Worker).postMessage(workerMessage, [ oauth2WorkerPort ]);\n\n this.#oauth2ManagerPort.onmessage = (data: MessageEvent) => {\n this.#ProcessMessageResponse(data.data);\n }\n\t\n this.#SetupRoute(app, this.#router);\n }\n }\n \n #LogDebugMessage(message: any) {\n this.#options.logger.debug(message);\n }\n\n #LogInfoMessage(message: any) {\n this.#options.logger.info(message);\n }\n\n #LogErrorMessage(message: any) {\n this.#options.logger.error(message);\n }\n\n #ProcessMessageResponse = (data: IOauth2ListenerMessageResponse) => {\n const messageResponse: IOauth2ListenerMessageResponse = data;\n this.#LogDebugMessage(chalk.yellow(`STSOAuth2Manager:#ProcessMessageResponse: message data = [${JSON.stringify(messageResponse)}]`));\n if (messageResponse.messageId === -1) {\n // unsolicted message\n switch (messageResponse.command) {\n case IOauth2ListenerCommand.AUTHENTICATE_EVENT :\n this.#HandleAuthenticateEvent(messageResponse.payload as string);\n break;\n case IOauth2ListenerCommand.ERROR :\n this.#HandleErrorEvent(messageResponse.payload as JSONObject);\n break;\n case IOauth2ListenerCommand.LOG :\n this.#HandleLogEvent(messageResponse.payload as string);\n break;\n case IOauth2ListenerCommand.UPDATE_INSTRUMENT :\n this.#HandleUpdateInstrumentEvent(messageResponse.payload.instrumentName, messageResponse.payload.telemetry);\n break;\n default :\n throw new Error(`ProcessMessageResponse command [${messageResponse.command}] not valid.`);\n }\n } else {\n const callBack = this.#messageHandlers[messageResponse.messageId];\n if (callBack) {\n callBack(messageResponse);\n } else {\n throw new Error(`Message: [${messageResponse.messageId}] does not exists in callBacks.`);\n }\n }\n }\n\n #PostMessage = (message: IOauth2ListenerMessage): Promise<IOauth2ListenerMessageResponse> => {\n message.messageId = this.#messageId++;\n\n return new Promise<IOauth2ListenerMessageResponse>((resolve, reject) => {\n // Setup message timeout\n const timeout: NodeJS.Timeout = setTimeout(() => {\n delete this.#messageHandlers[message.messageId as number];\n reject(`Message: [${message.messageId}] timeout error after: [${this.#messageTimeout}] ms.`);\n }, this.#messageTimeout);\n\n // Setup message callback based on messageId\n this.#messageHandlers[message.messageId as number] = (response: IOauth2ListenerMessageResponse) => {\n clearTimeout(timeout);\n delete this.#messageHandlers[message.messageId as number];\n this.#LogDebugMessage(chalk.yellow(`STSOAuth2Manager:#PostMessage: resolve callback response= [${JSON.stringify(response)}]`));\n resolve(response);\n }\n\n // Send the message\n this.#LogDebugMessage(chalk.yellow(`STSOAuth2Manager:#PostMessage: posting message = [${JSON.stringify(message)}]`));\n this.#oauth2ManagerPort.postMessage(message);\t\n });\n }\n\n #HandleLogEvent = (message: string): void => {\n if (this.#aic) {\n this.#aic.LogEx(message);\n }\n this.#LogDebugMessage(message);\n }\n\n // UpdateInstrument = (instrumentName: Gauge, telemetry: InstrumentBaseTelemetry): void => {\n #HandleUpdateInstrumentEvent = (instrumentName: Gauge, telemetry: InstrumentBaseTelemetry): void => {\n if (this.#aic) {\n this.#aic.UpdateInstrument(instrumentName, telemetry);\n }\n }\n\n #GetStore = () => {\n return STSOauth2Store(this.#options.pinia);\n }\n\n // Will come from message channel\n #HandleErrorEvent = (error: JSONObject): void => {\n if (isNode) {\n // Node Mode ...\n } else {\n // User Agent Mode\n this.#GetStore().UpdateError({ // Authorize applications store\n message: error\n });\n\n // plugin to do this ...\n setTimeout(() => {\n this.#router.replace(`${this.#options.uriBase}error`);\n }, 0);\n }\n }\n\n #HandleAuthenticateEvent: AuthenticateEvent = (id_token: string): void => {\n if (isNode) {\n // Node Mode ...\n } else {\n // User Agent Mode\n if (this.#options.authenticateEvent) {\n this.#options.authenticateEvent(id_token);\n }\n\n this.#GetStore().UpdateIdToken(id_token);\n }\n }\n\n #SetupRoute = (app: any, router: any) => {\n this.#LogDebugMessage(chalk.gray(`STSOAuth2Manager:#SetupRoute`));\n router.beforeEach(async (to: any, from: any, next: any) => {\n const oAuth2Manager: STSOAuth2Manager = app.config.globalProperties.$sts[STSOAuth2ManagerPluginKey];\n\n this.#LogDebugMessage(chalk.gray(`beforeEach: from: [${from.path}], to: [${to.path}]`));\n\n if (this.#GetStore().LoggedIn === false) {\n this.#LogInfoMessage(`Not logged in`);\n // Not logged in\n if (to.path.localeCompare(`${this.#options.uriBase}authorize`) === 0) {\n this.#LogInfoMessage(`to = ${this.#options.uriBase}authorize`);\n next();\n return;\n } else if (to.path.localeCompare(`${this.#options.uriBase}consent`) === 0) {\n // Need to check if we are in the correct state, if not - drop back to the start of the process\n if (this.#GetStore().id_token) {\n //if (typeof store.getters.Session.sessionId !== 'undefined') {\n next();\n return;\n }\n }\n if (to.path.localeCompare(`${this.#options.uriBase}logout`) === 0) {\n next();\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}error`) === 0) {\n next();\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}config`) === 0) {\n next();\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}redirected`) === 0) {\n next();\n return;\n }\n\t\t\n const str = to.query;\n // Check if this route is from a redirect from the authorization server\n if (str[OAuth2ParameterType.CODE] || str[OAuth2ParameterType.ERROR]) {\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:#SetupRoute:Processing redirect: [${JSON.stringify(str)}]`));\n const retVal: boolean = await oAuth2Manager.HandleRedirect(str);\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:#SetupRoute:Redirect result: [${retVal}]`));\n if (retVal) {\n // Success\n next({ \n path: `${this.#options.uriBase}`,\n replace: true\n });\n return;\n } else {\n // Error\n next({ \n path: `${this.#options.uriBase}error`,\n replace: true\n });\n\n //@@ need the error data here - or use the vuex store ?\n //@@ this.#router.replace(`error'); //@@ was push\n\n //@@ should replaceState be used as in above?\n return;\n }\n }\n\t\t\n this.#LogDebugMessage(`STSOAuth2Manager:#SetupRoute:Restoring session`);\n const sessionRestored = await oAuth2Manager.RestoreSession();\n this.#LogDebugMessage(`STSOAuth2Manager:#SetupRoute:Session restored: [${sessionRestored}]`);\n\n if (sessionRestored !== true) {\n this.#LogDebugMessage(`STSOAuth2Manager:#SetupRoute:Session not restored - need to authorize`);\n oAuth2Manager.Authorize();\n next();\n return;\n } else {\n next(`${this.#options.uriBase}`);\n return;\n }\n } else {\n // Prevent pages if already logged in\n if (to.path.localeCompare(`${this.#options.uriBase}consent`) === 0) {\n next(`${this.#options.uriBase}`);\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}authorize`) === 0) {\n next(`${this.#options.uriBase}`);\n return;\n }\n if (to.path.localeCompare(`${this.#options.uriBase}logout`) === 0) {\n next(`${this.#options.uriBase}`);\n return;\n }\n next();\n }\n })\n }\n\n //@@ this needs to be re-implemented so that access_token never leaves the auth worker\n GetAccessToken = async(): Promise<string> => {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.ACCESS_TOKEN });\n return response.payload;\n }\n\n // Update operation protected using operationSemaphore. This may occur when using workers and/or multiple async fetch operations.\n ExecuteRefreshToken = async(retryCount = 0): Promise<boolean> => {\n if (this.#operationSemaphore === true) {\n if (retryCount > this.#maxSemaphoreRetries) {\n throw new Error(`STSOAuth2Manager:ExecuteRefreshToken:maxSemaphoreRetries: [${this.#maxSemaphoreRetries}] exceeded.`);\n }\n await Sleep(this.#semaphoreRetrySleep);\n this.#LogDebugMessage(chalk.cyan(`STSOAuth2Manager:ExecuteRefreshToken:locked by operationSemaphore, retry count: [${retryCount}]`));\n return await this.ExecuteRefreshToken(retryCount+1);\n } else {\n this.#operationSemaphore = true;\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.EXECUTE_REFRESH_TOKEN });\n this.#operationSemaphore = false;\n return response.payload;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GetCookies = async(): Promise<any> => {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.COOKIES });\n return response.payload;\n }\n\n RestoreSession = async(): Promise<boolean> => {\n try {\n this.#LogDebugMessage(`STSOAuth2Manager:RestoreSession:postMessage: [${IOauth2ListenerCommand.RESTORE_SESSION}]`);\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.RESTORE_SESSION });\n this.#LogDebugMessage(`STSOAuth2Manager:RestoreSession:response: [${JSON.stringify(response.payload)}]`);\n return response.payload;\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`RestoreSession Error: ${error}`));\n return false;\n }\n }\n\n Authorize = async (): Promise<JSONObject> => {\n try {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.AUTHORIZE });\n this.#transactionStore.set(this.#STORAGE_AUTHORIZE_OPTIONS_KEY, response.payload.authorizeOptions);\n const url = response.payload.url;\n if (!isNode) {\n window.location.replace(url);\n } else {\n return response.payload.authorizeOptionsClientCopy;\n }\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`Authorize Error: ${error}`));\n }\n return { };\n }\n\n HandleRedirect = async (queryVars: JSONObject): Promise<boolean> => {\n try {\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:HandleRedirect`));\n let response: IOauth2ListenerMessageResponse | null = null;\n if (queryVars[OAuth2ParameterType.CODE]) {\n const authorizeOptions: IAuthorizeOptions = this.#transactionStore.get(this.#STORAGE_AUTHORIZE_OPTIONS_KEY) as IAuthorizeOptions;\n this.#transactionStore.remove(this.#STORAGE_AUTHORIZE_OPTIONS_KEY);\n\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:HandleRedirect: sending HANDLE_REDIRECT command`));\n response = await this.#PostMessage({ command: IOauth2ListenerCommand.HANDLE_REDIRECT, payload: {\n queryVars: queryVars as IAuthorizeResponse,\n authorizeOptions\n }});\n } else {\n response = await this.#PostMessage({ command: IOauth2ListenerCommand.HANDLE_REDIRECT, payload: queryVars as IAuthorizeErrorResponse });\n }\n this.#LogDebugMessage(chalk.magenta(`STSOAuth2Manager:HandleRedirect: HANDLE_REDIRECT response: [${JSON.stringify(response)}]`));\n return response.payload;\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`HandleRedirect Error: ${error}`));\n return false;\n }\n }\n\n Logout = async (): Promise<boolean> => {\n try {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.LOGOUT });\n return response.payload;\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`Logout Error: ${error}`));\n return false;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n InvokeExternalAPI = async (): Promise<any> => {\n try {\n const response: IOauth2ListenerMessageResponse = await this.#PostMessage({ command: IOauth2ListenerCommand.LOGOUT });\n return response.payload;\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`InvokeExternalAPI Error: ${error}`));\n return null;\n }\n }\n\n LoggedIn = (): boolean => {\n try {\n return this.#GetStore().LoggedIn;\n } catch (error) {\n return false;\n }\n }\n}\n","// Generated file. Do not edit\nexport var StatusCodes;\n(function (StatusCodes) {\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.1\n *\n * This interim response indicates that everything so far is OK and that the client should continue with the request or ignore it if it is already finished.\n */\n StatusCodes[StatusCodes[\"CONTINUE\"] = 100] = \"CONTINUE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.2\n *\n * This code is sent in response to an Upgrade request header by the client, and indicates the protocol the server is switching too.\n */\n StatusCodes[StatusCodes[\"SWITCHING_PROTOCOLS\"] = 101] = \"SWITCHING_PROTOCOLS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.1\n *\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n */\n StatusCodes[StatusCodes[\"PROCESSING\"] = 102] = \"PROCESSING\";\n /**\n * Official Documentation @ https://www.rfc-editor.org/rfc/rfc8297#page-3\n *\n * This code indicates to the client that the server is likely to send a final response with the header fields included in the informational response.\n */\n StatusCodes[StatusCodes[\"EARLY_HINTS\"] = 103] = \"EARLY_HINTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.1\n *\n * The request has succeeded. The meaning of a success varies depending on the HTTP method:\n * GET: The resource has been fetched and is transmitted in the message body.\n * HEAD: The entity headers are in the message body.\n * POST: The resource describing the result of the action is transmitted in the message body.\n * TRACE: The message body contains the request message as received by the server\n */\n StatusCodes[StatusCodes[\"OK\"] = 200] = \"OK\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.2\n *\n * The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.\n */\n StatusCodes[StatusCodes[\"CREATED\"] = 201] = \"CREATED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.3\n *\n * The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.\n */\n StatusCodes[StatusCodes[\"ACCEPTED\"] = 202] = \"ACCEPTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.4\n *\n * This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.\n */\n StatusCodes[StatusCodes[\"NON_AUTHORITATIVE_INFORMATION\"] = 203] = \"NON_AUTHORITATIVE_INFORMATION\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.5\n *\n * There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.\n */\n StatusCodes[StatusCodes[\"NO_CONTENT\"] = 204] = \"NO_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.6\n *\n * This response code is sent after accomplishing request to tell user agent reset document view which sent this request.\n */\n StatusCodes[StatusCodes[\"RESET_CONTENT\"] = 205] = \"RESET_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.1\n *\n * This response code is used because of range header sent by the client to separate download into multiple streams.\n */\n StatusCodes[StatusCodes[\"PARTIAL_CONTENT\"] = 206] = \"PARTIAL_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.2\n *\n * A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.\n */\n StatusCodes[StatusCodes[\"MULTI_STATUS\"] = 207] = \"MULTI_STATUS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.1\n *\n * The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.\n */\n StatusCodes[StatusCodes[\"MULTIPLE_CHOICES\"] = 300] = \"MULTIPLE_CHOICES\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.2\n *\n * This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.\n */\n StatusCodes[StatusCodes[\"MOVED_PERMANENTLY\"] = 301] = \"MOVED_PERMANENTLY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.3\n *\n * This response code means that URI of requested resource has been changed temporarily. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.\n */\n StatusCodes[StatusCodes[\"MOVED_TEMPORARILY\"] = 302] = \"MOVED_TEMPORARILY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.4\n *\n * Server sent this response to directing client to get requested resource to another URI with an GET request.\n */\n StatusCodes[StatusCodes[\"SEE_OTHER\"] = 303] = \"SEE_OTHER\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.1\n *\n * This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.\n */\n StatusCodes[StatusCodes[\"NOT_MODIFIED\"] = 304] = \"NOT_MODIFIED\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6\n *\n * Was defined in a previous version of the HTTP specification to indicate that a requested response must be accessed by a proxy. It has been deprecated due to security concerns regarding in-band configuration of a proxy.\n */\n StatusCodes[StatusCodes[\"USE_PROXY\"] = 305] = \"USE_PROXY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.7\n *\n * Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"TEMPORARY_REDIRECT\"] = 307] = \"TEMPORARY_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7538#section-3\n *\n * This means that the resource is now permanently located at another URI, specified by the Location: HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"PERMANENT_REDIRECT\"] = 308] = \"PERMANENT_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.1\n *\n * This response means that server could not understand the request due to invalid syntax.\n */\n StatusCodes[StatusCodes[\"BAD_REQUEST\"] = 400] = \"BAD_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.1\n *\n * Although the HTTP standard specifies \"unauthorized\", semantically this response means \"unauthenticated\". That is, the client must authenticate itself to get the requested response.\n */\n StatusCodes[StatusCodes[\"UNAUTHORIZED\"] = 401] = \"UNAUTHORIZED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.2\n *\n * This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.\n */\n StatusCodes[StatusCodes[\"PAYMENT_REQUIRED\"] = 402] = \"PAYMENT_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.3\n *\n * The client does not have access rights to the content, i.e. they are unauthorized, so server is rejecting to give proper response. Unlike 401, the client's identity is known to the server.\n */\n StatusCodes[StatusCodes[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.4\n *\n * The server can not find requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client. This response code is probably the most famous one due to its frequent occurence on the web.\n */\n StatusCodes[StatusCodes[\"NOT_FOUND\"] = 404] = \"NOT_FOUND\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.5\n *\n * The request method is known by the server but has been disabled and cannot be used. For example, an API may forbid DELETE-ing a resource. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.\n */\n StatusCodes[StatusCodes[\"METHOD_NOT_ALLOWED\"] = 405] = \"METHOD_NOT_ALLOWED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.6\n *\n * This response is sent when the web server, after performing server-driven content negotiation, doesn't find any content following the criteria given by the user agent.\n */\n StatusCodes[StatusCodes[\"NOT_ACCEPTABLE\"] = 406] = \"NOT_ACCEPTABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.2\n *\n * This is similar to 401 but authentication is needed to be done by a proxy.\n */\n StatusCodes[StatusCodes[\"PROXY_AUTHENTICATION_REQUIRED\"] = 407] = \"PROXY_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.7\n *\n * This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up surfing. Also note that some servers merely shut down the connection without sending this message.\n */\n StatusCodes[StatusCodes[\"REQUEST_TIMEOUT\"] = 408] = \"REQUEST_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.8\n *\n * This response is sent when a request conflicts with the current state of the server.\n */\n StatusCodes[StatusCodes[\"CONFLICT\"] = 409] = \"CONFLICT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.9\n *\n * This response would be sent when the requested content has been permenantly deleted from server, with no forwarding address. Clients are expected to remove their caches and links to the resource. The HTTP specification intends this status code to be used for \"limited-time, promotional services\". APIs should not feel compelled to indicate resources that have been deleted with this status code.\n */\n StatusCodes[StatusCodes[\"GONE\"] = 410] = \"GONE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.10\n *\n * The server rejected the request because the Content-Length header field is not defined and the server requires it.\n */\n StatusCodes[StatusCodes[\"LENGTH_REQUIRED\"] = 411] = \"LENGTH_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.2\n *\n * The client has indicated preconditions in its headers which the server does not meet.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_FAILED\"] = 412] = \"PRECONDITION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.11\n *\n * Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.\n */\n StatusCodes[StatusCodes[\"REQUEST_TOO_LONG\"] = 413] = \"REQUEST_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.12\n *\n * The URI requested by the client is longer than the server is willing to interpret.\n */\n StatusCodes[StatusCodes[\"REQUEST_URI_TOO_LONG\"] = 414] = \"REQUEST_URI_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.13\n *\n * The media format of the requested data is not supported by the server, so the server is rejecting the request.\n */\n StatusCodes[StatusCodes[\"UNSUPPORTED_MEDIA_TYPE\"] = 415] = \"UNSUPPORTED_MEDIA_TYPE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.4\n *\n * The range specified by the Range header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.\n */\n StatusCodes[StatusCodes[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = 416] = \"REQUESTED_RANGE_NOT_SATISFIABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.14\n *\n * This response code means the expectation indicated by the Expect request header field can't be met by the server.\n */\n StatusCodes[StatusCodes[\"EXPECTATION_FAILED\"] = 417] = \"EXPECTATION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2324#section-2.3.2\n *\n * Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n */\n StatusCodes[StatusCodes[\"IM_A_TEAPOT\"] = 418] = \"IM_A_TEAPOT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The 507 (Insufficient Storage) status code means the method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request. This condition is considered to be temporary. If the request which received this status code was the result of a user action, the request MUST NOT be repeated until it is requested by a separate user action.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_SPACE_ON_RESOURCE\"] = 419] = \"INSUFFICIENT_SPACE_ON_RESOURCE\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt\n *\n * A deprecated response used by the Spring Framework when a method has failed.\n */\n StatusCodes[StatusCodes[\"METHOD_FAILURE\"] = 420] = \"METHOD_FAILURE\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2\n *\n * Defined in the specification of HTTP/2 to indicate that a server is not able to produce a response for the combination of scheme and authority that are included in the request URI.\n */\n StatusCodes[StatusCodes[\"MISDIRECTED_REQUEST\"] = 421] = \"MISDIRECTED_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.3\n *\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n StatusCodes[StatusCodes[\"UNPROCESSABLE_ENTITY\"] = 422] = \"UNPROCESSABLE_ENTITY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.4\n *\n * The resource that is being accessed is locked.\n */\n StatusCodes[StatusCodes[\"LOCKED\"] = 423] = \"LOCKED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.5\n *\n * The request failed due to failure of a previous request.\n */\n StatusCodes[StatusCodes[\"FAILED_DEPENDENCY\"] = 424] = \"FAILED_DEPENDENCY\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.15\n *\n * The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.\n */\n StatusCodes[StatusCodes[\"UPGRADE_REQUIRED\"] = 426] = \"UPGRADE_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-3\n *\n * The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_REQUIRED\"] = 428] = \"PRECONDITION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-4\n *\n * The user has sent too many requests in a given amount of time (\"rate limiting\").\n */\n StatusCodes[StatusCodes[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-5\n *\n * The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.\n */\n StatusCodes[StatusCodes[\"REQUEST_HEADER_FIELDS_TOO_LARGE\"] = 431] = \"REQUEST_HEADER_FIELDS_TOO_LARGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7725\n *\n * The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government.\n */\n StatusCodes[StatusCodes[\"UNAVAILABLE_FOR_LEGAL_REASONS\"] = 451] = \"UNAVAILABLE_FOR_LEGAL_REASONS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.1\n *\n * The server encountered an unexpected condition that prevented it from fulfilling the request.\n */\n StatusCodes[StatusCodes[\"INTERNAL_SERVER_ERROR\"] = 500] = \"INTERNAL_SERVER_ERROR\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.2\n *\n * The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.\n */\n StatusCodes[StatusCodes[\"NOT_IMPLEMENTED\"] = 501] = \"NOT_IMPLEMENTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.3\n *\n * This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.\n */\n StatusCodes[StatusCodes[\"BAD_GATEWAY\"] = 502] = \"BAD_GATEWAY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.4\n *\n * The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.\n */\n StatusCodes[StatusCodes[\"SERVICE_UNAVAILABLE\"] = 503] = \"SERVICE_UNAVAILABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.5\n *\n * This error response is given when the server is acting as a gateway and cannot get a response in time.\n */\n StatusCodes[StatusCodes[\"GATEWAY_TIMEOUT\"] = 504] = \"GATEWAY_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.6\n *\n * The HTTP version used in the request is not supported by the server.\n */\n StatusCodes[StatusCodes[\"HTTP_VERSION_NOT_SUPPORTED\"] = 505] = \"HTTP_VERSION_NOT_SUPPORTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_STORAGE\"] = 507] = \"INSUFFICIENT_STORAGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-6\n *\n * The 511 status code indicates that the client needs to authenticate to gain network access.\n */\n StatusCodes[StatusCodes[\"NETWORK_AUTHENTICATION_REQUIRED\"] = 511] = \"NETWORK_AUTHENTICATION_REQUIRED\";\n})(StatusCodes || (StatusCodes = {}));\n","import chalk from 'chalk';\n\nimport https from 'node:https'\n\nimport 'colors'\n\nimport isNode from 'detect-node'\n\nimport axios, { AxiosRequestConfig } from \"axios\";\n\nimport { ISTSLogger, JSONObject, OAuth2ParameterType } from '@nsshunt/stsutils';\n\nimport CryptoUtils from './Utils/CryptoUtils'\nimport QueryParams from './Utils/QueryParams'\n\nimport { jwtDecode } from \"jwt-decode\";\n\nimport { IStsStorage, ClientStorageType, ClientStorageFactory } from '@nsshunt/stsvueutils'\n\nimport { StatusCodes } from 'http-status-codes'\n\nimport { AuthorizeOptionsResponseType, AuthorizeOptionsResponseMode, IAuthorizationCodeFlowParameters, IRefreshFlowParameters,\n IAuthorizeOptions, ITokenResponse, IAuthorizeResponse, IAuthorizeErrorResponse, OAuthGrantTypes, \n IOauth2ListenerMessage, IOauth2ListenerCommand, IOauth2ListenerMessageResponse, ISTSOAuth2WorkerOptions, ISessionData } from './stsoauth2types'\n\nimport { Gauge, InstrumentBaseTelemetry, InstrumentLogTelemetry } from '@nsshunt/stsobservability'\n\n// STS Client SDK for SPAs\nexport class STSOAuth2Worker {\n //#storageManager = null;\n #clientSessionStore: IStsStorage<ISessionData>;\n #cUtils = new CryptoUtils();\n #qParams = new QueryParams();\n #STORAGE_SESSION_KEY = 'session.stsmda.com.au';\n //@@#aic = null;\n #oauthWorkerPort: MessagePort;\n #options: ISTSOAuth2WorkerOptions;\n #httpsAgent: https.Agent | null = null;\n #logger: ISTSLogger;\n\n constructor(workerPort: MessagePort, options: ISTSOAuth2WorkerOptions, logger: ISTSLogger) {\n this.#options = options;\n this.#logger = logger;\n\t\t\n this.#LogDebugMessage(`STSOAuth2Worker:constructor:#options: [${JSON.stringify(this.#options)}]`);\n\n // In memory storage for OAuth2 tokens for our valid session\n this.#clientSessionStore = new ClientStorageFactory<ISessionData>({clientStorageType: ClientStorageType.MEMORY_STORAGE, usePrefix: false}).GetStorage();\n\n //@@ needs to be sent the instrument manager controller port\n //@@this.#aic = app.config.globalProperties.$sts.aic.PrimaryPublishInstrumentController;\n\n //this.#handleAuthenticateEvent = handleAuthenticateEvent;\n\n this.#oauthWorkerPort = workerPort;\n\n this.#LogDebugMessage(`STSOAuth2Worker:constructor:#oauthWorkerPort: [${JSON.stringify(this.#oauthWorkerPort)}]`);\n\n if (isNode && this.#options.agentOptions) {\n this.#httpsAgent = new https.Agent({ \n keepAlive: this.#options.agentOptions.keepAlive,\n maxSockets: this.#options.agentOptions.maxSockets,\n maxTotalSockets: this.#options.agentOptions.maxTotalSockets,\n maxFreeSockets: this.#options.agentOptions.maxFreeSockets,\n timeout: this.#options.timeout,\n rejectUnauthorized: this.#options.agentOptions.rejectUnauthorized // Allows self-signed certificates if non-production\n });\n }\n\n this.SetupListener();\n\n this.#UpdateInstrument(Gauge.LOGGER, {\n LogMessage: `STSOauth2 Plugin - Successfully Loaded`\n } as InstrumentLogTelemetry);\n\n /*\n\t\tsetInterval(() => { // Used for testing purposes only.\n\t\t\tthis.#UpdateInstrument(Gauge.LOGGER, {\n\t\t\t\tLogMessage: `--> [${Date.now().toString()}] <--`\n\t\t\t} as InstrumentLogTelemetry);\n\t\t}, 1000);\n\t\t*/\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #LogDebugMessage(message: any) {\n this.#logger.debug(message);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #LogInfoMessage(message: any) {\n this.#logger.info(message);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #LogErrorMessage(message: any) {\n this.#logger.error(message);\n }\n\n // Attempt to restore a previous session using the STSBroker\n /*\n { parameterType: OAuth2ParameterType.CLIENT_ID, errorType: authErrorType.CLIENT_ID_MISMATCH },\n { parameterType: OAuth2ParameterType.SCOPE, errorType: authErrorType.SCOPE_MISMATCH }\n { parameterType: OAuth2ParameterType.REDIRECT_URI, errorType: authErrorType.REDIRECT_URI_MISMATCH },\n { parameterType: OAuth2ParameterType.AUDIENCE, errorType: authErrorType.SCOPE_MISMATCH }\n\n Successful Response\n {\n \"access_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3599,\n \"scope\": \"https%3A%2F%2Fgraph.microsoft.com%2Fmail.read\",\n \"refresh_token\": \"AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...\",\n \"id_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...\",\n }\n\n Error Response\n {\n \"error\": \"invalid_scope\",\n \"error_description\": \"AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://foo.microsoft.com/mail.read is not valid.\\r\\nTrace ID: 255d1aef-8c98-452f-ac51-23d051240864\\r\\nCorrelation ID: fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\\r\\nTimestamp: 2016-01-09 02:02:12Z\",\n \"error_codes\": [\n 70011\n ],\n \"timestamp\": \"2016-01-09 02:02:12Z\",\n }\n \n */\n\n #HandleAuthenticateEvent = (id_token: string | null) => {\n const message: IOauth2ListenerMessage = {\n messageId: -1, // un-solicited message\n command: IOauth2ListenerCommand.AUTHENTICATE_EVENT\n }\n this.#ProcessCommand(message, id_token);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #HandleErrorEvent = (error: any) => {\n const message: IOauth2ListenerMessage = {\n messageId: -1, // un-solicited message\n command: IOauth2ListenerCommand.ERROR\n }\n this.#ProcessCommand(message, error);\n }\n\n #LogMessage = (messageToSend: string) => {\n const message: IOauth2ListenerMessage = {\n messageId: -1, // un-solicited message\n command: IOauth2ListenerCommand.LOG\n }\n this.#ProcessCommand(message, messageToSend);\n }\n\n #GetAccessToken = (): string | null => {\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n const tokens: ITokenResponse = sessionData.tokenResponse;\n return tokens.access_token;\n } else {\n return null;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #GetCookies = (): any => {\n if (isNode) {\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n return sessionData.brokerCookie;\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n #UpdateInstrument = (instrumentName: Gauge, telemetry: InstrumentBaseTelemetry): void => {\n const message: IOauth2ListenerMessage = {\n messageId: -1, // un-solicited message\n command: IOauth2ListenerCommand.UPDATE_INSTRUMENT\n }\n this.#ProcessCommand(message, {\n instrumentName,\n telemetry\n });\n }\n\n SetupListener = () => {\n this.#oauthWorkerPort.onmessage = async (data: MessageEvent) => {\n const auth2ListenerMessage: IOauth2ListenerMessage = data.data as IOauth2ListenerMessage;\n this.#LogDebugMessage(`STSOAuth2Worker:SetupListener:onmessage: [${auth2ListenerMessage.command}]`);\n switch (auth2ListenerMessage.command) {\n case IOauth2ListenerCommand.RESTORE_SESSION :\n this.#ProcessCommand(auth2ListenerMessage, await this.#RestoreSession());\n break;\n case IOauth2ListenerCommand.AUTHORIZE :\n this.#ProcessCommand(auth2ListenerMessage, await this.#Authorize());\n break;\n case IOauth2ListenerCommand.HANDLE_REDIRECT :\n this.#ProcessCommand(auth2ListenerMessage, await this.#HandleRedirect(auth2ListenerMessage.payload));\n break;\n case IOauth2ListenerCommand.LOGOUT :\n this.#ProcessCommand(auth2ListenerMessage, await this.#Logout());\n break;\n //@@ Need a way of keeping this out of the main thread - should always stay within the worker\n case IOauth2ListenerCommand.ACCESS_TOKEN :\n this.#ProcessCommand(auth2ListenerMessage, await this.#GetAccessToken());\n break;\n case IOauth2ListenerCommand.EXECUTE_REFRESH_TOKEN :\n this.#ProcessCommand(auth2ListenerMessage, await this.#RefreshToken());\n break;\n case IOauth2ListenerCommand.COOKIES :\n this.#ProcessCommand(auth2ListenerMessage, await this.#GetCookies());\n break;\n default :\n throw new Error(`Command: [${auth2ListenerMessage.command}'] not found.`);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #ProcessCommand = async (auth2ListenerMessage: IOauth2ListenerMessage, response: any) => {\n const messageResponse: IOauth2ListenerMessageResponse = {\n messageId: auth2ListenerMessage.messageId as number,\n command: auth2ListenerMessage.command,\n payload: response\n }\n\n this.#oauthWorkerPort.postMessage(messageResponse);\n }\n\n #RestoreSession = async (): Promise<boolean> => {\n //@@ attempt to get from client storage first\n\n let restoredSessionData: ITokenResponse | null = null;\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n restoredSessionData = sessionData.tokenResponse;\n this.#LogInfoMessage('Session restored from client storage.');\n /*\n if (this.#aic) {\n this.#aic.UpdateInstrument('m', { LogMessage: 'Session restored from client storage.' });\n }\n */\n this.#LogMessage('Session restored from client storage.')\n } else {\n const url = `${this.#options.brokerendpoint}:${this.#options.brokerport}${this.#options.brokerapiroot}/session`;\n this.#LogInfoMessage('RestoreSession');\n this.#LogInfoMessage(url);\n /*\n if (this.#aic) {\n this.#aic.UpdateInstrument('m', { LogMessage: 'RestoreSession' });\n this.#aic.UpdateInstrument('m', { LogMessage: url });\n }\n */\n this.#LogMessage('RestoreSession.');\n this.#LogMessage(url);\n try {\n const rConfig: AxiosRequestConfig = {\n method: \"post\",\n url: url,\n data: {\n [OAuth2ParameterType.CLIENT_ID]: this.#options.client_id,\n [OAuth2ParameterType.SCOPE]: this.#options.scope,\n [OAuth2ParameterType.REDIRECT_URI]: this.#options.redirect_uri,\n [OAuth2ParameterType.AUDIENCE]: this.#options.audience\n },\n withCredentials: true, // Ensure cookies are passed to the service\n timeout: this.#options.timeout\n }\n this.#LogDebugMessage(chalk.magenta(`#RestoreSession:session request detail: [${JSON.stringify(rConfig)}]`));\n if (isNode) {\n rConfig.httpsAgent =this.#httpsAgent\n }\n const retVal = await axios(rConfig);\n if (retVal.data.status === StatusCodes.OK) {\n restoredSessionData = retVal.data.detail;\n if (restoredSessionData) {\n const newSessionData: ISessionData = {\n tokenResponse: restoredSessionData\n }\n\n if (isNode) {\n newSessionData.brokerCookie = retVal.headers['set-cookie'];\n }\n\n this.#clientSessionStore.set(this.#STORAGE_SESSION_KEY, newSessionData);\n this.#LogInfoMessage('Session restored from server side cookie.');\n } else {\n //@@ handle error better\n this.#LogErrorMessage(`Could not restore previous session. No restoredSessionData available.`);\n this.#LogErrorMessage(JSON.stringify(retVal.data));\n }\n } else {\n //@@ handle error better\n this.#LogErrorMessage('Could not restore previous session:-');\n this.#LogErrorMessage(JSON.stringify(retVal.data));\n }\n } catch (error) {\n //@@ handle error better\n this.#LogErrorMessage('Could not restore previous session (error state):-');\n this.#LogErrorMessage(error);\n this.#LogErrorMessage(JSON.stringify(error));\n }\n }\n\t\t\n //@@ must only use in-memory for this ...\n if (restoredSessionData !== null) {\n this.#HandleAuthenticateEvent(restoredSessionData.id_token);\n this.#LogInfoMessage('Refreshing tokens ...');\n return await this.#RefreshToken();\n } else {\n this.#HandleAuthenticateEvent(null);\n return false;\n }\n }\n\n #Authorize = async (): Promise<JSONObject> => {\n this.#LogInfoMessage('Authorize ...');\n\n /* MS Example\n --------------\n https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?\n client_id=6731de76-14a6-49ae-97bc-6eba6914391e\n &response_type=code\n &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F\n &response_mode=query\n &scope=offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read%20api%3A%2F%2F\n &state=12345\n &code_challenge=YTFjNjI1OWYzMzA3MTI4ZDY2Njg5M2RkNmVjNDE5YmEyZGRhOGYyM2IzNjdmZWFhMTQ1ODg3NDcxY2Nl\n &code_challenge_method=S256\n\n Successful Response\n\n GET http://localhost?\n code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...\n &state=12345\n\n Error Response\n GET http://localhost?\n error=access_denied\n &error_description=the+user+canceled+the+authentication\n\n << Hybrid Flow >>\n\n https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?\n client_id=6731de76-14a6-49ae-97bc-6eba6914391e\n &response_type=code%20id_token\n &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F\n &response_mode=fragment\n &scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read\n &state=12345\n &nonce=abcde\n &code_challenge=YTFjNjI1OWYzMzA3MTI4ZDY2Njg5M2RkNmVjNDE5YmEyZGRhOGYyM2IzNjdmZWFhMTQ1ODg3NDcxY2Nl\n &code_challenge_method=S256\n\n Successful Response\n\n GET https://login.microsoftonline.com/common/oauth2/nativeclient#\n code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...\n &id_token=eYj...\n &state=12345\n\n Notes:\n The nonce is included as a claim inside the returned id_token\n Ref: https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow\n */\n\n const client_id = this.#options.client_id;\n const nonce = this.#cUtils.CreateRandomString();\n const response_type = [ AuthorizeOptionsResponseType.CODE ]\n const redirect_uri = this.#options.redirect_uri;\n const response_mode = AuthorizeOptionsResponseMode.QUERY\n const scope = this.#options.scope\n const state = this.#cUtils.CreateRandomString();\n const code_verifier = this.#cUtils.CreateRandomString();\n const code_challenge = await this.#cUtils.DigestMessage(code_verifier);\n const code_challenge_method = 'S256';\n //let audience = this.#options.AUDIENCE;\n\n const authorizeOptions: IAuthorizeOptions = {\n client_id,\n nonce,\n response_type,\n redirect_uri,\n response_mode,\n scope,\n state,\n code_challenge,\n code_challenge_method\n }\n\n const authorizeOptionsClientCopy = { ...authorizeOptions };\n\n const url = `${this.#options.authorizeendpoint}:${this.#options.authorizeport}${this.#options.authorizeapiroot}${this.#options.authorizeapi}?${this.#qParams.CreateQueryParams(authorizeOptions)}`;\n\n this.#LogInfoMessage(url);\n\n // Now add the code_verifier to the transaction data\n authorizeOptions.code_verifier = code_verifier; //@@ Is this is the only thing required across the transaction ?\n\n this.#LogInfoMessage(`Authorize:authorizeOptions: [${JSON.stringify(authorizeOptions)}]`);\n\n return {\n url,\n authorizeOptions,\n authorizeOptionsClientCopy\n }\n //window.location.assign(url);\n //@@ this may need to be a message back to the plugin to re-direct\n //window.location.replace(url);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #HandleRedirect = async (payload: any): Promise<boolean> => {\n const queryVars: IAuthorizeResponse | IAuthorizeErrorResponse = payload.queryVars;\n const authorizeOptions: IAuthorizeOptions = payload.authorizeOptions\n\n this.#LogDebugMessage(chalk.magenta(`#HandleRedirect: HandleRedirect`));\n // We have been re-direct back here from the /authorize end-point\n this.#LogDebugMessage(chalk.magenta(`#HandleRedirect: HandleRedirect:Query Vars: [${JSON.stringify(queryVars)}]`));\n\n if ((queryVars as JSONObject)[OAuth2ParameterType.CODE]) {\n const response: IAuthorizeResponse = queryVars as IAuthorizeResponse;\n\n this.#LogInfoMessage(`authorizeOptions from transaction state: [${JSON.stringify(authorizeOptions)}]`);\n\t\n const redirectState = response.state;\n const authorizeOptionsState = authorizeOptions.state;\n\t\n if (authorizeOptionsState.localeCompare(redirectState) === 0) {\n this.#LogInfoMessage(chalk.green('redirected state (from queryVars) matched previously saved transaction authorizeOptions state'));\n\n return await this.#GetToken(authorizeOptions, response);\n } else {\n this.#LogErrorMessage(chalk.red('redirected state (from queryVars) did NOT match previously saved transaction authorizeOptions state'));\n this.#LogErrorMessage(chalk.red(`authorizeOptionsState: [${authorizeOptionsState}]`));\n this.#LogErrorMessage(chalk.red(`redirectState: [${redirectState}]`));\n this.#HandleErrorEvent({message: 'State un-matched'});\n return false;\n }\n } else if ((queryVars as JSONObject)[OAuth2ParameterType.ERROR]) {\n //const response: IAuthorizeErrorResponse = queryVars as IAuthorizeErrorResponse;\n //@@ pass error back to parent thread (to the plugin) as a message\n //const error = response.error;\n //const errorDescription = response.error_description;\n this.#LogErrorMessage(chalk.red(`State un-matched (1)`));\n this.#HandleErrorEvent({message: 'State un-matched'});\n return false;\n } else {\n // Invalid redirect query params\n //const error = 'Invalid redirect query params'; //@@ fix\n //const errorDescription = 'Invalid redirect query params description'; //@@ fix\n this.#LogErrorMessage(chalk.red(`State un-matched (2)`));\n this.#HandleErrorEvent({message: 'State un-matched'});\n return false;\n }\n }\n\n /*\n client_id=6731de76-14a6-49ae-97bc-6eba6914391e\n &scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read\n &code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...\n &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F\n &grant_type=authorization_code\n &code_verifier=ThisIsntRandomButItNeedsToBe43CharactersLong \n &client_secret=JqQX2PNo9bpM0uEihUPzyrh // NOTE: Only required for web apps. This secret needs to be URL-Encoded.\n\n Successful Response\n {\n \"access_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3599,\n \"scope\": \"https%3A%2F%2Fgraph.microsoft.com%2Fmail.read\",\n \"refresh_token\": \"AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...\",\n \"id_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...\",\n }\n */\n\n // Get access_token, refresh_token and id_token using OAuth2 Authorization Code Flow\n #GetTokenFromBroker = async (authorizationCodeFlowParameters: IAuthorizationCodeFlowParameters | IRefreshFlowParameters): Promise<boolean> => {\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker`));\n\n this.#clientSessionStore.remove(this.#STORAGE_SESSION_KEY);\n const url = `${this.#options.brokerendpoint}:${this.#options.brokerport}${this.#options.brokerapiroot}/token`;\n\n try {\n const rConfig: AxiosRequestConfig = {\n method: \"post\",\n url: url,\n data: authorizationCodeFlowParameters,\n withCredentials: true, // Ensure cookies are passed to the service\n timeout: this.#options.timeout\n }\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: request config: [${JSON.stringify(rConfig)}]`));\n if (isNode) {\n rConfig.httpsAgent = this.#httpsAgent;\n }\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: axios API call`));\n const retVal = await axios(rConfig);\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: axios API call result: [${retVal.status}]`));\n\n if (retVal.status === StatusCodes.OK) {\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: storing tokens`));\n const tokenResponse: ITokenResponse = retVal.data as ITokenResponse;\n this.#HandleAuthenticateEvent(tokenResponse.id_token);\n const newSessionData: ISessionData = {\n tokenResponse: tokenResponse\n }\n\n if (isNode) {\n newSessionData.brokerCookie = retVal.headers['set-cookie'];\n }\n\n this.#clientSessionStore.set(this.#STORAGE_SESSION_KEY, newSessionData);\n return true;\n } else if (retVal.status === StatusCodes.UNAUTHORIZED) {\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: NOT storing tokens, status: [${retVal.status}]`));\n\n this.#HandleAuthenticateEvent(null);\n\n //const response: ITokenErrorResponse = retVal.data as ITokenErrorResponse;\n\n //@@ store response in state\n //@@ go to error page ??\n return false;\n\n } else {\n // General error\n this.#LogDebugMessage(chalk.magenta(`#GetTokenFromBroker: NOT storing tokens (general error 1), status: [${retVal.status}]`));\n this.#HandleAuthenticateEvent(null);\n this.#LogErrorMessage(chalk.red('Could not obtain access_token from token end-point:-'));\n this.#LogErrorMessage(chalk.red(JSON.stringify(retVal.data)));\n //@@ store error in state to show in error page\n return false;\n }\n } catch (error) {\n this.#LogErrorMessage(chalk.red(`#GetTokenFromBroker: NOT storing tokens (general error 2), status: [${error}]`));\n this.#HandleAuthenticateEvent(null);\n //@@ store error in state to show in error page\n return false;\n }\n }\n\n // Get access_token, refresh_token and id_token using OAuth2 Authorization Code Flow\n #GetToken = async (authorizeOptions: IAuthorizeOptions, authorizeResponse: IAuthorizeResponse): Promise<boolean> => {\n this.#LogInfoMessage(\"#GetToken\");\n this.#LogInfoMessage(authorizeResponse);\n\n this.#clientSessionStore.remove(this.#STORAGE_SESSION_KEY);\n //this.#clientSessionStore.set(this.#STORAGE_SESSION_KEY, null);\n\n const authorizationCodeFlowParameters: IAuthorizationCodeFlowParameters = {\n client_id: this.#options.client_id,\n scope: this.#options.scope,\n code: authorizeResponse.code,\n redirect_uri: this.#options.redirect_uri,\n grant_type: OAuthGrantTypes.AUTHORIZATION_CODE,\n code_verifier: authorizeOptions.code_verifier as string\n }\n\n return await this.#GetTokenFromBroker(authorizationCodeFlowParameters);\n }\n\t\n /*\n\t// Line breaks for legibility only\n\nPOST /{tenant}/oauth2/v2.0/token HTTP/1.1\nHost: https://login.microsoftonline.com\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=535fb089-9ff3-47b6-9bfb-4f1264799865\n&scope=https%3A%2F%2Fgraph.microsoft.com%2Fmail.read\n&refresh_token=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq...\n&grant_type=refresh_token\n&client_secret=sampleCredentia1s // NOTE: Only required for web apps. This secret needs to be URL-Encoded\n\nError Response\n{\n\t\"error\": \"invalid_scope\",\n\t\"error_description\": \"AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://foo.microsoft.com/mail.read is not valid.\\r\\nTrace ID: 255d1aef-8c98-452f-ac51-23d051240864\\r\\nCorrelation ID: fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\\r\\nTimestamp: 2016-01-09 02:02:12Z\",\n\t\"error_codes\": [\n\t 70011\n\t],\n\t\"timestamp\": \"2016-01-09 02:02:12Z\",\n\t\"trace_id\": \"255d1aef-8c98-452f-ac51-23d051240864\",\n\t\"correlation_id\": \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\"\n }\n*/\n\n #RefreshToken = async (): Promise<boolean> => {\n // Get access_token, refresh_token and id_token using OAuth2 Authorization Code Flow\n this.#LogDebugMessage(chalk.cyan(`STSOAuth2Worker:#RefreshToken:start`));\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n this.#LogDebugMessage(chalk.cyan(`STSOAuth2Worker:#RefreshToken:sessionData: [${JSON.stringify(sessionData)}]`));\n const currentSessionData = sessionData.tokenResponse;\n const refreshFlowParameters: IRefreshFlowParameters = {\n client_id: this.#options.client_id,\n scope: this.#options.scope,\n refresh_token: currentSessionData.refresh_token,\n grant_type: OAuthGrantTypes.REFRESH_TOKEN\n }\n return await this.#GetTokenFromBroker(refreshFlowParameters);\n } else {\n this.#LogErrorMessage(chalk.red(`STSOAuth2Worker:#RefreshToken:sessionData not found within clientSessionStore`));\n // show error\n //@@ no valid session exists for refresh\n return false;\n }\n }\n\n // call broker to logout\n // broker to logout of server\n // delete cookie\n // clear session storage\n // clear all state from $store\n #Logout = async (): Promise<boolean> => {\n this.#LogInfoMessage('Logout');\n const url = `${this.#options.brokerendpoint}:${this.#options.brokerport}${this.#options.brokerapiroot}/logout`;\n this.#LogInfoMessage(url);\n\n const sessionData: ISessionData | null = this.#clientSessionStore.get(this.#STORAGE_SESSION_KEY);\n if (sessionData) {\n const currentSessionData: ITokenResponse = sessionData.tokenResponse;\n const refresh_token = currentSessionData.refresh_token;\n this.#LogInfoMessage(refresh_token);\n\n const decodedRefreshToken: JSONObject = jwtDecode<JSONObject>(refresh_token);\n this.#LogInfoMessage(decodedRefreshToken);\n const sessionId = decodedRefreshToken.sts_session;\n this.#LogInfoMessage(sessionId);\n\n this.#clientSessionStore.remove(this.#STORAGE_SESSION_KEY);\n this.#HandleAuthenticateEvent(null);\n\n try {\n const rConfig: AxiosRequestConfig = {\n method: \"post\",\n url: url,\n data: {\n sessionId\n },\n withCredentials: true, // Ensure cookies are passed to the service\n timeout: this.#options.timeout,\n }\n this.#LogDebugMessage(chalk.magenta(`#Logout: request config: [${rConfig}]`));\n if (isNode) {\n rConfig.httpsAgent = this.#httpsAgent;\n }\n const retVal = await axios(rConfig);\n if (retVal.data.status === StatusCodes.OK) {\n return true;\n } else {\n this.#LogErrorMessage(chalk.red('Error during logout (1: server side)'));\n this.#LogErrorMessage(chalk.red(JSON.stringify(retVal.data)));\n return false;\n }\n } catch (error) {\n this.#LogErrorMessage(chalk.red('Error during logout (2: server side)'));\n this.#LogErrorMessage(chalk.red(error));\n this.#LogErrorMessage(chalk.red(JSON.stringify(error)));\n return false;\n }\n } else {\n this.#LogInfoMessage('Error during logout. Could not restore session from session storage.');\n return false;\n }\n }\n}\n","//import { createPinia, defineStore } from 'pinia'\n//import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'\n\nimport { defineStore } from 'pinia'\n\n// Replace with pinia\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\nexport const TestStore = defineStore('__sts__TestStore', {\n state: () => {\n return {\n count: 0\n }\n },\n actions: {\n UpdateCount() {\n this.count++;\n }\n },\n getters: {\n CountXX: (state) => {\n return state.count * 2;\n }\n }\n /*\n\tpersist: {\n\t\tstorage: globalThis.sessionStorage\n\t}\n\t*/\n});\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { inject } from 'vue'\n\nimport { STSOAuth2ManagerPluginKey } from './stsPluginKeys'\n\nimport { STSOAuth2Manager } from './stsoauth2manager'\nimport { ISTSOAuth2ManagerOptions } from './stsoauth2types'\n\nexport * from './stsoauth2types'\nexport * from './stsoauth2manager'\nexport * from './stsoauth2worker'\n\nexport * from './stores/testStore'\nexport * from './stores/stsoauth2store'\n\nexport * from './stsPluginKeys'\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 useSTSOAuth2ManagerPlugin = (): STSOAuth2Manager => inject(STSOAuth2ManagerPluginKey) as STSOAuth2Manager\n\nexport const STSOAuth2ManagerPlugin = {\n install: (app: any, options: ISTSOAuth2ManagerOptions) => {\n const om = new STSOAuth2Manager(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[STSOAuth2ManagerPluginKey] = om;\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(STSOAuth2ManagerPluginKey, om);\n }\n}\n"],"names":["colorName","require$$0","conversions","route","require$$1","colorConvert","styles","browser","stringReplaceAll","stringEncaseCRLFWithFirstIndex","util","unescape","escape","chalk","templates","ansiStyles","stdoutColor","stderrColor","require$$2","isArray","levelMapping","applyOptions","chalkFactory","chalkTag","Chalk","ChalkClass","createBuilder","createStyler","usedModels","proto","self","applyStyle","template","require$$3","this","Math","undefined","crypto","global","require","n","H","AuthorizeOptionsResponseType","AuthorizeOptionsResponseMode","OAuthGrantTypes","IOauth2ListenerCommand","Buffer","Symbol","Uint8Array","DataView","Map","Promise","WeakMap","source","key","tinyEmitterModule","__defProp","__defNormalProp","__publicField","_ObservabilityModelUtils","StatusCodes","_LogDebugMessage","_LogInfoMessage","_LogErrorMessage","_cUtils","_qParams","_STORAGE_SESSION_KEY","_options","_HandleAuthenticateEvent","_HandleErrorEvent","LogDebugMessage_fn","LogInfoMessage_fn","LogErrorMessage_fn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,MAAM,4BAA4B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACChDA,gBAAiB;AAAA,IAChB,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,QAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,IACpB,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,QAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,IAClB,cAAc,CAAC,KAAK,IAAI,GAAG;AAAA,IAC3B,SAAS,CAAC,KAAK,IAAI,EAAE;AAAA,IACrB,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,IAC1B,cAAc,CAAC,KAAK,KAAK,CAAC;AAAA,IAC1B,aAAa,CAAC,KAAK,KAAK,EAAE;AAAA,IAC1B,SAAS,CAAC,KAAK,KAAK,EAAE;AAAA,IACtB,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,WAAW,CAAC,KAAK,IAAI,EAAE;AAAA,IACvB,QAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,IACpB,YAAY,CAAC,GAAG,GAAG,GAAG;AAAA,IACtB,YAAY,CAAC,GAAG,KAAK,GAAG;AAAA,IACxB,iBAAiB,CAAC,KAAK,KAAK,EAAE;AAAA,IAC9B,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,aAAa,CAAC,GAAG,KAAK,CAAC;AAAA,IACvB,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,eAAe,CAAC,KAAK,GAAG,GAAG;AAAA,IAC3B,kBAAkB,CAAC,IAAI,KAAK,EAAE;AAAA,IAC9B,cAAc,CAAC,KAAK,KAAK,CAAC;AAAA,IAC1B,cAAc,CAAC,KAAK,IAAI,GAAG;AAAA,IAC3B,WAAW,CAAC,KAAK,GAAG,CAAC;AAAA,IACrB,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,iBAAiB,CAAC,IAAI,IAAI,GAAG;AAAA,IAC7B,iBAAiB,CAAC,IAAI,IAAI,EAAE;AAAA,IAC5B,iBAAiB,CAAC,IAAI,IAAI,EAAE;AAAA,IAC5B,iBAAiB,CAAC,GAAG,KAAK,GAAG;AAAA,IAC7B,cAAc,CAAC,KAAK,GAAG,GAAG;AAAA,IAC1B,YAAY,CAAC,KAAK,IAAI,GAAG;AAAA,IACzB,eAAe,CAAC,GAAG,KAAK,GAAG;AAAA,IAC3B,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,cAAc,CAAC,IAAI,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,KAAK,IAAI,EAAE;AAAA,IACzB,eAAe,CAAC,KAAK,KAAK,GAAG;AAAA,IAC7B,eAAe,CAAC,IAAI,KAAK,EAAE;AAAA,IAC3B,WAAW,CAAC,KAAK,GAAG,GAAG;AAAA,IACvB,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,QAAQ,CAAC,KAAK,KAAK,CAAC;AAAA,IACpB,aAAa,CAAC,KAAK,KAAK,EAAE;AAAA,IAC1B,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,SAAS,CAAC,GAAG,KAAK,CAAC;AAAA,IACnB,eAAe,CAAC,KAAK,KAAK,EAAE;AAAA,IAC5B,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,aAAa,CAAC,KAAK,IAAI,EAAE;AAAA,IACzB,UAAU,CAAC,IAAI,GAAG,GAAG;AAAA,IACrB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,iBAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC/B,aAAa,CAAC,KAAK,KAAK,CAAC;AAAA,IACzB,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,wBAAwB,CAAC,KAAK,KAAK,GAAG;AAAA,IACtC,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,eAAe,CAAC,KAAK,KAAK,GAAG;AAAA,IAC7B,iBAAiB,CAAC,IAAI,KAAK,GAAG;AAAA,IAC9B,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,eAAe,CAAC,KAAK,KAAK,GAAG;AAAA,IAC7B,QAAQ,CAAC,GAAG,KAAK,CAAC;AAAA,IAClB,aAAa,CAAC,IAAI,KAAK,EAAE;AAAA,IACzB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,WAAW,CAAC,KAAK,GAAG,GAAG;AAAA,IACvB,UAAU,CAAC,KAAK,GAAG,CAAC;AAAA,IACpB,oBAAoB,CAAC,KAAK,KAAK,GAAG;AAAA,IAClC,cAAc,CAAC,GAAG,GAAG,GAAG;AAAA,IACxB,gBAAgB,CAAC,KAAK,IAAI,GAAG;AAAA,IAC7B,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,kBAAkB,CAAC,IAAI,KAAK,GAAG;AAAA,IAC/B,mBAAmB,CAAC,KAAK,KAAK,GAAG;AAAA,IACjC,qBAAqB,CAAC,GAAG,KAAK,GAAG;AAAA,IACjC,mBAAmB,CAAC,IAAI,KAAK,GAAG;AAAA,IAChC,mBAAmB,CAAC,KAAK,IAAI,GAAG;AAAA,IAChC,gBAAgB,CAAC,IAAI,IAAI,GAAG;AAAA,IAC5B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,eAAe,CAAC,KAAK,KAAK,GAAG;AAAA,IAC7B,QAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,IAClB,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,SAAS,CAAC,KAAK,KAAK,CAAC;AAAA,IACrB,aAAa,CAAC,KAAK,KAAK,EAAE;AAAA,IAC1B,UAAU,CAAC,KAAK,KAAK,CAAC;AAAA,IACtB,aAAa,CAAC,KAAK,IAAI,CAAC;AAAA,IACxB,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,iBAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC/B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,iBAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC/B,iBAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC/B,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,QAAQ,CAAC,KAAK,KAAK,EAAE;AAAA,IACrB,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,UAAU,CAAC,KAAK,GAAG,GAAG;AAAA,IACtB,iBAAiB,CAAC,KAAK,IAAI,GAAG;AAAA,IAC9B,OAAO,CAAC,KAAK,GAAG,CAAC;AAAA,IACjB,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,IAC1B,eAAe,CAAC,KAAK,IAAI,EAAE;AAAA,IAC3B,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,cAAc,CAAC,KAAK,KAAK,EAAE;AAAA,IAC3B,YAAY,CAAC,IAAI,KAAK,EAAE;AAAA,IACxB,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,UAAU,CAAC,KAAK,IAAI,EAAE;AAAA,IACtB,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,aAAa,CAAC,KAAK,IAAI,GAAG;AAAA,IAC1B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,eAAe,CAAC,GAAG,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,IAC1B,OAAO,CAAC,KAAK,KAAK,GAAG;AAAA,IACrB,QAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,IACpB,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,UAAU,CAAC,KAAK,IAAI,EAAE;AAAA,IACtB,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,IAC1B,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,UAAU,CAAC,KAAK,KAAK,CAAC;AAAA,IACtB,eAAe,CAAC,KAAK,KAAK,EAAE;AAAA;;;;;;;;;ACpJ7B,QAAM,cAAcC;AAMpB,QAAM,kBAAkB,CAAA;AACxB,aAAW,OAAO,OAAO,KAAK,WAAW,GAAG;AAC3C,oBAAgB,YAAY,GAAG,CAAC,IAAI;AAAA,EACpC;AAED,QAAM,UAAU;AAAA,IACf,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,IAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,IAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,IAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,IAChC,MAAM,EAAC,UAAU,GAAG,QAAQ,OAAM;AAAA,IAClC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,IAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,IAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,MAAK;AAAA,IAChC,KAAK,EAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAC;AAAA,IAClC,SAAS,EAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAC;AAAA,IAC1C,QAAQ,EAAC,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAC;AAAA,IACxC,SAAS,EAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAC;AAAA,IAC1C,KAAK,EAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,KAAK,GAAG,EAAC;AAAA,IAC1C,OAAO,EAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,OAAO,KAAK,EAAC;AAAA,IAClD,MAAM,EAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAC;AAAA,EACrC;AAEcC,kBAAG;AAGjB,aAAW,SAAS,OAAO,KAAK,OAAO,GAAG;AACzC,QAAI,EAAE,cAAc,QAAQ,KAAK,IAAI;AACpC,YAAM,IAAI,MAAM,gCAAgC,KAAK;AAAA,IACrD;AAED,QAAI,EAAE,YAAY,QAAQ,KAAK,IAAI;AAClC,YAAM,IAAI,MAAM,sCAAsC,KAAK;AAAA,IAC3D;AAED,QAAI,QAAQ,KAAK,EAAE,OAAO,WAAW,QAAQ,KAAK,EAAE,UAAU;AAC7D,YAAM,IAAI,MAAM,wCAAwC,KAAK;AAAA,IAC7D;AAED,UAAM,EAAC,UAAU,OAAM,IAAI,QAAQ,KAAK;AACxC,WAAO,QAAQ,KAAK,EAAE;AACtB,WAAO,QAAQ,KAAK,EAAE;AACtB,WAAO,eAAe,QAAQ,KAAK,GAAG,YAAY,EAAC,OAAO,SAAQ,CAAC;AACnE,WAAO,eAAe,QAAQ,KAAK,GAAG,UAAU,EAAC,OAAO,OAAM,CAAC;AAAA,EAC/D;AAED,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5B,UAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5B,UAAM,QAAQ,MAAM;AACpB,QAAI;AACJ,QAAI;AAEJ,QAAI,QAAQ,KAAK;AAChB,UAAI;AAAA,IACN,WAAY,MAAM,KAAK;AACrB,WAAK,IAAI,KAAK;AAAA,IAChB,WAAY,MAAM,KAAK;AACrB,UAAI,KAAK,IAAI,KAAK;AAAA,IACpB,WAAY,MAAM,KAAK;AACrB,UAAI,KAAK,IAAI,KAAK;AAAA,IAClB;AAED,QAAI,KAAK,IAAI,IAAI,IAAI,GAAG;AAExB,QAAI,IAAI,GAAG;AACV,WAAK;AAAA,IACL;AAED,UAAM,KAAK,MAAM,OAAO;AAExB,QAAI,QAAQ,KAAK;AAChB,UAAI;AAAA,IACN,WAAY,KAAK,KAAK;AACpB,UAAI,SAAS,MAAM;AAAA,IACrB,OAAQ;AACN,UAAI,SAAS,IAAI,MAAM;AAAA,IACvB;AAED,WAAO,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EAC5B;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AAC1B,UAAM,OAAO,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AACjC,UAAM,QAAQ,SAAU,GAAG;AAC1B,cAAQ,IAAI,KAAK,IAAI,OAAO,IAAI;AAAA,IAClC;AAEC,QAAI,SAAS,GAAG;AACf,UAAI;AACJ,UAAI;AAAA,IACN,OAAQ;AACN,UAAI,OAAO;AACX,aAAO,MAAM,CAAC;AACd,aAAO,MAAM,CAAC;AACd,aAAO,MAAM,CAAC;AAEd,UAAI,MAAM,GAAG;AACZ,YAAI,OAAO;AAAA,MACd,WAAa,MAAM,GAAG;AACnB,YAAK,IAAI,IAAK,OAAO;AAAA,MACxB,WAAa,MAAM,GAAG;AACnB,YAAK,IAAI,IAAK,OAAO;AAAA,MACrB;AAED,UAAI,IAAI,GAAG;AACV,aAAK;AAAA,MACR,WAAa,IAAI,GAAG;AACjB,aAAK;AAAA,MACL;AAAA,IACD;AAED,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACA;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,QAAI,IAAI,IAAI,CAAC;AACb,UAAM,IAAI,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;AAChC,UAAM,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAE9C,QAAI,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAE5C,WAAO,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EAC5B;AAEA,UAAQ,IAAI,OAAO,SAAU,KAAK;AACjC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AAEnB,UAAM,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACtC,UAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;AACnC,UAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;AACnC,UAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;AAEnC,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EAC3C;AAEA,WAAS,oBAAoB,GAAG,GAAG;AAIlC,YACG,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAChB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAChB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM;AAAA,EAEnB;AAED,UAAQ,IAAI,UAAU,SAAU,KAAK;AACpC,UAAM,WAAW,gBAAgB,GAAG;AACpC,QAAI,UAAU;AACb,aAAO;AAAA,IACP;AAED,QAAI,yBAAyB;AAC7B,QAAI;AAEJ,eAAW,WAAW,OAAO,KAAK,WAAW,GAAG;AAC/C,YAAM,QAAQ,YAAY,OAAO;AAGjC,YAAM,WAAW,oBAAoB,KAAK,KAAK;AAG/C,UAAI,WAAW,wBAAwB;AACtC,iCAAyB;AACzB,gCAAwB;AAAA,MACxB;AAAA,IACD;AAED,WAAO;AAAA,EACR;AAEA,UAAQ,QAAQ,MAAM,SAAU,SAAS;AACxC,WAAO,YAAY,OAAO;AAAA,EAC3B;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,IAAI,IAAI,CAAC,IAAI;AAGjB,QAAI,IAAI,YAAa,IAAI,SAAS,UAAU,MAAQ,IAAI;AACxD,QAAI,IAAI,YAAa,IAAI,SAAS,UAAU,MAAQ,IAAI;AACxD,QAAI,IAAI,YAAa,IAAI,SAAS,UAAU,MAAQ,IAAI;AAExD,UAAM,IAAK,IAAI,SAAW,IAAI,SAAW,IAAI;AAC7C,UAAM,IAAK,IAAI,SAAW,IAAI,SAAW,IAAI;AAC7C,UAAM,IAAK,IAAI,SAAW,IAAI,SAAW,IAAI;AAE7C,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EAClC;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,MAAM,QAAQ,IAAI,IAAI,GAAG;AAC/B,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,IAAI,IAAI,CAAC;AAEb,SAAK;AACL,SAAK;AACL,SAAK;AAEL,QAAI,IAAI,UAAY,MAAM,IAAI,KAAO,QAAQ,IAAM,KAAK;AACxD,QAAI,IAAI,UAAY,MAAM,IAAI,KAAO,QAAQ,IAAM,KAAK;AACxD,QAAI,IAAI,UAAY,MAAM,IAAI,KAAO,QAAQ,IAAM,KAAK;AAExD,UAAM,IAAK,MAAM,IAAK;AACtB,UAAM,IAAI,OAAO,IAAI;AACrB,UAAM,IAAI,OAAO,IAAI;AAErB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,MAAM,GAAG;AACZ,YAAM,IAAI;AACV,aAAO,CAAC,KAAK,KAAK,GAAG;AAAA,IACrB;AAED,QAAI,IAAI,KAAK;AACZ,WAAK,KAAK,IAAI;AAAA,IAChB,OAAQ;AACN,WAAK,IAAI,IAAI,IAAI;AAAA,IACjB;AAED,UAAM,KAAK,IAAI,IAAI;AAEnB,UAAM,MAAM,CAAC,GAAG,GAAG,CAAC;AACpB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,WAAK,IAAI,IAAI,IAAI,EAAE,IAAI;AACvB,UAAI,KAAK,GAAG;AACX;AAAA,MACA;AAED,UAAI,KAAK,GAAG;AACX;AAAA,MACA;AAED,UAAI,IAAI,KAAK,GAAG;AACf,cAAM,MAAM,KAAK,MAAM,IAAI;AAAA,MAC9B,WAAa,IAAI,KAAK,GAAG;AACtB,cAAM;AAAA,MACT,WAAa,IAAI,KAAK,GAAG;AACtB,cAAM,MAAM,KAAK,OAAO,IAAI,IAAI,MAAM;AAAA,MACzC,OAAS;AACN,cAAM;AAAA,MACN;AAED,UAAI,CAAC,IAAI,MAAM;AAAA,IACf;AAED,WAAO;AAAA,EACR;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC;AACf,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,OAAO;AACX,UAAM,OAAO,KAAK,IAAI,GAAG,IAAI;AAE7B,SAAK;AACL,SAAM,KAAK,IAAK,IAAI,IAAI;AACxB,YAAQ,QAAQ,IAAI,OAAO,IAAI;AAC/B,UAAM,KAAK,IAAI,KAAK;AACpB,UAAM,KAAK,MAAM,IAAK,IAAI,QAAS,OAAO,QAAS,IAAI,KAAM,IAAI;AAEjE,WAAO,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG;AAAA,EAC7B;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,UAAM,KAAK,KAAK,MAAM,CAAC,IAAI;AAE3B,UAAM,IAAI,IAAI,KAAK,MAAM,CAAC;AAC1B,UAAM,IAAI,MAAM,KAAK,IAAI;AACzB,UAAM,IAAI,MAAM,KAAK,IAAK,IAAI;AAC9B,UAAM,IAAI,MAAM,KAAK,IAAK,KAAK,IAAI;AACnC,SAAK;AAEL,YAAQ,IAAE;AAAA,MACT,KAAK;AACJ,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MAChB,KAAK;AACJ,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MAChB,KAAK;AACJ,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MAChB,KAAK;AACJ,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MAChB,KAAK;AACJ,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MAChB,KAAK;AACJ,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,OAAO,KAAK,IAAI,GAAG,IAAI;AAC7B,QAAI;AACJ,QAAI;AAEJ,SAAK,IAAI,KAAK;AACd,UAAM,QAAQ,IAAI,KAAK;AACvB,SAAK,IAAI;AACT,UAAO,QAAQ,IAAK,OAAO,IAAI;AAC/B,SAAK,MAAM;AACX,SAAK;AAEL,WAAO,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG;AAAA,EAC7B;AAGA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI,KAAK,IAAI,CAAC,IAAI;AAClB,QAAI,KAAK,IAAI,CAAC,IAAI;AAClB,UAAM,QAAQ,KAAK;AACnB,QAAI;AAGJ,QAAI,QAAQ,GAAG;AACd,YAAM;AACN,YAAM;AAAA,IACN;AAED,UAAM,IAAI,KAAK,MAAM,IAAI,CAAC;AAC1B,UAAM,IAAI,IAAI;AACd,QAAI,IAAI,IAAI;AAEZ,SAAK,IAAI,OAAU,GAAG;AACrB,UAAI,IAAI;AAAA,IACR;AAED,UAAM,IAAI,KAAK,KAAK,IAAI;AAExB,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,YAAQ,GAAC;AAAA,MACR;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAG,YAAI;AAAI,YAAI;AAAI,YAAI;AAAI;AAAA,MAChC,KAAK;AAAG,YAAI;AAAI,YAAI;AAAI,YAAI;AAAI;AAAA,MAChC,KAAK;AAAG,YAAI;AAAI,YAAI;AAAI,YAAI;AAAG;AAAA,MAC/B,KAAK;AAAG,YAAI;AAAI,YAAI;AAAI,YAAI;AAAG;AAAA,MAC/B,KAAK;AAAG,YAAI;AAAI,YAAI;AAAI,YAAI;AAAG;AAAA,MAC/B,KAAK;AAAG,YAAI;AAAI,YAAI;AAAI,YAAI;AAAG;AAAA,IAC/B;AAGD,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EAClC;AAEA,UAAQ,KAAK,MAAM,SAAU,MAAM;AAClC,UAAM,IAAI,KAAK,CAAC,IAAI;AACpB,UAAM,IAAI,KAAK,CAAC,IAAI;AACpB,UAAM,IAAI,KAAK,CAAC,IAAI;AACpB,UAAM,IAAI,KAAK,CAAC,IAAI;AAEpB,UAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AACzC,UAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AACzC,UAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AAEzC,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EAClC;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAK,IAAI,SAAW,IAAI,UAAY,IAAI;AACxC,QAAK,IAAI,UAAY,IAAI,SAAW,IAAI;AACxC,QAAK,IAAI,SAAW,IAAI,SAAY,IAAI;AAGxC,QAAI,IAAI,WACH,QAAS,MAAM,IAAM,OAAS,QAChC,IAAI;AAEP,QAAI,IAAI,WACH,QAAS,MAAM,IAAM,OAAS,QAChC,IAAI;AAEP,QAAI,IAAI,WACH,QAAS,MAAM,IAAM,OAAS,QAChC,IAAI;AAEP,QAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAE9B,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EAClC;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,IAAI,IAAI,CAAC;AAEb,SAAK;AACL,SAAK;AACL,SAAK;AAEL,QAAI,IAAI,UAAY,MAAM,IAAI,KAAO,QAAQ,IAAM,KAAK;AACxD,QAAI,IAAI,UAAY,MAAM,IAAI,KAAO,QAAQ,IAAM,KAAK;AACxD,QAAI,IAAI,UAAY,MAAM,IAAI,KAAO,QAAQ,IAAM,KAAK;AAExD,UAAM,IAAK,MAAM,IAAK;AACtB,UAAM,IAAI,OAAO,IAAI;AACrB,UAAM,IAAI,OAAO,IAAI;AAErB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,SAAK,IAAI,MAAM;AACf,QAAI,IAAI,MAAM;AACd,QAAI,IAAI,IAAI;AAEZ,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,QAAI,KAAK,UAAW,MAAM,IAAI,KAAK,OAAO;AAC1C,QAAI,KAAK,UAAW,MAAM,IAAI,KAAK,OAAO;AAC1C,QAAI,KAAK,UAAW,MAAM,IAAI,KAAK,OAAO;AAE1C,SAAK;AACL,SAAK;AACL,SAAK;AAEL,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,QAAI;AAEJ,UAAM,KAAK,KAAK,MAAM,GAAG,CAAC;AAC1B,QAAI,KAAK,MAAM,IAAI,KAAK;AAExB,QAAI,IAAI,GAAG;AACV,WAAK;AAAA,IACL;AAED,UAAM,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC;AAEjC,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AAEf,UAAM,KAAK,IAAI,MAAM,IAAI,KAAK;AAC9B,UAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,UAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AAEzB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAEA,UAAQ,IAAI,SAAS,SAAU,MAAM,aAAa,MAAM;AACvD,UAAM,CAAC,GAAG,GAAG,CAAC,IAAI;AAClB,QAAI,QAAQ,eAAe,OAAO,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI;AAE7D,YAAQ,KAAK,MAAM,QAAQ,EAAE;AAE7B,QAAI,UAAU,GAAG;AAChB,aAAO;AAAA,IACP;AAED,QAAI,OAAO,MACN,KAAK,MAAM,IAAI,GAAG,KAAK,IACxB,KAAK,MAAM,IAAI,GAAG,KAAK,IACxB,KAAK,MAAM,IAAI,GAAG;AAErB,QAAI,UAAU,GAAG;AAChB,cAAQ;AAAA,IACR;AAED,WAAO;AAAA,EACR;AAEA,UAAQ,IAAI,SAAS,SAAU,MAAM;AAGpC,WAAO,QAAQ,IAAI,OAAO,QAAQ,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;AAAA,EACzD;AAEA,UAAQ,IAAI,UAAU,SAAU,MAAM;AACrC,UAAM,IAAI,KAAK,CAAC;AAChB,UAAM,IAAI,KAAK,CAAC;AAChB,UAAM,IAAI,KAAK,CAAC;AAIhB,QAAI,MAAM,KAAK,MAAM,GAAG;AACvB,UAAI,IAAI,GAAG;AACV,eAAO;AAAA,MACP;AAED,UAAI,IAAI,KAAK;AACZ,eAAO;AAAA,MACP;AAED,aAAO,KAAK,OAAQ,IAAI,KAAK,MAAO,EAAE,IAAI;AAAA,IAC1C;AAED,UAAM,OAAO,KACT,KAAK,KAAK,MAAM,IAAI,MAAM,CAAC,IAC3B,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAC3B,KAAK,MAAM,IAAI,MAAM,CAAC;AAEzB,WAAO;AAAA,EACR;AAEA,UAAQ,OAAO,MAAM,SAAU,MAAM;AACpC,QAAI,QAAQ,OAAO;AAGnB,QAAI,UAAU,KAAK,UAAU,GAAG;AAC/B,UAAI,OAAO,IAAI;AACd,iBAAS;AAAA,MACT;AAED,cAAQ,QAAQ,OAAO;AAEvB,aAAO,CAAC,OAAO,OAAO,KAAK;AAAA,IAC3B;AAED,UAAM,QAAQ,CAAC,EAAE,OAAO,MAAM,KAAK;AACnC,UAAM,KAAM,QAAQ,KAAK,OAAQ;AACjC,UAAM,KAAO,SAAS,IAAK,KAAK,OAAQ;AACxC,UAAM,KAAO,SAAS,IAAK,KAAK,OAAQ;AAExC,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAEA,UAAQ,QAAQ,MAAM,SAAU,MAAM;AAErC,QAAI,QAAQ,KAAK;AAChB,YAAM,KAAK,OAAO,OAAO,KAAK;AAC9B,aAAO,CAAC,GAAG,GAAG,CAAC;AAAA,IACf;AAED,YAAQ;AAER,QAAI;AACJ,UAAM,IAAI,KAAK,MAAM,OAAO,EAAE,IAAI,IAAI;AACtC,UAAM,IAAI,KAAK,OAAO,MAAM,OAAO,MAAM,CAAC,IAAI,IAAI;AAClD,UAAM,IAAK,MAAM,IAAK,IAAI;AAE1B,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAEA,UAAQ,IAAI,MAAM,SAAU,MAAM;AACjC,UAAM,YAAY,KAAK,MAAM,KAAK,CAAC,CAAC,IAAI,QAAS,QAC5C,KAAK,MAAM,KAAK,CAAC,CAAC,IAAI,QAAS,MAChC,KAAK,MAAM,KAAK,CAAC,CAAC,IAAI;AAE1B,UAAM,SAAS,QAAQ,SAAS,EAAE,EAAE,YAAW;AAC/C,WAAO,SAAS,UAAU,OAAO,MAAM,IAAI;AAAA,EAC5C;AAEA,UAAQ,IAAI,MAAM,SAAU,MAAM;AACjC,UAAM,QAAQ,KAAK,SAAS,EAAE,EAAE,MAAM,0BAA0B;AAChE,QAAI,CAAC,OAAO;AACX,aAAO,CAAC,GAAG,GAAG,CAAC;AAAA,IACf;AAED,QAAI,cAAc,MAAM,CAAC;AAEzB,QAAI,MAAM,CAAC,EAAE,WAAW,GAAG;AAC1B,oBAAc,YAAY,MAAM,EAAE,EAAE,IAAI,UAAQ;AAC/C,eAAO,OAAO;AAAA,MACjB,CAAG,EAAE,KAAK,EAAE;AAAA,IACV;AAED,UAAM,UAAU,SAAS,aAAa,EAAE;AACxC,UAAM,IAAK,WAAW,KAAM;AAC5B,UAAM,IAAK,WAAW,IAAK;AAC3B,UAAM,IAAI,UAAU;AAEpB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EAChB;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AACtC,UAAM,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AACtC,UAAM,SAAU,MAAM;AACtB,QAAI;AACJ,QAAI;AAEJ,QAAI,SAAS,GAAG;AACf,kBAAY,OAAO,IAAI;AAAA,IACzB,OAAQ;AACN,kBAAY;AAAA,IACZ;AAED,QAAI,UAAU,GAAG;AAChB,YAAM;AAAA,IACN,WACG,QAAQ,GAAG;AACd,aAAQ,IAAI,KAAK,SAAU;AAAA,IAC3B,WACG,QAAQ,GAAG;AACd,YAAM,KAAK,IAAI,KAAK;AAAA,IACtB,OAAQ;AACN,YAAM,KAAK,IAAI,KAAK;AAAA,IACpB;AAED,WAAO;AACP,WAAO;AAEP,WAAO,CAAC,MAAM,KAAK,SAAS,KAAK,YAAY,GAAG;AAAA,EACjD;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AAEnB,UAAM,IAAI,IAAI,MAAO,IAAM,IAAI,IAAM,IAAM,KAAK,IAAM;AAEtD,QAAI,IAAI;AACR,QAAI,IAAI,GAAK;AACZ,WAAK,IAAI,MAAM,MAAM,IAAM;AAAA,IAC3B;AAED,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACjC;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AAEnB,UAAM,IAAI,IAAI;AACd,QAAI,IAAI;AAER,QAAI,IAAI,GAAK;AACZ,WAAK,IAAI,MAAM,IAAI;AAAA,IACnB;AAED,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACjC;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AAEnB,QAAI,MAAM,GAAK;AACd,aAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,IACjC;AAED,UAAM,OAAO,CAAC,GAAG,GAAG,CAAC;AACrB,UAAM,KAAM,IAAI,IAAK;AACrB,UAAM,IAAI,KAAK;AACf,UAAM,IAAI,IAAI;AACd,QAAI,KAAK;AAGT,YAAQ,KAAK,MAAM,EAAE,GAAC;AAAA,MACrB,KAAK;AACJ,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG;AAAA,MACxC,KAAK;AACJ,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG;AAAA,MACxC,KAAK;AACJ,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG;AAAA,MACxC,KAAK;AACJ,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG;AAAA,MACxC,KAAK;AACJ,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG;AAAA,MACxC;AACC,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAG,aAAK,CAAC,IAAI;AAAA,IACrC;AAGD,UAAM,IAAM,KAAK;AAEjB,WAAO;AAAA,OACL,IAAI,KAAK,CAAC,IAAI,MAAM;AAAA,OACpB,IAAI,KAAK,CAAC,IAAI,MAAM;AAAA,OACpB,IAAI,KAAK,CAAC,IAAI,MAAM;AAAA,IACvB;AAAA,EACA;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AAEnB,UAAM,IAAI,IAAI,KAAK,IAAM;AACzB,QAAI,IAAI;AAER,QAAI,IAAI,GAAK;AACZ,UAAI,IAAI;AAAA,IACR;AAED,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACjC;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AAEnB,UAAM,IAAI,KAAK,IAAM,KAAK,MAAM;AAChC,QAAI,IAAI;AAER,QAAI,IAAI,KAAO,IAAI,KAAK;AACvB,UAAI,KAAK,IAAI;AAAA,IACb,WACG,KAAK,OAAO,IAAI,GAAK;AACxB,UAAI,KAAK,KAAK,IAAI;AAAA,IAClB;AAED,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACjC;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,KAAK,IAAM;AACzB,WAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,GAAG;AAAA,EAC7C;AAEA,UAAQ,IAAI,MAAM,SAAU,KAAK;AAChC,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,IAAI;AACd,QAAI,IAAI;AAER,QAAI,IAAI,GAAG;AACV,WAAK,IAAI,MAAM,IAAI;AAAA,IACnB;AAED,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACjC;AAEA,UAAQ,MAAM,MAAM,SAAU,OAAO;AACpC,WAAO,CAAE,MAAM,CAAC,IAAI,QAAS,KAAM,MAAM,CAAC,IAAI,QAAS,KAAM,MAAM,CAAC,IAAI,QAAS,GAAG;AAAA,EACrF;AAEA,UAAQ,IAAI,QAAQ,SAAU,KAAK;AAClC,WAAO,CAAE,IAAI,CAAC,IAAI,MAAO,OAAQ,IAAI,CAAC,IAAI,MAAO,OAAQ,IAAI,CAAC,IAAI,MAAO,KAAK;AAAA,EAC/E;AAEA,UAAQ,KAAK,MAAM,SAAU,MAAM;AAClC,WAAO,CAAC,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,MAAM,GAAG;AAAA,EACtE;AAEA,UAAQ,KAAK,MAAM,SAAU,MAAM;AAClC,WAAO,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;AAAA,EACtB;AAEA,UAAQ,KAAK,MAAM,QAAQ,KAAK;AAEhC,UAAQ,KAAK,MAAM,SAAU,MAAM;AAClC,WAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EACxB;AAEA,UAAQ,KAAK,OAAO,SAAU,MAAM;AACnC,WAAO,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAAA,EACzB;AAEA,UAAQ,KAAK,MAAM,SAAU,MAAM;AAClC,WAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,EACtB;AAEA,UAAQ,KAAK,MAAM,SAAU,MAAM;AAClC,UAAM,MAAM,KAAK,MAAM,KAAK,CAAC,IAAI,MAAM,GAAG,IAAI;AAC9C,UAAM,WAAW,OAAO,OAAO,OAAO,KAAK;AAE3C,UAAM,SAAS,QAAQ,SAAS,EAAE,EAAE,YAAW;AAC/C,WAAO,SAAS,UAAU,OAAO,MAAM,IAAI;AAAA,EAC5C;AAEA,UAAQ,IAAI,OAAO,SAAU,KAAK;AACjC,UAAM,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;AACzC,WAAO,CAAC,MAAM,MAAM,GAAG;AAAA;;;;;;;;;ACr0BxB,QAAMA,eAAcD;AAapB,WAAS,aAAa;AACrB,UAAM,QAAQ,CAAA;AAEd,UAAM,SAAS,OAAO,KAAKC,YAAW;AAEtC,aAAS,MAAM,OAAO,QAAQ,IAAI,GAAG,IAAI,KAAK,KAAK;AAClD,YAAM,OAAO,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA,QAGlB,UAAU;AAAA,QACV,QAAQ;AAAA,MACX;AAAA,IACE;AAED,WAAO;AAAA,EACP;AAGD,WAAS,UAAU,WAAW;AAC7B,UAAM,QAAQ;AACd,UAAM,QAAQ,CAAC,SAAS;AAExB,UAAM,SAAS,EAAE,WAAW;AAE5B,WAAO,MAAM,QAAQ;AACpB,YAAM,UAAU,MAAM;AACtB,YAAM,YAAY,OAAO,KAAKA,aAAY,OAAO,CAAC;AAElD,eAAS,MAAM,UAAU,QAAQ,IAAI,GAAG,IAAI,KAAK,KAAK;AACrD,cAAM,WAAW,UAAU,CAAC;AAC5B,cAAM,OAAO,MAAM,QAAQ;AAE3B,YAAI,KAAK,aAAa,IAAI;AACzB,eAAK,WAAW,MAAM,OAAO,EAAE,WAAW;AAC1C,eAAK,SAAS;AACd,gBAAM,QAAQ,QAAQ;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAED,WAAO;AAAA,EACP;AAED,WAAS,KAAK,MAAM,IAAI;AACvB,WAAO,SAAU,MAAM;AACtB,aAAO,GAAG,KAAK,IAAI,CAAC;AAAA,IACtB;AAAA,EACC;AAED,WAAS,eAAe,SAAS,OAAO;AACvC,UAAM,OAAO,CAAC,MAAM,OAAO,EAAE,QAAQ,OAAO;AAC5C,QAAI,KAAKA,aAAY,MAAM,OAAO,EAAE,MAAM,EAAE,OAAO;AAEnD,QAAI,MAAM,MAAM,OAAO,EAAE;AACzB,WAAO,MAAM,GAAG,EAAE,QAAQ;AACzB,WAAK,QAAQ,MAAM,GAAG,EAAE,MAAM;AAC9B,WAAK,KAAKA,aAAY,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE;AACjD,YAAM,MAAM,GAAG,EAAE;AAAA,IACjB;AAED,OAAG,aAAa;AAChB,WAAO;AAAA,EACP;AAEaC,YAAG,SAAU,WAAW;AACrC,UAAM,QAAQ,UAAU,SAAS;AACjC,UAAM,aAAa,CAAA;AAEnB,UAAM,SAAS,OAAO,KAAK,KAAK;AAChC,aAAS,MAAM,OAAO,QAAQ,IAAI,GAAG,IAAI,KAAK,KAAK;AAClD,YAAM,UAAU,OAAO,CAAC;AACxB,YAAM,OAAO,MAAM,OAAO;AAE1B,UAAI,KAAK,WAAW,MAAM;AAEzB;AAAA,MACA;AAED,iBAAW,OAAO,IAAI,eAAe,SAAS,KAAK;AAAA,IACnD;AAED,WAAO;AAAA;;;;;;;;;AC9FR,QAAMD,eAAcD;AACpB,QAAME,SAAQC;AAEd,QAAM,UAAU,CAAA;AAEhB,QAAM,SAAS,OAAO,KAAKF,YAAW;AAEtC,WAAS,QAAQ,IAAI;AACpB,UAAM,YAAY,YAAa,MAAM;AACpC,YAAM,OAAO,KAAK,CAAC;AACnB,UAAI,SAAS,UAAa,SAAS,MAAM;AACxC,eAAO;AAAA,MACP;AAED,UAAI,KAAK,SAAS,GAAG;AACpB,eAAO;AAAA,MACP;AAED,aAAO,GAAG,IAAI;AAAA,IAChB;AAGC,QAAI,gBAAgB,IAAI;AACvB,gBAAU,aAAa,GAAG;AAAA,IAC1B;AAED,WAAO;AAAA,EACP;AAED,WAAS,YAAY,IAAI;AACxB,UAAM,YAAY,YAAa,MAAM;AACpC,YAAM,OAAO,KAAK,CAAC;AAEnB,UAAI,SAAS,UAAa,SAAS,MAAM;AACxC,eAAO;AAAA,MACP;AAED,UAAI,KAAK,SAAS,GAAG;AACpB,eAAO;AAAA,MACP;AAED,YAAM,SAAS,GAAG,IAAI;AAKtB,UAAI,OAAO,WAAW,UAAU;AAC/B,iBAAS,MAAM,OAAO,QAAQ,IAAI,GAAG,IAAI,KAAK,KAAK;AAClD,iBAAO,CAAC,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC;AAAA,QAChC;AAAA,MACD;AAED,aAAO;AAAA,IACT;AAGC,QAAI,gBAAgB,IAAI;AACvB,gBAAU,aAAa,GAAG;AAAA,IAC1B;AAED,WAAO;AAAA,EACP;AAED,SAAO,QAAQ,eAAa;AAC3B,YAAQ,SAAS,IAAI;AAErB,WAAO,eAAe,QAAQ,SAAS,GAAG,YAAY,EAAC,OAAOA,aAAY,SAAS,EAAE,SAAQ,CAAC;AAC9F,WAAO,eAAe,QAAQ,SAAS,GAAG,UAAU,EAAC,OAAOA,aAAY,SAAS,EAAE,OAAM,CAAC;AAE1F,UAAM,SAASC,OAAM,SAAS;AAC9B,UAAM,cAAc,OAAO,KAAK,MAAM;AAEtC,gBAAY,QAAQ,aAAW;AAC9B,YAAM,KAAK,OAAO,OAAO;AAEzB,cAAQ,SAAS,EAAE,OAAO,IAAI,YAAY,EAAE;AAC5C,cAAQ,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,EAAE;AAAA,IAC9C,CAAE;AAAA,EACF,CAAC;AAEDE,mBAAiB;;;;;AC9EjB,QAAM,aAAa,CAAC,IAAI,WAAW,IAAI,SAAS;AAC/C,UAAM,OAAO,GAAG,GAAG,IAAI;AACvB,WAAO,QAAU,OAAO,MAAM;AAAA,EAC/B;AAEA,QAAM,cAAc,CAAC,IAAI,WAAW,IAAI,SAAS;AAChD,UAAM,OAAO,GAAG,GAAG,IAAI;AACvB,WAAO,QAAU,KAAK,MAAM,MAAM,IAAI;AAAA,EACvC;AAEA,QAAM,cAAc,CAAC,IAAI,WAAW,IAAI,SAAS;AAChD,UAAM,MAAM,GAAG,GAAG,IAAI;AACtB,WAAO,QAAU,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAAA,EAC7D;AAEA,QAAM,YAAY,OAAK;AACvB,QAAM,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;AAErC,QAAM,kBAAkB,CAAC,QAAQ,UAAU,QAAQ;AAClD,WAAO,eAAe,QAAQ,UAAU;AAAA,MACvC,KAAK,MAAM;AACV,cAAM,QAAQ;AAEd,eAAO,eAAe,QAAQ,UAAU;AAAA,UACvC;AAAA,UACA,YAAY;AAAA,UACZ,cAAc;AAAA,QAClB,CAAI;AAED,eAAO;AAAA,MACP;AAAA,MACD,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAE;AAAA,EACF;AAGA,MAAIA;AACJ,QAAM,oBAAoB,CAAC,MAAM,aAAa,UAAU,iBAAiB;AACxE,QAAIA,kBAAiB,QAAW;AAC/B,MAAAA,gBAAeJ,sBAAA;AAAA,IACf;AAED,UAAM,SAAS,eAAe,KAAK;AACnC,UAAMK,UAAS,CAAA;AAEf,eAAW,CAAC,aAAa,KAAK,KAAK,OAAO,QAAQD,aAAY,GAAG;AAChE,YAAM,OAAO,gBAAgB,WAAW,SAAS;AACjD,UAAI,gBAAgB,aAAa;AAChC,QAAAC,QAAO,IAAI,IAAI,KAAK,UAAU,MAAM;AAAA,MACvC,WAAa,OAAO,UAAU,UAAU;AACrC,QAAAA,QAAO,IAAI,IAAI,KAAK,MAAM,WAAW,GAAG,MAAM;AAAA,MAC9C;AAAA,IACD;AAED,WAAOA;AAAA,EACR;AAEA,WAAS,iBAAiB;AACzB,UAAM,QAAQ,oBAAI;AAClB,UAAMA,UAAS;AAAA,MACd,UAAU;AAAA,QACT,OAAO,CAAC,GAAG,CAAC;AAAA;AAAA,QAEZ,MAAM,CAAC,GAAG,EAAE;AAAA,QACZ,KAAK,CAAC,GAAG,EAAE;AAAA,QACX,QAAQ,CAAC,GAAG,EAAE;AAAA,QACd,WAAW,CAAC,GAAG,EAAE;AAAA,QACjB,SAAS,CAAC,GAAG,EAAE;AAAA,QACf,QAAQ,CAAC,GAAG,EAAE;AAAA,QACd,eAAe,CAAC,GAAG,EAAE;AAAA,MACrB;AAAA,MACD,OAAO;AAAA,QACN,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,KAAK,CAAC,IAAI,EAAE;AAAA,QACZ,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,MAAM,CAAC,IAAI,EAAE;AAAA,QACb,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,MAAM,CAAC,IAAI,EAAE;AAAA,QACb,OAAO,CAAC,IAAI,EAAE;AAAA;AAAA,QAGd,aAAa,CAAC,IAAI,EAAE;AAAA,QACpB,WAAW,CAAC,IAAI,EAAE;AAAA,QAClB,aAAa,CAAC,IAAI,EAAE;AAAA,QACpB,cAAc,CAAC,IAAI,EAAE;AAAA,QACrB,YAAY,CAAC,IAAI,EAAE;AAAA,QACnB,eAAe,CAAC,IAAI,EAAE;AAAA,QACtB,YAAY,CAAC,IAAI,EAAE;AAAA,QACnB,aAAa,CAAC,IAAI,EAAE;AAAA,MACpB;AAAA,MACD,SAAS;AAAA,QACR,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,UAAU,CAAC,IAAI,EAAE;AAAA,QACjB,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,WAAW,CAAC,IAAI,EAAE;AAAA,QAClB,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,SAAS,CAAC,IAAI,EAAE;AAAA;AAAA,QAGhB,eAAe,CAAC,KAAK,EAAE;AAAA,QACvB,aAAa,CAAC,KAAK,EAAE;AAAA,QACrB,eAAe,CAAC,KAAK,EAAE;AAAA,QACvB,gBAAgB,CAAC,KAAK,EAAE;AAAA,QACxB,cAAc,CAAC,KAAK,EAAE;AAAA,QACtB,iBAAiB,CAAC,KAAK,EAAE;AAAA,QACzB,cAAc,CAAC,KAAK,EAAE;AAAA,QACtB,eAAe,CAAC,KAAK,EAAE;AAAA,MACvB;AAAA,IACH;AAGC,IAAAA,QAAO,MAAM,OAAOA,QAAO,MAAM;AACjC,IAAAA,QAAO,QAAQ,SAASA,QAAO,QAAQ;AACvC,IAAAA,QAAO,MAAM,OAAOA,QAAO,MAAM;AACjC,IAAAA,QAAO,QAAQ,SAASA,QAAO,QAAQ;AAEvC,eAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQA,OAAM,GAAG;AACxD,iBAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AACvD,QAAAA,QAAO,SAAS,IAAI;AAAA,UACnB,MAAM,QAAU,MAAM,CAAC,CAAC;AAAA,UACxB,OAAO,QAAU,MAAM,CAAC,CAAC;AAAA,QAC7B;AAEG,cAAM,SAAS,IAAIA,QAAO,SAAS;AAEnC,cAAM,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,MAC5B;AAED,aAAO,eAAeA,SAAQ,WAAW;AAAA,QACxC,OAAO;AAAA,QACP,YAAY;AAAA,MACf,CAAG;AAAA,IACD;AAED,WAAO,eAAeA,SAAQ,SAAS;AAAA,MACtC,OAAO;AAAA,MACP,YAAY;AAAA,IACd,CAAE;AAED,IAAAA,QAAO,MAAM,QAAQ;AACrB,IAAAA,QAAO,QAAQ,QAAQ;AAEvB,oBAAgBA,QAAO,OAAO,QAAQ,MAAM,kBAAkB,YAAY,UAAU,WAAW,KAAK,CAAC;AACrG,oBAAgBA,QAAO,OAAO,WAAW,MAAM,kBAAkB,aAAa,WAAW,WAAW,KAAK,CAAC;AAC1G,oBAAgBA,QAAO,OAAO,WAAW,MAAM,kBAAkB,aAAa,OAAO,SAAS,KAAK,CAAC;AACpG,oBAAgBA,QAAO,SAAS,QAAQ,MAAM,kBAAkB,YAAY,UAAU,WAAW,IAAI,CAAC;AACtG,oBAAgBA,QAAO,SAAS,WAAW,MAAM,kBAAkB,aAAa,WAAW,WAAW,IAAI,CAAC;AAC3G,oBAAgBA,QAAO,SAAS,WAAW,MAAM,kBAAkB,aAAa,OAAO,SAAS,IAAI,CAAC;AAErG,WAAOA;AAAA,EACP;AAGD,SAAO,eAAe,QAAQ,WAAW;AAAA,IACxC,YAAY;AAAA,IACZ,KAAK;AAAA,EACN,CAAC;;;ACjKD,IAAAC,YAAiB;AAAA,EAChB,QAAQ;AAAA,EACR,QAAQ;AACT;ACFA,MAAMC,qBAAmB,CAAC,QAAQ,WAAW,aAAa;AACzD,MAAI,QAAQ,OAAO,QAAQ,SAAS;AACpC,MAAI,UAAU,IAAI;AACjB,WAAO;AAAA,EACP;AAED,QAAM,kBAAkB,UAAU;AAClC,MAAI,WAAW;AACf,MAAI,cAAc;AAClB,KAAG;AACF,mBAAe,OAAO,OAAO,UAAU,QAAQ,QAAQ,IAAI,YAAY;AACvE,eAAW,QAAQ;AACnB,YAAQ,OAAO,QAAQ,WAAW,QAAQ;AAAA,EAC5C,SAAU,UAAU;AAEnB,iBAAe,OAAO,OAAO,QAAQ;AACrC,SAAO;AACR;AAEA,MAAMC,mCAAiC,CAAC,QAAQ,QAAQ,SAAS,UAAU;AAC1E,MAAI,WAAW;AACf,MAAI,cAAc;AAClB,KAAG;AACF,UAAM,QAAQ,OAAO,QAAQ,CAAC,MAAM;AACpC,mBAAe,OAAO,OAAO,WAAW,QAAQ,QAAQ,IAAI,SAAS,QAAQ,IAAI,UAAU,QAAQ,SAAS,QAAQ;AACpH,eAAW,QAAQ;AACnB,YAAQ,OAAO,QAAQ,MAAM,QAAQ;AAAA,EACvC,SAAU,UAAU;AAEnB,iBAAe,OAAO,OAAO,QAAQ;AACrC,SAAO;AACR;AAEA,IAAAC,SAAiB;AAAA,EACjB,kBAACF;AAAAA,EACD,gCAACC;AACD;;;;;;;ACrCA,QAAM,iBAAiB;AACvB,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,eAAe;AAErB,QAAM,UAAU,oBAAI,IAAI;AAAA,IACvB,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,GAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,MAAM,IAAI;AAAA,IACX,CAAC,KAAK,MAAQ;AAAA,IACd,CAAC,KAAK,MAAQ;AAAA,EACf,CAAC;AAED,WAASE,UAAS,GAAG;AACpB,UAAM,IAAI,EAAE,CAAC,MAAM;AACnB,UAAM,UAAU,EAAE,CAAC,MAAM;AAEzB,QAAK,KAAK,CAAC,WAAW,EAAE,WAAW,KAAO,EAAE,CAAC,MAAM,OAAO,EAAE,WAAW,GAAI;AAC1E,aAAO,OAAO,aAAa,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AAAA,IACnD;AAED,QAAI,KAAK,SAAS;AACjB,aAAO,OAAO,cAAc,SAAS,EAAE,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,IACxD;AAED,WAAO,QAAQ,IAAI,CAAC,KAAK;AAAA,EACzB;AAED,WAAS,eAAe,MAAM,YAAY;AACzC,UAAM,UAAU,CAAA;AAChB,UAAM,SAAS,WAAW,KAAM,EAAC,MAAM,UAAU;AACjD,QAAI;AAEJ,eAAW,SAAS,QAAQ;AAC3B,YAAM,SAAS,OAAO,KAAK;AAC3B,UAAI,CAAC,OAAO,MAAM,MAAM,GAAG;AAC1B,gBAAQ,KAAK,MAAM;AAAA,MACnB,WAAW,UAAU,MAAM,MAAM,YAAY,GAAI;AACjD,gBAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,cAAc,CAAC,GAAGC,SAAQ,cAAcA,UAASD,UAASC,OAAM,IAAI,SAAS,CAAC;AAAA,MACjH,OAAS;AACN,cAAM,IAAI,MAAM,0CAA0C,KAAK,eAAe,IAAI,IAAI;AAAA,MACtF;AAAA,IACD;AAED,WAAO;AAAA,EACP;AAED,WAAS,WAAW,OAAO;AAC1B,gBAAY,YAAY;AAExB,UAAM,UAAU,CAAA;AAChB,QAAI;AAEJ,YAAQ,UAAU,YAAY,KAAK,KAAK,OAAO,MAAM;AACpD,YAAM,OAAO,QAAQ,CAAC;AAEtB,UAAI,QAAQ,CAAC,GAAG;AACf,cAAM,OAAO,eAAe,MAAM,QAAQ,CAAC,CAAC;AAC5C,gBAAQ,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,MACnC,OAAS;AACN,gBAAQ,KAAK,CAAC,IAAI,CAAC;AAAA,MACnB;AAAA,IACD;AAED,WAAO;AAAA,EACP;AAED,WAAS,WAAWC,QAAOP,SAAQ;AAClC,UAAM,UAAU,CAAA;AAEhB,eAAW,SAASA,SAAQ;AAC3B,iBAAW,SAAS,MAAM,QAAQ;AACjC,gBAAQ,MAAM,CAAC,CAAC,IAAI,MAAM,UAAU,OAAO,MAAM,MAAM,CAAC;AAAA,MACxD;AAAA,IACD;AAED,QAAI,UAAUO;AACd,eAAW,CAAC,WAAWP,OAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AAC1D,UAAI,CAAC,MAAM,QAAQA,OAAM,GAAG;AAC3B;AAAA,MACA;AAED,UAAI,EAAE,aAAa,UAAU;AAC5B,cAAM,IAAI,MAAM,wBAAwB,SAAS,EAAE;AAAA,MACnD;AAED,gBAAUA,QAAO,SAAS,IAAI,QAAQ,SAAS,EAAE,GAAGA,OAAM,IAAI,QAAQ,SAAS;AAAA,IAC/E;AAED,WAAO;AAAA,EACP;AAEDQ,gBAAiB,CAACD,QAAO,cAAc;AACtC,UAAMP,UAAS,CAAA;AACf,UAAM,SAAS,CAAA;AACf,QAAI,QAAQ,CAAA;AAGZ,cAAU,QAAQ,gBAAgB,CAAC,GAAG,iBAAiB,SAAS,OAAO,OAAO,cAAc;AAC3F,UAAI,iBAAiB;AACpB,cAAM,KAAKK,UAAS,eAAe,CAAC;AAAA,MACpC,WAAU,OAAO;AACjB,cAAM,SAAS,MAAM,KAAK,EAAE;AAC5B,gBAAQ,CAAA;AACR,eAAO,KAAKL,QAAO,WAAW,IAAI,SAAS,WAAWO,QAAOP,OAAM,EAAE,MAAM,CAAC;AAC5E,QAAAA,QAAO,KAAK,EAAC,SAAS,QAAQ,WAAW,KAAK,EAAC,CAAC;AAAA,MAChD,WAAU,OAAO;AACjB,YAAIA,QAAO,WAAW,GAAG;AACxB,gBAAM,IAAI,MAAM,8CAA8C;AAAA,QAC9D;AAED,eAAO,KAAK,WAAWO,QAAOP,OAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;AACrD,gBAAQ,CAAA;AACR,QAAAA,QAAO,IAAG;AAAA,MACb,OAAS;AACN,cAAM,KAAK,SAAS;AAAA,MACpB;AAAA,IACH,CAAE;AAED,WAAO,KAAK,MAAM,KAAK,EAAE,CAAC;AAE1B,QAAIA,QAAO,SAAS,GAAG;AACtB,YAAM,aAAa,qCAAqCA,QAAO,MAAM,mBAAmBA,QAAO,WAAW,IAAI,KAAK,GAAG;AACtH,YAAM,IAAI,MAAM,UAAU;AAAA,IAC1B;AAED,WAAO,OAAO,KAAK,EAAE;AAAA;;;ACnItB,MAAMS,eAAad;AACnB,MAAM,EAAC,QAAQe,eAAa,QAAQC,cAAW,IAAIb;AACnD,MAAM;AAAA,EACN,kBAACI;AAAAA,EACD,gCAACC;AACD,IAAIS;AAEJ,MAAM,EAACC,SAAAA,UAAO,IAAI;AAGlB,MAAMC,iBAAe;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,MAAMd,WAAS,uBAAO,OAAO,IAAI;AAEjC,MAAMe,iBAAe,CAAC,QAAQ,UAAU,OAAO;AAC9C,MAAI,QAAQ,SAAS,EAAE,OAAO,UAAU,QAAQ,KAAK,KAAK,QAAQ,SAAS,KAAK,QAAQ,SAAS,IAAI;AACpG,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACrE;AAGD,QAAM,aAAaL,gBAAcA,cAAY,QAAQ;AACrD,SAAO,QAAQ,QAAQ,UAAU,SAAY,aAAa,QAAQ;AACnE;AAEA,IAAA,eAAA,MAAM,WAAW;AAAA,EAChB,YAAY,SAAS;AAEpB,WAAOM,eAAa,OAAO;AAAA,EAC3B;AACF;AAEA,MAAMA,iBAAe,aAAW;AAC/B,QAAMT,SAAQ,CAAA;AACdQ,iBAAaR,QAAO,OAAO;AAE3B,EAAAA,OAAM,WAAW,IAAI,eAAeU,WAASV,OAAM,UAAU,GAAG,UAAU;AAE1E,SAAO,eAAeA,QAAOW,QAAM,SAAS;AAC5C,SAAO,eAAeX,OAAM,UAAUA,MAAK;AAE3C,EAAAA,OAAM,SAAS,cAAc,MAAM;AAClC,UAAM,IAAI,MAAM,0EAA0E;AAAA,EAC5F;AAEC,EAAAA,OAAM,SAAS,WAAWY;AAE1B,SAAOZ,OAAM;AACd;AAEA,SAASW,QAAM,SAAS;AACvB,SAAOF,eAAa,OAAO;AAC5B;AAEA,WAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQP,YAAU,GAAG;AAC5DT,WAAO,SAAS,IAAI;AAAA,IACnB,MAAM;AACL,YAAM,UAAUoB,gBAAc,MAAMC,eAAa,MAAM,MAAM,MAAM,OAAO,KAAK,OAAO,GAAG,KAAK,QAAQ;AACtG,aAAO,eAAe,MAAM,WAAW,EAAC,OAAO,QAAO,CAAC;AACvD,aAAO;AAAA,IACP;AAAA,EACH;AACA;AAEArB,SAAO,UAAU;AAAA,EAChB,MAAM;AACL,UAAM,UAAUoB,gBAAc,MAAM,KAAK,SAAS,IAAI;AACtD,WAAO,eAAe,MAAM,WAAW,EAAC,OAAO,QAAO,CAAC;AACvD,WAAO;AAAA,EACP;AACF;AAEA,MAAME,eAAa,CAAC,OAAO,OAAO,WAAW,OAAO,OAAO,OAAO,QAAQ,SAAS;AAEnF,WAAW,SAASA,cAAY;AAC/BtB,WAAO,KAAK,IAAI;AAAA,IACf,MAAM;AACL,YAAM,EAAC,MAAK,IAAI;AAChB,aAAO,YAAa,YAAY;AAC/B,cAAM,SAASqB,eAAaZ,aAAW,MAAMK,eAAa,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,UAAU,GAAGL,aAAW,MAAM,OAAO,KAAK,OAAO;AAC7H,eAAOW,gBAAc,MAAM,QAAQ,KAAK,QAAQ;AAAA,MACpD;AAAA,IACG;AAAA,EACH;AACA;AAEA,WAAW,SAASE,cAAY;AAC/B,QAAM,UAAU,OAAO,MAAM,CAAC,EAAE,YAAW,IAAK,MAAM,MAAM,CAAC;AAC7DtB,WAAO,OAAO,IAAI;AAAA,IACjB,MAAM;AACL,YAAM,EAAC,MAAK,IAAI;AAChB,aAAO,YAAa,YAAY;AAC/B,cAAM,SAASqB,eAAaZ,aAAW,QAAQK,eAAa,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,UAAU,GAAGL,aAAW,QAAQ,OAAO,KAAK,OAAO;AACjI,eAAOW,gBAAc,MAAM,QAAQ,KAAK,QAAQ;AAAA,MACpD;AAAA,IACG;AAAA,EACH;AACA;AAEA,MAAMG,UAAQ,OAAO,iBAAiB,MAAM;GAAI;AAAA,EAC/C,GAAGvB;AAAAA,EACH,OAAO;AAAA,IACN,YAAY;AAAA,IACZ,MAAM;AACL,aAAO,KAAK,WAAW;AAAA,IACvB;AAAA,IACD,IAAI,OAAO;AACV,WAAK,WAAW,QAAQ;AAAA,IACxB;AAAA,EACD;AACF,CAAC;AAED,MAAMqB,iBAAe,CAAC,MAAM,OAAO,WAAW;AAC7C,MAAI;AACJ,MAAI;AACJ,MAAI,WAAW,QAAW;AACzB,cAAU;AACV,eAAW;AAAA,EACb,OAAQ;AACN,cAAU,OAAO,UAAU;AAC3B,eAAW,QAAQ,OAAO;AAAA,EAC1B;AAED,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA;AAEA,MAAMD,kBAAgB,CAACI,OAAM,SAAS,aAAa;AAClD,QAAM,UAAU,IAAI,eAAe;AAClC,QAAIX,UAAQ,WAAW,CAAC,CAAC,KAAKA,UAAQ,WAAW,CAAC,EAAE,GAAG,GAAG;AAEzD,aAAOY,aAAW,SAASR,WAAS,SAAS,GAAG,UAAU,CAAC;AAAA,IAC3D;AAID,WAAOQ,aAAW,SAAU,WAAW,WAAW,IAAM,KAAK,WAAW,CAAC,IAAK,WAAW,KAAK,GAAG,CAAC;AAAA,EACpG;AAIC,SAAO,eAAe,SAASF,OAAK;AAEpC,UAAQ,aAAaC;AACrB,UAAQ,UAAU;AAClB,UAAQ,WAAW;AAEnB,SAAO;AACR;AAEA,MAAMC,eAAa,CAACD,OAAM,WAAW;AACpC,MAAIA,MAAK,SAAS,KAAK,CAAC,QAAQ;AAC/B,WAAOA,MAAK,WAAW,KAAK;AAAA,EAC5B;AAED,MAAI,SAASA,MAAK;AAElB,MAAI,WAAW,QAAW;AACzB,WAAO;AAAA,EACP;AAED,QAAM,EAAC,SAAS,SAAQ,IAAI;AAC5B,MAAI,OAAO,QAAQ,MAAQ,MAAM,IAAI;AACpC,WAAO,WAAW,QAAW;AAI5B,eAAStB,mBAAiB,QAAQ,OAAO,OAAO,OAAO,IAAI;AAE3D,eAAS,OAAO;AAAA,IAChB;AAAA,EACD;AAKD,QAAM,UAAU,OAAO,QAAQ,IAAI;AACnC,MAAI,YAAY,IAAI;AACnB,aAASC,iCAA+B,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC1E;AAED,SAAO,UAAU,SAAS;AAC3B;AAEA,IAAIuB;AACJ,MAAMT,aAAW,CAACV,WAAU,YAAY;AACvC,QAAM,CAAC,WAAW,IAAI;AAEtB,MAAI,CAACM,UAAQ,WAAW,KAAK,CAACA,UAAQ,YAAY,GAAG,GAAG;AAGvD,WAAO,QAAQ,KAAK,GAAG;AAAA,EACvB;AAED,QAAM,aAAa,QAAQ,MAAM,CAAC;AAClC,QAAM,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;AAEjC,WAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC5C,UAAM;AAAA,MACL,OAAO,WAAW,IAAI,CAAC,CAAC,EAAE,QAAQ,WAAW,MAAM;AAAA,MACnD,OAAO,YAAY,IAAI,CAAC,CAAC;AAAA,IAC5B;AAAA,EACE;AAED,MAAIa,eAAa,QAAW;AAC3BA,iBAAWC,mBAAA;AAAA,EACX;AAED,SAAOD,WAASnB,QAAO,MAAM,KAAK,EAAE,CAAC;AACtC;AAEA,OAAO,iBAAiBW,QAAM,WAAWlB,QAAM;AAE/C,MAAMO,UAAQW,QAAK;AACnBX,QAAM,gBAAgBG;AACtBH,QAAM,SAASW,QAAM,EAAC,OAAOP,gBAAcA,cAAY,QAAQ,EAAC,CAAC;AACjEJ,QAAM,OAAO,gBAAgBI;AAE7B,IAAA,SAAiBJ;;ACnOjB,MAAA,SAAe,OAAO,UAAU,SAAS,KAAK,OAAO,YAAY,cAAc,UAAU,CAAC,MAAM;;;;;;ACDhG,MAAe,wBAAA,CAAA;;;;;;;;;;;;ACAd,KAAC,SAAU,MAAM,SAAS;AACO;AAEhC,eAAiB,UAAU;MAS3B;AAAA,IACD,GAACqB,kBAAM,WAAY;AAOnB,UAAI,WAAW,YAAa,SAAUC,OAAMC,aAAW;AAEnD,YAAIC;AAGJ,YAAI,OAAO,WAAW,eAAe,OAAO,QAAQ;AAChD,UAAAA,UAAS,OAAO;AAAA,QACnB;AAGD,YAAI,OAAO,SAAS,eAAe,KAAK,QAAQ;AAC5C,UAAAA,UAAS,KAAK;AAAA,QACjB;AAGD,YAAI,OAAO,eAAe,eAAe,WAAW,QAAQ;AACxD,UAAAA,UAAS,WAAW;AAAA,QACvB;AAGD,YAAI,CAACA,WAAU,OAAO,WAAW,eAAe,OAAO,UAAU;AAC7D,UAAAA,UAAS,OAAO;AAAA,QACnB;AAGD,YAAI,CAACA,WAAU,OAAOC,qBAAW,eAAeA,iBAAO,QAAQ;AAC3D,UAAAD,UAASC,iBAAO;AAAA,QACnB;AAGD,YAAI,CAACD,WAAU,OAAOE,oBAAY,YAAY;AAC1C,cAAI;AACA,YAAAF,UAAS;AAAA,UACtB,SAAkB,KAAK;AAAA,UAAE;AAAA,QACnB;AAOD,YAAI,wBAAwB,WAAY;AACpC,cAAIA,SAAQ;AAER,gBAAI,OAAOA,QAAO,oBAAoB,YAAY;AAC9C,kBAAI;AACA,uBAAOA,QAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC;AAAA,cACxE,SAA0B,KAAK;AAAA,cAAE;AAAA,YACnB;AAGD,gBAAI,OAAOA,QAAO,gBAAgB,YAAY;AAC1C,kBAAI;AACA,uBAAOA,QAAO,YAAY,CAAC,EAAE,YAAW;AAAA,cAC7D,SAA0B,KAAK;AAAA,cAAE;AAAA,YACnB;AAAA,UACJ;AAED,gBAAM,IAAI,MAAM,qEAAqE;AAAA,QAC9F;AAMK,YAAI,SAAS,OAAO,UAAW,WAAY;AACvC,mBAAS,IAAI;AAAA,UAAE;AAEf,iBAAO,SAAU,KAAK;AAClB,gBAAI;AAEJ,cAAE,YAAY;AAEd,sBAAU,IAAI;AAEd,cAAE,YAAY;AAEd,mBAAO;AAAA,UACpB;AAAA,QACM,EAAA;AAKD,YAAI,IAAI,CAAA;AAKR,YAAI,QAAQ,EAAE,MAAM;AAKpB,YAAI,OAAO,MAAM,OAAQ,WAAY;AAGjC,iBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAmBH,QAAQ,SAAU,WAAW;AAEzB,kBAAI,UAAU,OAAO,IAAI;AAGzB,kBAAI,WAAW;AACX,wBAAQ,MAAM,SAAS;AAAA,cAC1B;AAGD,kBAAI,CAAC,QAAQ,eAAe,MAAM,KAAK,KAAK,SAAS,QAAQ,MAAM;AAC/D,wBAAQ,OAAO,WAAY;AACvB,0BAAQ,OAAO,KAAK,MAAM,MAAM,SAAS;AAAA,gBAClE;AAAA,cACkB;AAGD,sBAAQ,KAAK,YAAY;AAGzB,sBAAQ,SAAS;AAEjB,qBAAO;AAAA,YACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAcD,QAAQ,WAAY;AAChB,kBAAI,WAAW,KAAK;AACpB,uBAAS,KAAK,MAAM,UAAU,SAAS;AAEvC,qBAAO;AAAA,YACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAcD,MAAM,WAAY;AAAA,YACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAaD,OAAO,SAAU,YAAY;AACzB,uBAAS,gBAAgB,YAAY;AACjC,oBAAI,WAAW,eAAe,YAAY,GAAG;AACzC,uBAAK,YAAY,IAAI,WAAW,YAAY;AAAA,gBAC/C;AAAA,cACJ;AAGD,kBAAI,WAAW,eAAe,UAAU,GAAG;AACvC,qBAAK,WAAW,WAAW;AAAA,cAC9B;AAAA,YACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWD,OAAO,WAAY;AACf,qBAAO,KAAK,KAAK,UAAU,OAAO,IAAI;AAAA,YACzC;AAAA,UACd;AAAA,QACM,EAAA;AAQD,YAAI,YAAY,MAAM,YAAY,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAa1C,MAAM,SAAU,OAAO,UAAU;AAC7B,oBAAQ,KAAK,QAAQ,SAAS,CAAA;AAE9B,gBAAI,YAAYD,aAAW;AACvB,mBAAK,WAAW;AAAA,YACjC,OAAoB;AACH,mBAAK,WAAW,MAAM,SAAS;AAAA,YAClC;AAAA,UACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,UAAU,SAAU,SAAS;AACzB,oBAAQ,WAAW,KAAK,UAAU,IAAI;AAAA,UACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAaD,QAAQ,SAAU,WAAW;AAEzB,gBAAI,YAAY,KAAK;AACrB,gBAAI,YAAY,UAAU;AAC1B,gBAAI,eAAe,KAAK;AACxB,gBAAI,eAAe,UAAU;AAG7B,iBAAK,MAAK;AAGV,gBAAI,eAAe,GAAG;AAElB,uBAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACnC,oBAAI,WAAY,UAAU,MAAM,CAAC,MAAO,KAAM,IAAI,IAAK,IAAM;AAC7D,0BAAW,eAAe,MAAO,CAAC,KAAK,YAAa,MAAO,eAAe,KAAK,IAAK;AAAA,cACvF;AAAA,YAClB,OAAoB;AAEH,uBAAS,IAAI,GAAG,IAAI,cAAc,KAAK,GAAG;AACtC,0BAAW,eAAe,MAAO,CAAC,IAAI,UAAU,MAAM,CAAC;AAAA,cAC1D;AAAA,YACJ;AACD,iBAAK,YAAY;AAGjB,mBAAO;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASD,OAAO,WAAY;AAEf,gBAAI,QAAQ,KAAK;AACjB,gBAAI,WAAW,KAAK;AAGpB,kBAAM,aAAa,CAAC,KAAK,cAAe,KAAM,WAAW,IAAK;AAC9D,kBAAM,SAASD,MAAK,KAAK,WAAW,CAAC;AAAA,UACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWD,OAAO,WAAY;AACf,gBAAI,QAAQ,KAAK,MAAM,KAAK,IAAI;AAChC,kBAAM,QAAQ,KAAK,MAAM,MAAM,CAAC;AAEhC,mBAAO;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,QAAQ,SAAU,QAAQ;AACtB,gBAAI,QAAQ,CAAA;AAEZ,qBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,GAAG;AAChC,oBAAM,KAAK,sBAAqB,CAAE;AAAA,YACrC;AAED,mBAAO,IAAI,UAAU,KAAK,OAAO,MAAM;AAAA,UAC1C;AAAA,QACV,CAAM;AAKD,YAAI,QAAQ,EAAE,MAAM;AAKpB,YAAI,MAAM,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAclB,WAAW,SAAU,WAAW;AAE5B,gBAAI,QAAQ,UAAU;AACtB,gBAAI,WAAW,UAAU;AAGzB,gBAAI,WAAW,CAAA;AACf,qBAAS,IAAI,GAAG,IAAI,UAAU,KAAK;AAC/B,kBAAI,OAAQ,MAAM,MAAM,CAAC,MAAO,KAAM,IAAI,IAAK,IAAM;AACrD,uBAAS,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;AACvC,uBAAS,MAAM,OAAO,IAAM,SAAS,EAAE,CAAC;AAAA,YAC3C;AAED,mBAAO,SAAS,KAAK,EAAE;AAAA,UAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,OAAO,SAAU,QAAQ;AAErB,gBAAI,eAAe,OAAO;AAG1B,gBAAI,QAAQ,CAAA;AACZ,qBAAS,IAAI,GAAG,IAAI,cAAc,KAAK,GAAG;AACtC,oBAAM,MAAM,CAAC,KAAK,SAAS,OAAO,OAAO,GAAG,CAAC,GAAG,EAAE,KAAM,KAAM,IAAI,IAAK;AAAA,YAC1E;AAED,mBAAO,IAAI,UAAU,KAAK,OAAO,eAAe,CAAC;AAAA,UACpD;AAAA,QACV;AAKK,YAAI,SAAS,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcxB,WAAW,SAAU,WAAW;AAE5B,gBAAI,QAAQ,UAAU;AACtB,gBAAI,WAAW,UAAU;AAGzB,gBAAI,cAAc,CAAA;AAClB,qBAAS,IAAI,GAAG,IAAI,UAAU,KAAK;AAC/B,kBAAI,OAAQ,MAAM,MAAM,CAAC,MAAO,KAAM,IAAI,IAAK,IAAM;AACrD,0BAAY,KAAK,OAAO,aAAa,IAAI,CAAC;AAAA,YAC7C;AAED,mBAAO,YAAY,KAAK,EAAE;AAAA,UAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,OAAO,SAAU,WAAW;AAExB,gBAAI,kBAAkB,UAAU;AAGhC,gBAAI,QAAQ,CAAA;AACZ,qBAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACtC,oBAAM,MAAM,CAAC,MAAM,UAAU,WAAW,CAAC,IAAI,QAAU,KAAM,IAAI,IAAK;AAAA,YACzE;AAED,mBAAO,IAAI,UAAU,KAAK,OAAO,eAAe;AAAA,UACnD;AAAA,QACV;AAKK,YAAI,OAAO,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcpB,WAAW,SAAU,WAAW;AAC5B,gBAAI;AACA,qBAAO,mBAAmB,OAAO,OAAO,UAAU,SAAS,CAAC,CAAC;AAAA,YAChE,SAAQ,GAAG;AACR,oBAAM,IAAI,MAAM,sBAAsB;AAAA,YACzC;AAAA,UACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,OAAO,SAAU,SAAS;AACtB,mBAAO,OAAO,MAAM,SAAS,mBAAmB,OAAO,CAAC,CAAC;AAAA,UAC5D;AAAA,QACV;AASK,YAAI,yBAAyB,MAAM,yBAAyB,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQpE,OAAO,WAAY;AAEf,iBAAK,QAAQ,IAAI,UAAU,KAAI;AAC/B,iBAAK,cAAc;AAAA,UACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAYD,SAAS,SAAU,MAAM;AAErB,gBAAI,OAAO,QAAQ,UAAU;AACzB,qBAAO,KAAK,MAAM,IAAI;AAAA,YACzB;AAGD,iBAAK,MAAM,OAAO,IAAI;AACtB,iBAAK,eAAe,KAAK;AAAA,UAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBD,UAAU,SAAU,SAAS;AACzB,gBAAI;AAGJ,gBAAI,OAAO,KAAK;AAChB,gBAAI,YAAY,KAAK;AACrB,gBAAI,eAAe,KAAK;AACxB,gBAAI,YAAY,KAAK;AACrB,gBAAI,iBAAiB,YAAY;AAGjC,gBAAI,eAAe,eAAe;AAClC,gBAAI,SAAS;AAET,6BAAeA,MAAK,KAAK,YAAY;AAAA,YACtD,OAAoB;AAGH,6BAAeA,MAAK,KAAK,eAAe,KAAK,KAAK,gBAAgB,CAAC;AAAA,YACtE;AAGD,gBAAI,cAAc,eAAe;AAGjC,gBAAI,cAAcA,MAAK,IAAI,cAAc,GAAG,YAAY;AAGxD,gBAAI,aAAa;AACb,uBAAS,SAAS,GAAG,SAAS,aAAa,UAAU,WAAW;AAE5D,qBAAK,gBAAgB,WAAW,MAAM;AAAA,cACzC;AAGD,+BAAiB,UAAU,OAAO,GAAG,WAAW;AAChD,mBAAK,YAAY;AAAA,YACpB;AAGD,mBAAO,IAAI,UAAU,KAAK,gBAAgB,WAAW;AAAA,UACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWD,OAAO,WAAY;AACf,gBAAI,QAAQ,KAAK,MAAM,KAAK,IAAI;AAChC,kBAAM,QAAQ,KAAK,MAAM,MAAK;AAE9B,mBAAO;AAAA,UACV;AAAA,UAED,gBAAgB;AAAA,QACzB,CAAM;AAOY,cAAM,SAAS,uBAAuB,OAAO;AAAA;AAAA;AAAA;AAAA,UAItD,KAAK,KAAK,OAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAWlB,MAAM,SAAU,KAAK;AAEjB,iBAAK,MAAM,KAAK,IAAI,OAAO,GAAG;AAG9B,iBAAK,MAAK;AAAA,UACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASD,OAAO,WAAY;AAEf,mCAAuB,MAAM,KAAK,IAAI;AAGtC,iBAAK,SAAQ;AAAA,UAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcD,QAAQ,SAAU,eAAe;AAE7B,iBAAK,QAAQ,aAAa;AAG1B,iBAAK,SAAQ;AAGb,mBAAO;AAAA,UACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBD,UAAU,SAAU,eAAe;AAE/B,gBAAI,eAAe;AACf,mBAAK,QAAQ,aAAa;AAAA,YAC7B;AAGD,gBAAI,OAAO,KAAK;AAEhB,mBAAO;AAAA,UACV;AAAA,UAED,WAAW,MAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAef,eAAe,SAAU,QAAQ;AAC7B,mBAAO,SAAU,SAAS,KAAK;AAC3B,qBAAO,IAAI,OAAO,KAAK,GAAG,EAAE,SAAS,OAAO;AAAA,YAC7D;AAAA,UACU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeD,mBAAmB,SAAU,QAAQ;AACjC,mBAAO,SAAU,SAAS,KAAK;AAC3B,qBAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,SAAS,OAAO;AAAA,YAC1E;AAAA,UACU;AAAA,QACV,CAAM;AAKD,YAAI,SAAS,EAAE,OAAO;AAEtB,eAAO;AAAA,MACZ,EAAG,IAAI;AAGN,aAAO;AAAA,IAER,CAAC;AAAA;;;;ACtyBA,GAAC,SAAU,MAAM,SAAS;AACO;AAEhC,uBAA2B,QAAQlC,YAAiB,CAAA;AAAA,IASpD;AAAA,EACF,GAAEiC,kBAAM,SAAU,UAAU;AAE3B,KAAC,SAAUC,OAAM;AAEb,UAAI,IAAI;AACR,UAAI,QAAQ,EAAE;AACd,UAAI,YAAY,MAAM;AACtB,UAAI,SAAS,MAAM;AACnB,UAAI,SAAS,EAAE;AAGf,UAAI,IAAI,CAAA;AACR,UAAI,IAAI,CAAA;AAGR,OAAC,WAAY;AACT,iBAAS,QAAQK,IAAG;AAChB,cAAI,QAAQL,MAAK,KAAKK,EAAC;AACvB,mBAAS,SAAS,GAAG,UAAU,OAAO,UAAU;AAC5C,gBAAI,EAAEA,KAAI,SAAS;AACf,qBAAO;AAAA,YACV;AAAA,UACJ;AAED,iBAAO;AAAA,QACV;AAED,iBAAS,kBAAkBA,IAAG;AAC1B,kBAASA,MAAKA,KAAI,MAAM,aAAe;AAAA,QAC1C;AAED,YAAI,IAAI;AACR,YAAI,SAAS;AACb,eAAO,SAAS,IAAI;AAChB,cAAI,QAAQ,CAAC,GAAG;AACZ,gBAAI,SAAS,GAAG;AACZ,gBAAE,MAAM,IAAI,kBAAkBL,MAAK,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,YACnD;AACD,cAAE,MAAM,IAAI,kBAAkBA,MAAK,IAAI,GAAG,IAAI,CAAC,CAAC;AAEhD;AAAA,UACH;AAED;AAAA,QACH;AAAA,MACV;AAGK,UAAI,IAAI,CAAA;AAKR,UAAI,SAAS,OAAO,SAAS,OAAO,OAAO;AAAA,QACvC,UAAU,WAAY;AAClB,eAAK,QAAQ,IAAI,UAAU,KAAK,EAAE,MAAM,CAAC,CAAC;AAAA,QAC7C;AAAA,QAED,iBAAiB,SAAU,GAAG,QAAQ;AAElC,cAAIM,KAAI,KAAK,MAAM;AAGnB,cAAI,IAAIA,GAAE,CAAC;AACX,cAAI,IAAIA,GAAE,CAAC;AACX,cAAI,IAAIA,GAAE,CAAC;AACX,cAAI,IAAIA,GAAE,CAAC;AACX,cAAI,IAAIA,GAAE,CAAC;AACX,cAAI,IAAIA,GAAE,CAAC;AACX,cAAI,IAAIA,GAAE,CAAC;AACX,cAAI,IAAIA,GAAE,CAAC;AAGX,mBAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AACzB,gBAAI,IAAI,IAAI;AACR,gBAAE,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI;AAAA,YAC5C,OAAwB;AACH,kBAAI,UAAU,EAAE,IAAI,EAAE;AACtB,kBAAI,UAAY,WAAW,KAAO,YAAY,MAC9B,WAAW,KAAO,YAAY,MAC9B,YAAY;AAE5B,kBAAI,UAAU,EAAE,IAAI,CAAC;AACrB,kBAAI,UAAY,WAAW,KAAO,YAAY,OAC9B,WAAW,KAAO,YAAY,MAC9B,YAAY;AAE5B,gBAAE,CAAC,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,IAAI,EAAE;AAAA,YAC/C;AAED,gBAAI,KAAO,IAAI,IAAM,CAAC,IAAI;AAC1B,gBAAI,MAAO,IAAI,IAAM,IAAI,IAAM,IAAI;AAEnC,gBAAI,UAAW,KAAK,KAAO,MAAM,MAAQ,KAAK,KAAO,MAAM,OAAS,KAAK,KAAO,MAAM;AACtF,gBAAI,UAAW,KAAK,KAAO,MAAM,MAAQ,KAAK,KAAO,MAAM,OAAS,KAAK,IAAO,MAAM;AAEtF,gBAAI,KAAK,IAAI,SAAS,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AACrC,gBAAI,KAAK,SAAS;AAElB,gBAAI;AACJ,gBAAI;AACJ,gBAAI;AACJ,gBAAK,IAAI,KAAM;AACf,gBAAI;AACJ,gBAAI;AACJ,gBAAI;AACJ,gBAAK,KAAK,KAAM;AAAA,UACnB;AAGD,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,IAAK;AACpB,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,IAAK;AACpB,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,IAAK;AACpB,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,IAAK;AACpB,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,IAAK;AACpB,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,IAAK;AACpB,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,IAAK;AACpB,UAAAA,GAAE,CAAC,IAAKA,GAAE,CAAC,IAAI,IAAK;AAAA,QACvB;AAAA,QAED,aAAa,WAAY;AAErB,cAAI,OAAO,KAAK;AAChB,cAAI,YAAY,KAAK;AAErB,cAAI,aAAa,KAAK,cAAc;AACpC,cAAI,YAAY,KAAK,WAAW;AAGhC,oBAAU,cAAc,CAAC,KAAK,OAAS,KAAK,YAAY;AACxD,qBAAa,YAAY,OAAQ,KAAM,KAAK,EAAE,IAAIN,MAAK,MAAM,aAAa,UAAW;AACrF,qBAAa,YAAY,OAAQ,KAAM,KAAK,EAAE,IAAI;AAClD,eAAK,WAAW,UAAU,SAAS;AAGnC,eAAK,SAAQ;AAGb,iBAAO,KAAK;AAAA,QACf;AAAA,QAED,OAAO,WAAY;AACf,cAAI,QAAQ,OAAO,MAAM,KAAK,IAAI;AAClC,gBAAM,QAAQ,KAAK,MAAM,MAAK;AAE9B,iBAAO;AAAA,QACV;AAAA,MACV,CAAM;AAgBD,QAAE,SAAS,OAAO,cAAc,MAAM;AAgBtC,QAAE,aAAa,OAAO,kBAAkB,MAAM;AAAA,IACjD,GAAC,IAAI;AAGN,WAAO,SAAS;AAAA,EAEjB,CAAC;;;;;;ACtMA,GAAC,SAAU,MAAM,SAAS;AACO;AAEhC,uBAA2B,QAAQlC,YAAiB,CAAA;AAAA,IASpD;AAAA,EACF,GAAEiC,kBAAM,SAAU,UAAU;AAE3B,KAAC,WAAY;AAET,UAAI,IAAI;AACR,UAAI,QAAQ,EAAE;AACd,UAAI,YAAY,MAAM;AACtB,UAAI,QAAQ,EAAE;AAKD,YAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAcxB,WAAW,SAAU,WAAW;AAE5B,cAAI,QAAQ,UAAU;AACtB,cAAI,WAAW,UAAU;AACzB,cAAI,MAAM,KAAK;AAGf,oBAAU,MAAK;AAGf,cAAI,cAAc,CAAA;AAClB,mBAAS,IAAI,GAAG,IAAI,UAAU,KAAK,GAAG;AAClC,gBAAI,QAAS,MAAM,MAAM,CAAC,MAAa,KAAM,IAAI,IAAK,IAAY;AAClE,gBAAI,QAAS,MAAO,IAAI,MAAO,CAAC,MAAO,MAAO,IAAI,KAAK,IAAK,IAAM;AAClE,gBAAI,QAAS,MAAO,IAAI,MAAO,CAAC,MAAO,MAAO,IAAI,KAAK,IAAK,IAAM;AAElE,gBAAI,UAAW,SAAS,KAAO,SAAS,IAAK;AAE7C,qBAAS,IAAI,GAAI,IAAI,KAAO,IAAI,IAAI,OAAO,UAAW,KAAK;AACvD,0BAAY,KAAK,IAAI,OAAQ,YAAa,KAAK,IAAI,KAAO,EAAI,CAAC;AAAA,YAClE;AAAA,UACJ;AAGD,cAAI,cAAc,IAAI,OAAO,EAAE;AAC/B,cAAI,aAAa;AACb,mBAAO,YAAY,SAAS,GAAG;AAC3B,0BAAY,KAAK,WAAW;AAAA,YAC/B;AAAA,UACJ;AAED,iBAAO,YAAY,KAAK,EAAE;AAAA,QAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAeD,OAAO,SAAU,WAAW;AAExB,cAAI,kBAAkB,UAAU;AAChC,cAAI,MAAM,KAAK;AACf,cAAI,aAAa,KAAK;AAEtB,cAAI,CAAC,YAAY;AACT,yBAAa,KAAK,cAAc;AAChC,qBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,yBAAW,IAAI,WAAW,CAAC,CAAC,IAAI;AAAA,YACnC;AAAA,UACR;AAGD,cAAI,cAAc,IAAI,OAAO,EAAE;AAC/B,cAAI,aAAa;AACb,gBAAI,eAAe,UAAU,QAAQ,WAAW;AAChD,gBAAI,iBAAiB,IAAI;AACrB,gCAAkB;AAAA,YACrB;AAAA,UACJ;AAGD,iBAAO,UAAU,WAAW,iBAAiB,UAAU;AAAA,QAE1D;AAAA,QAED,MAAM;AAAA,MACR;AAEF,eAAS,UAAU,WAAW,iBAAiB,YAAY;AACzD,YAAI,QAAQ,CAAA;AACZ,YAAI,SAAS;AACb,iBAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACtC,cAAI,IAAI,GAAG;AACP,gBAAI,QAAQ,WAAW,UAAU,WAAW,IAAI,CAAC,CAAC,KAAO,IAAI,IAAK;AAClE,gBAAI,QAAQ,WAAW,UAAU,WAAW,CAAC,CAAC,MAAO,IAAK,IAAI,IAAK;AACnE,gBAAI,eAAe,QAAQ;AAC3B,kBAAM,WAAW,CAAC,KAAK,gBAAiB,KAAM,SAAS,IAAK;AAC5D;AAAA,UACH;AAAA,QACJ;AACD,eAAO,UAAU,OAAO,OAAO,MAAM;AAAA,MACtC;AAAA,IACN;AAGC,WAAO,SAAS,IAAI;AAAA,EAErB,CAAC;;;;ACnIM,MAAM,YAAY;AAAA,EAGrB,cAAc;AAFd;AAUA,yCAAgB,eAAgB,SAAc;AACpC,YAAA,aAAa,OAAO,OAAO;AAC1B,aAAA,OAAO,UAAU,UAAU;AAAA,IAAA;AAGtC,8CAAqB,CAAC,OAAO,OAAO;AAG1B,YAAA,eAAoB,MAAM,KAAK,mBAAK,SAAQ,gBAAgB,IAAI,WAAW,IAAI,CAAC,CAAC;AAEvF,YAAM,MAAM,KAAK,OAAO,aAAa,GAAG,YAAY,CAAC;AAC9C,aAAA;AAAA,IAAA;AAlBH,QAAA;AACA,yBAAK,SAAU;AAAA,IAAA,QACX;AACC,yBAAA,SAAU,QAAQ,QAAQ;AAAA,IACnC;AAAA,EACJ;AAgBJ;AAxBI;ACCJ,MAAM,YAAY;AAAA,EAAlB;AACI,6CAAoB,CAAC,WAA4B;AAC7C,YAAM,SAAqB,CAAA;AAC3B,aAAO,KAAK,MAAM,EACb,OAAO,CAAK,MAAA,OAAO,OAAO,CAAC,MAAM,WAAW,EAC5C,IAAI,CAAK,MAAA;AACN,eAAO,mBAAmB,CAAC,CAAC,IAAI,mBAAmB,OAAO,CAAC,CAAC;AAAA,MAAA,CAC/D;AACE,aAAA;AAAA,IAAA;AAGX,6CAAoB,CAAC,WAA+B;AAChD,aAAO,OAAO,KAAK,MAAM,EACpB,OAAO,CAAA,MAAK,OAAO,OAAO,CAAC,MAAM,WAAW,EAC5C,IAAI,CAAK,MAAA;AACN,YAAI,MAAM,QAAQ,OAAO,CAAC,CAAC,GAAG;AACnB,iBAAA,mBAAmB,CAAC,IAAI,MAAM,mBAAmB,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,QAAA,OACxE;AACH,iBAAO,mBAAmB,CAAC,IAAI,MAAM,mBAAmB,OAAO,CAAC,CAAC;AAAA,QACrE;AAAA,MAAA,CACH,EACA,KAAK,GAAG;AAAA,IAAA;AAGjB,2CAAkB,CAAC,UAA8B;AAC7C,UAAI,SAAqB,CAAA;AACnB,YAAA,MAAM,MAAM,MAAM,GAAG;AACvB,UAAA,IAAI,UAAU,GAAG;AACjB,cAAM,OAAO,IAAI,CAAC,EAAE,MAAM,GAAG;AAC7B,cAAM,UAAsB,CAAA;AACxB,YAAA;AACC,aAAA,QAAQ,SAAU,GAAG;AAChB,gBAAA,EAAE,MAAM,GAAG;AACjB,cAAI,IAAI,UAAU;AAAG,oBAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,QAAA,CAC/C;AACQ,iBAAA,KAAK,kBAAkB,OAAO;AAAA,MAC3C;AACO,aAAA;AAAA,IAAA;AAGX,0CAAiB,MAAM;AACnB,aAAO,KAAK,gBAAgB,OAAO,SAAS,IAAI;AAAA,IAAA;AAAA;AAExD;AC9CY,IAAA,iDAAAQ,kCAAL;AACNA,gCAAA,MAAO,IAAA;AACPA,gCAAA,UAAW,IAAA;AACXA,gCAAA,OAAQ,IAAA;AAHGA,SAAAA;AAAA,GAAA,gCAAA,CAAA,CAAA;AAMA,IAAA,iDAAAC,kCAAL;AACNA,gCAAA,OAAQ,IAAA;AACRA,gCAAA,UAAW,IAAA;AACXA,gCAAA,WAAY,IAAA;AAHDA,SAAAA;AAAA,GAAA,gCAAA,CAAA,CAAA;AA8BA,IAAA,oCAAAC,qBAAL;AACNA,mBAAA,oBAAqB,IAAA;AACrBA,mBAAA,oBAAqB,IAAA;AACrBA,mBAAA,eAAgB,IAAA;AAHLA,SAAAA;AAAA,GAAA,mBAAA,CAAA,CAAA;AAmDA,IAAA,2CAAAC,4BAAL;AACNA,0BAAA,iBAAkB,IAAA;AAClBA,0BAAA,WAAY,IAAA;AACZA,0BAAA,iBAAkB,IAAA;AAClBA,0BAAA,QAAS,IAAA;AACTA,0BAAA,oBAAqB,IAAA;AACrBA,0BAAA,OAAQ,IAAA;AACRA,0BAAA,KAAM,IAAA;AACNA,0BAAA,mBAAoB,IAAA;AACpBA,0BAAA,UAAW,IAAA;AACXA,0BAAA,cAAe,IAAA;AACfA,0BAAA,SAAU,IAAA;AACVA,0BAAA,uBAAwB,IAAA;AAZbA,SAAAA;AAAA,GAAA,0BAAA,CAAA,CAAA;AC1FL,MAAM,0BAA0B,MAAM;AAC7C;AACA,kBAAkB,UAAU,OAAO;AACnC,SAAS,iBAAiB,KAAK;AAC3B,SAAO,mBAAmB,KAAK,GAAG,EAAE,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAC1D,QAAI,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE;AACxC,QAAI,KAAK,SAAS,GAAG;AACjB,aAAO,MAAM;AAAA,IAChB;AACD,WAAO,MAAM;AAAA,EAChB,CAAA,CAAC;AACN;AACA,SAAS,gBAAgB,KAAK;AAC1B,MAAI,SAAS,IAAI,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AACrD,UAAQ,OAAO,SAAS,GAAC;AAAA,IACrB,KAAK;AACD;AAAA,IACJ,KAAK;AACD,gBAAU;AACV;AAAA,IACJ,KAAK;AACD,gBAAU;AACV;AAAA,IACJ;AACI,YAAM,IAAI,MAAM,4CAA4C;AAAA,EACnE;AACD,MAAI;AACA,WAAO,iBAAiB,MAAM;AAAA,EACjC,SACM,KAAK;AACR,WAAO,KAAK,MAAM;AAAA,EACrB;AACL;AACO,SAAS,UAAU,OAAO,SAAS;AACtC,MAAI,OAAO,UAAU,UAAU;AAC3B,UAAM,IAAI,kBAAkB,2CAA2C;AAAA,EAC1E;AACD,cAAY,UAAU,CAAA;AACtB,QAAM,MAAM,QAAQ,WAAW,OAAO,IAAI;AAC1C,QAAM,OAAO,MAAM,MAAM,GAAG,EAAE,GAAG;AACjC,MAAI,OAAO,SAAS,UAAU;AAC1B,UAAM,IAAI,kBAAkB,0CAA0C,MAAM,CAAC,EAAE;AAAA,EAClF;AACD,MAAI;AACJ,MAAI;AACA,cAAU,gBAAgB,IAAI;AAAA,EACjC,SACM,GAAG;AACN,UAAM,IAAI,kBAAkB,qDAAqD,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG;AAAA,EAC5G;AACD,MAAI;AACA,WAAO,KAAK,MAAM,OAAO;AAAA,EAC5B,SACM,GAAG;AACN,UAAM,IAAI,kBAAkB,mDAAmD,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG;AAAA,EAC1G;AACL;ACtCa,MAAA,iBAAiB,YAAY,yBAAyB;AAAA,EAC/D,OAAO,MAAuB;AACnB,WAAA;AAAA,MACH,UAAU;AAAA,MACV,OAAO;AAAA,IAAA;AAAA,EAEf;AAAA,EACA,SAAS;AAAA,IACL,cAAc,UAAkB;AAC5B,WAAK,WAAW;AAAA,IACpB;AAAA,IACA,YAAY,OAAmB;AAC3B,UAAI,KAAK,OAAO;AACZ,aAAK,MAAM,UAAU;AAAA,MAAA,OAClB;AACH,aAAK,QAAQ;AAAA,UACT,SAAS;AAAA,QAAA;AAAA,MAEjB;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACL,UAAU,CAAC,UAAoC;AACvC,UAAA,OAAO,MAAM,aAAa,aAAa;AAChC,eAAA;AAAA,MACX;AACI,UAAA,MAAM,aAAa,MAAM;AAClB,eAAA;AAAA,MACX;AACO,aAAA;AAAA,IACX;AAAA,IACA,aAAa,CAAC,UAA8C;AAExD,UAAI,MAAM,UAAU;AAChB,cAAM,WAAW,MAAM;AACjB,cAAA,iBAAiB,UAAsB,QAAQ;AAC9C,eAAA;AAAA,MAAA,OACJ;AACI,eAAA;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAMJ,CAAC;;;;ACvDD,MAAI,mBAAmB;AAGvB,MAAI,iBAAiB;AAGrB,MAAI,mBAAmB;AAGvB,MAAI,UAAU,sBACV,WAAW,kBACX,UAAU,oBACV,UAAU,iBACV,WAAW,kBACX,UAAU,qBACV,SAAS,8BACT,SAAS,gBACT,YAAY,mBACZ,YAAY,mBACZ,aAAa,oBACb,YAAY,mBACZ,SAAS,gBACT,YAAY,mBACZ,YAAY,mBACZ,aAAa;AAEjB,MAAI,iBAAiB,wBACjB,cAAc,qBACd,aAAa,yBACb,aAAa,yBACb,UAAU,sBACV,WAAW,uBACX,WAAW,uBACX,WAAW,uBACX,kBAAkB,8BAClB,YAAY,wBACZ,YAAY;AAMhB,MAAI,eAAe;AAGnB,MAAI,UAAU;AAGd,MAAI,eAAe;AAGnB,MAAI,WAAW;AAGf,MAAI,gBAAgB,CAAA;AACpB,gBAAc,OAAO,IAAI,cAAc,QAAQ,IAC/C,cAAc,cAAc,IAAI,cAAc,WAAW,IACzD,cAAc,OAAO,IAAI,cAAc,OAAO,IAC9C,cAAc,UAAU,IAAI,cAAc,UAAU,IACpD,cAAc,OAAO,IAAI,cAAc,QAAQ,IAC/C,cAAc,QAAQ,IAAI,cAAc,MAAM,IAC9C,cAAc,SAAS,IAAI,cAAc,SAAS,IAClD,cAAc,SAAS,IAAI,cAAc,MAAM,IAC/C,cAAc,SAAS,IAAI,cAAc,SAAS,IAClD,cAAc,QAAQ,IAAI,cAAc,eAAe,IACvD,cAAc,SAAS,IAAI,cAAc,SAAS,IAAI;AACtD,gBAAc,QAAQ,IAAI,cAAc,OAAO,IAC/C,cAAc,UAAU,IAAI;AAG5B,MAAI,aAAa,OAAOP,oBAAU,YAAYA,oBAAUA,iBAAO,WAAW,UAAUA;AAGpF,MAAI,WAAW,OAAO,QAAQ,YAAY,QAAQ,KAAK,WAAW,UAAU;AAG5E,MAAI,OAAO,cAAc,YAAY,SAAS,aAAa,EAAC;AAG5D,MAAI,cAA4C,WAAW,CAAC,QAAQ,YAAY;AAGhF,MAAI,aAAa,eAAe,QAA6B,UAAU,CAAC,OAAO,YAAY;AAG3F,MAAI,gBAAgB,cAAc,WAAW,YAAY;AAUzD,WAAS,YAAY,KAAK,MAAM;AAE9B,QAAI,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AACxB,WAAO;AAAA,EACR;AAUD,WAAS,YAAY,KAAK,OAAO;AAE/B,QAAI,IAAI,KAAK;AACb,WAAO;AAAA,EACR;AAWD,WAAS,UAAU,OAAO,UAAU;AAClC,QAAI,QAAQ,IACR,SAAS,QAAQ,MAAM,SAAS;AAEpC,WAAO,EAAE,QAAQ,QAAQ;AACvB,UAAI,SAAS,MAAM,KAAK,GAAG,OAAO,KAAK,MAAM,OAAO;AAClD;AAAA,MACD;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAUD,WAAS,UAAU,OAAO,QAAQ;AAChC,QAAI,QAAQ,IACR,SAAS,OAAO,QAChB,SAAS,MAAM;AAEnB,WAAO,EAAE,QAAQ,QAAQ;AACvB,YAAM,SAAS,KAAK,IAAI,OAAO,KAAK;AAAA,IACrC;AACD,WAAO;AAAA,EACR;AAcD,WAAS,YAAY,OAAO,UAAU,aAAa,WAAW;AAC5D,QAAI,QAAQ,IACR,SAAS,QAAQ,MAAM,SAAS;AAEpC,QAAI,aAAa,QAAQ;AACvB,oBAAc,MAAM,EAAE,KAAK;AAAA,IAC5B;AACD,WAAO,EAAE,QAAQ,QAAQ;AACvB,oBAAc,SAAS,aAAa,MAAM,KAAK,GAAG,OAAO,KAAK;AAAA,IAC/D;AACD,WAAO;AAAA,EACR;AAWD,WAAS,UAAU,GAAG,UAAU;AAC9B,QAAI,QAAQ,IACR,SAAS,MAAM,CAAC;AAEpB,WAAO,EAAE,QAAQ,GAAG;AAClB,aAAO,KAAK,IAAI,SAAS,KAAK;AAAA,IAC/B;AACD,WAAO;AAAA,EACR;AAUD,WAAS,SAAS,QAAQ,KAAK;AAC7B,WAAO,UAAU,OAAO,SAAY,OAAO,GAAG;AAAA,EAC/C;AASD,WAAS,aAAa,OAAO;AAG3B,QAAI,SAAS;AACb,QAAI,SAAS,QAAQ,OAAO,MAAM,YAAY,YAAY;AACxD,UAAI;AACF,iBAAS,CAAC,EAAE,QAAQ;AAAA,MAC1B,SAAa,GAAG;AAAA,MAAE;AAAA,IACf;AACD,WAAO;AAAA,EACR;AASD,WAAS,WAAW,KAAK;AACvB,QAAI,QAAQ,IACR,SAAS,MAAM,IAAI,IAAI;AAE3B,QAAI,QAAQ,SAAS,OAAO,KAAK;AAC/B,aAAO,EAAE,KAAK,IAAI,CAAC,KAAK,KAAK;AAAA,IACjC,CAAG;AACD,WAAO;AAAA,EACR;AAUD,WAAS,QAAQ,MAAM,WAAW;AAChC,WAAO,SAAS,KAAK;AACnB,aAAO,KAAK,UAAU,GAAG,CAAC;AAAA,IAC9B;AAAA,EACC;AASD,WAAS,WAAW,KAAK;AACvB,QAAI,QAAQ,IACR,SAAS,MAAM,IAAI,IAAI;AAE3B,QAAI,QAAQ,SAAS,OAAO;AAC1B,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB,CAAG;AACD,WAAO;AAAA,EACR;AAGD,MAAI,aAAa,MAAM,WACnB,YAAY,SAAS,WACrB,cAAc,OAAO;AAGzB,MAAI,aAAa,KAAK,oBAAoB;AAG1C,MAAI,aAAc,WAAW;AAC3B,QAAI,MAAM,SAAS,KAAK,cAAc,WAAW,QAAQ,WAAW,KAAK,YAAY,EAAE;AACvF,WAAO,MAAO,mBAAmB,MAAO;AAAA,EACzC,EAAA;AAGD,MAAI,eAAe,UAAU;AAG7B,MAAI,iBAAiB,YAAY;AAOjC,MAAI,iBAAiB,YAAY;AAGjC,MAAI,aAAa;AAAA,IAAO,MACtB,aAAa,KAAK,cAAc,EAAE,QAAQ,cAAc,MAAM,EAC7D,QAAQ,0DAA0D,OAAO,IAAI;AAAA,EAChF;AAGA,MAAIQ,UAAS,gBAAgB,KAAK,SAAS,QACvCC,UAAS,KAAK,QACdC,cAAa,KAAK,YAClB,eAAe,QAAQ,OAAO,gBAAgB,MAAM,GACpD,eAAe,OAAO,QACtB,uBAAuB,YAAY,sBACnC,SAAS,WAAW;AAGxB,MAAI,mBAAmB,OAAO,uBAC1B,iBAAiBF,UAASA,QAAO,WAAW,QAC5C,aAAa,QAAQ,OAAO,MAAM,MAAM;AAG5C,MAAIG,YAAW,UAAU,MAAM,UAAU,GACrCC,OAAM,UAAU,MAAM,KAAK,GAC3BC,WAAU,UAAU,MAAM,SAAS,GACnC,MAAM,UAAU,MAAM,KAAK,GAC3BC,WAAU,UAAU,MAAM,SAAS,GACnC,eAAe,UAAU,QAAQ,QAAQ;AAG7C,MAAI,qBAAqB,SAASH,SAAQ,GACtC,gBAAgB,SAASC,IAAG,GAC5B,oBAAoB,SAASC,QAAO,GACpC,gBAAgB,SAAS,GAAG,GAC5B,oBAAoB,SAASC,QAAO;AAGxC,MAAI,cAAcL,UAASA,QAAO,YAAY,QAC1C,gBAAgB,cAAc,YAAY,UAAU;AASxD,WAAS,KAAK,SAAS;AACrB,QAAI,QAAQ,IACR,SAAS,UAAU,QAAQ,SAAS;AAExC,SAAK,MAAK;AACV,WAAO,EAAE,QAAQ,QAAQ;AACvB,UAAI,QAAQ,QAAQ,KAAK;AACzB,WAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,IAC5B;AAAA,EACF;AASD,WAAS,YAAY;AACnB,SAAK,WAAW,eAAe,aAAa,IAAI,IAAI,CAAA;AAAA,EACrD;AAYD,WAAS,WAAW,KAAK;AACvB,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,KAAK,SAAS,GAAG;AAAA,EACjD;AAWD,WAAS,QAAQ,KAAK;AACpB,QAAI,OAAO,KAAK;AAChB,QAAI,cAAc;AAChB,UAAI,SAAS,KAAK,GAAG;AACrB,aAAO,WAAW,iBAAiB,SAAY;AAAA,IAChD;AACD,WAAO,eAAe,KAAK,MAAM,GAAG,IAAI,KAAK,GAAG,IAAI;AAAA,EACrD;AAWD,WAAS,QAAQ,KAAK;AACpB,QAAI,OAAO,KAAK;AAChB,WAAO,eAAe,KAAK,GAAG,MAAM,SAAY,eAAe,KAAK,MAAM,GAAG;AAAA,EAC9E;AAYD,WAAS,QAAQ,KAAK,OAAO;AAC3B,QAAI,OAAO,KAAK;AAChB,SAAK,GAAG,IAAK,gBAAgB,UAAU,SAAa,iBAAiB;AACrE,WAAO;AAAA,EACR;AAGD,OAAK,UAAU,QAAQ;AACvB,OAAK,UAAU,QAAQ,IAAI;AAC3B,OAAK,UAAU,MAAM;AACrB,OAAK,UAAU,MAAM;AACrB,OAAK,UAAU,MAAM;AASrB,WAAS,UAAU,SAAS;AAC1B,QAAI,QAAQ,IACR,SAAS,UAAU,QAAQ,SAAS;AAExC,SAAK,MAAK;AACV,WAAO,EAAE,QAAQ,QAAQ;AACvB,UAAI,QAAQ,QAAQ,KAAK;AACzB,WAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,IAC5B;AAAA,EACF;AASD,WAAS,iBAAiB;AACxB,SAAK,WAAW;EACjB;AAWD,WAAS,gBAAgB,KAAK;AAC5B,QAAI,OAAO,KAAK,UACZ,QAAQ,aAAa,MAAM,GAAG;AAElC,QAAI,QAAQ,GAAG;AACb,aAAO;AAAA,IACR;AACD,QAAI,YAAY,KAAK,SAAS;AAC9B,QAAI,SAAS,WAAW;AACtB,WAAK,IAAG;AAAA,IACZ,OAAS;AACL,aAAO,KAAK,MAAM,OAAO,CAAC;AAAA,IAC3B;AACD,WAAO;AAAA,EACR;AAWD,WAAS,aAAa,KAAK;AACzB,QAAI,OAAO,KAAK,UACZ,QAAQ,aAAa,MAAM,GAAG;AAElC,WAAO,QAAQ,IAAI,SAAY,KAAK,KAAK,EAAE,CAAC;AAAA,EAC7C;AAWD,WAAS,aAAa,KAAK;AACzB,WAAO,aAAa,KAAK,UAAU,GAAG,IAAI;AAAA,EAC3C;AAYD,WAAS,aAAa,KAAK,OAAO;AAChC,QAAI,OAAO,KAAK,UACZ,QAAQ,aAAa,MAAM,GAAG;AAElC,QAAI,QAAQ,GAAG;AACb,WAAK,KAAK,CAAC,KAAK,KAAK,CAAC;AAAA,IAC1B,OAAS;AACL,WAAK,KAAK,EAAE,CAAC,IAAI;AAAA,IAClB;AACD,WAAO;AAAA,EACR;AAGD,YAAU,UAAU,QAAQ;AAC5B,YAAU,UAAU,QAAQ,IAAI;AAChC,YAAU,UAAU,MAAM;AAC1B,YAAU,UAAU,MAAM;AAC1B,YAAU,UAAU,MAAM;AAS1B,WAAS,SAAS,SAAS;AACzB,QAAI,QAAQ,IACR,SAAS,UAAU,QAAQ,SAAS;AAExC,SAAK,MAAK;AACV,WAAO,EAAE,QAAQ,QAAQ;AACvB,UAAI,QAAQ,QAAQ,KAAK;AACzB,WAAK,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,IAC5B;AAAA,EACF;AASD,WAAS,gBAAgB;AACvB,SAAK,WAAW;AAAA,MACd,QAAQ,IAAI;AAAA,MACZ,OAAO,KAAKG,QAAO;AAAA,MACnB,UAAU,IAAI;AAAA,IAClB;AAAA,EACC;AAWD,WAAS,eAAe,KAAK;AAC3B,WAAO,WAAW,MAAM,GAAG,EAAE,QAAQ,EAAE,GAAG;AAAA,EAC3C;AAWD,WAAS,YAAY,KAAK;AACxB,WAAO,WAAW,MAAM,GAAG,EAAE,IAAI,GAAG;AAAA,EACrC;AAWD,WAAS,YAAY,KAAK;AACxB,WAAO,WAAW,MAAM,GAAG,EAAE,IAAI,GAAG;AAAA,EACrC;AAYD,WAAS,YAAY,KAAK,OAAO;AAC/B,eAAW,MAAM,GAAG,EAAE,IAAI,KAAK,KAAK;AACpC,WAAO;AAAA,EACR;AAGD,WAAS,UAAU,QAAQ;AAC3B,WAAS,UAAU,QAAQ,IAAI;AAC/B,WAAS,UAAU,MAAM;AACzB,WAAS,UAAU,MAAM;AACzB,WAAS,UAAU,MAAM;AASzB,WAAS,MAAM,SAAS;AACtB,SAAK,WAAW,IAAI,UAAU,OAAO;AAAA,EACtC;AASD,WAAS,aAAa;AACpB,SAAK,WAAW,IAAI;AAAA,EACrB;AAWD,WAAS,YAAY,KAAK;AACxB,WAAO,KAAK,SAAS,QAAQ,EAAE,GAAG;AAAA,EACnC;AAWD,WAAS,SAAS,KAAK;AACrB,WAAO,KAAK,SAAS,IAAI,GAAG;AAAA,EAC7B;AAWD,WAAS,SAAS,KAAK;AACrB,WAAO,KAAK,SAAS,IAAI,GAAG;AAAA,EAC7B;AAYD,WAAS,SAAS,KAAK,OAAO;AAC5B,QAAI,QAAQ,KAAK;AACjB,QAAI,iBAAiB,WAAW;AAC9B,UAAI,QAAQ,MAAM;AAClB,UAAI,CAACA,QAAQ,MAAM,SAAS,mBAAmB,GAAI;AACjD,cAAM,KAAK,CAAC,KAAK,KAAK,CAAC;AACvB,eAAO;AAAA,MACR;AACD,cAAQ,KAAK,WAAW,IAAI,SAAS,KAAK;AAAA,IAC3C;AACD,UAAM,IAAI,KAAK,KAAK;AACpB,WAAO;AAAA,EACR;AAGD,QAAM,UAAU,QAAQ;AACxB,QAAM,UAAU,QAAQ,IAAI;AAC5B,QAAM,UAAU,MAAM;AACtB,QAAM,UAAU,MAAM;AACtB,QAAM,UAAU,MAAM;AAUtB,WAAS,cAAc,OAAO,WAAW;AAGvC,QAAI,SAAU/B,SAAQ,KAAK,KAAK,YAAY,KAAK,IAC7C,UAAU,MAAM,QAAQ,MAAM,IAC9B;AAEJ,QAAI,SAAS,OAAO,QAChB,cAAc,CAAC,CAAC;AAEpB,aAAS,OAAO,OAAO;AACrB,WAAK,aAAa,eAAe,KAAK,OAAO,GAAG,MAC5C,EAAE,gBAAgB,OAAO,YAAY,QAAQ,KAAK,MAAM,KAAK;AAC/D,eAAO,KAAK,GAAG;AAAA,MAChB;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAYD,WAAS,YAAY,QAAQ,KAAK,OAAO;AACvC,QAAI,WAAW,OAAO,GAAG;AACzB,QAAI,EAAE,eAAe,KAAK,QAAQ,GAAG,KAAK,GAAG,UAAU,KAAK,MACvD,UAAU,UAAa,EAAE,OAAO,SAAU;AAC7C,aAAO,GAAG,IAAI;AAAA,IACf;AAAA,EACF;AAUD,WAAS,aAAa,OAAO,KAAK;AAChC,QAAI,SAAS,MAAM;AACnB,WAAO,UAAU;AACf,UAAI,GAAG,MAAM,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG;AAC7B,eAAO;AAAA,MACR;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAWD,WAAS,WAAW,QAAQkC,SAAQ;AAClC,WAAO,UAAU,WAAWA,SAAQ,KAAKA,OAAM,GAAG,MAAM;AAAA,EACzD;AAgBD,WAAS,UAAU,OAAO,QAAQ,QAAQ,YAAY,KAAK,QAAQ,OAAO;AACxE,QAAI;AACJ,QAAI,YAAY;AACd,eAAS,SAAS,WAAW,OAAO,KAAK,QAAQ,KAAK,IAAI,WAAW,KAAK;AAAA,IAC3E;AACD,QAAI,WAAW,QAAW;AACxB,aAAO;AAAA,IACR;AACD,QAAI,CAAC,SAAS,KAAK,GAAG;AACpB,aAAO;AAAA,IACR;AACD,QAAI,QAAQlC,SAAQ,KAAK;AACzB,QAAI,OAAO;AACT,eAAS,eAAe,KAAK;AAC7B,UAAI,CAAC,QAAQ;AACX,eAAO,UAAU,OAAO,MAAM;AAAA,MAC/B;AAAA,IACL,OAAS;AACL,UAAI,MAAM,OAAO,KAAK,GAClB,SAAS,OAAO,WAAW,OAAO;AAEtC,UAAI,SAAS,KAAK,GAAG;AACnB,eAAO,YAAY,OAAO,MAAM;AAAA,MACjC;AACD,UAAI,OAAO,aAAa,OAAO,WAAY,UAAU,CAAC,QAAS;AAC7D,YAAI,aAAa,KAAK,GAAG;AACvB,iBAAO,SAAS,QAAQ;QACzB;AACD,iBAAS,gBAAgB,SAAS,CAAE,IAAG,KAAK;AAC5C,YAAI,CAAC,QAAQ;AACX,iBAAO,YAAY,OAAO,WAAW,QAAQ,KAAK,CAAC;AAAA,QACpD;AAAA,MACP,OAAW;AACL,YAAI,CAAC,cAAc,GAAG,GAAG;AACvB,iBAAO,SAAS,QAAQ;QACzB;AACD,iBAAS,eAAe,OAAO,KAAK,WAAW,MAAM;AAAA,MACtD;AAAA,IACF;AAED,cAAU,QAAQ,IAAI;AACtB,QAAI,UAAU,MAAM,IAAI,KAAK;AAC7B,QAAI,SAAS;AACX,aAAO;AAAA,IACR;AACD,UAAM,IAAI,OAAO,MAAM;AAEvB,QAAI,CAAC,OAAO;AACV,UAAI,QAAQ,SAAS,WAAW,KAAK,IAAI,KAAK,KAAK;AAAA,IACpD;AACD,cAAU,SAAS,OAAO,SAAS,UAAUmC,MAAK;AAChD,UAAI,OAAO;AACT,QAAAA,OAAM;AACN,mBAAW,MAAMA,IAAG;AAAA,MACrB;AAED,kBAAY,QAAQA,MAAK,UAAU,UAAU,QAAQ,QAAQ,YAAYA,MAAK,OAAO,KAAK,CAAC;AAAA,IAC/F,CAAG;AACD,WAAO;AAAA,EACR;AAUD,WAAS,WAAWzB,QAAO;AACzB,WAAO,SAASA,MAAK,IAAI,aAAaA,MAAK,IAAI,CAAA;AAAA,EAChD;AAaD,WAAS,eAAe,QAAQ,UAAU,aAAa;AACrD,QAAI,SAAS,SAAS,MAAM;AAC5B,WAAOV,SAAQ,MAAM,IAAI,SAAS,UAAU,QAAQ,YAAY,MAAM,CAAC;AAAA,EACxE;AASD,WAAS,WAAW,OAAO;AACzB,WAAO,eAAe,KAAK,KAAK;AAAA,EACjC;AAUD,WAAS,aAAa,OAAO;AAC3B,QAAI,CAAC,SAAS,KAAK,KAAK,SAAS,KAAK,GAAG;AACvC,aAAO;AAAA,IACR;AACD,QAAI,UAAW,WAAW,KAAK,KAAK,aAAa,KAAK,IAAK,aAAa;AACxE,WAAO,QAAQ,KAAK,SAAS,KAAK,CAAC;AAAA,EACpC;AASD,WAAS,SAAS,QAAQ;AACxB,QAAI,CAAC,YAAY,MAAM,GAAG;AACxB,aAAO,WAAW,MAAM;AAAA,IACzB;AACD,QAAI,SAAS,CAAA;AACb,aAAS,OAAO,OAAO,MAAM,GAAG;AAC9B,UAAI,eAAe,KAAK,QAAQ,GAAG,KAAK,OAAO,eAAe;AAC5D,eAAO,KAAK,GAAG;AAAA,MAChB;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAUD,WAAS,YAAY,QAAQ,QAAQ;AACnC,QAAI,QAAQ;AACV,aAAO,OAAO;IACf;AACD,QAAI,SAAS,IAAI,OAAO,YAAY,OAAO,MAAM;AACjD,WAAO,KAAK,MAAM;AAClB,WAAO;AAAA,EACR;AASD,WAAS,iBAAiB,aAAa;AACrC,QAAI,SAAS,IAAI,YAAY,YAAY,YAAY,UAAU;AAC/D,QAAI6B,YAAW,MAAM,EAAE,IAAI,IAAIA,YAAW,WAAW,CAAC;AACtD,WAAO;AAAA,EACR;AAUD,WAAS,cAAc,UAAU,QAAQ;AACvC,QAAI,SAAS,SAAS,iBAAiB,SAAS,MAAM,IAAI,SAAS;AACnE,WAAO,IAAI,SAAS,YAAY,QAAQ,SAAS,YAAY,SAAS,UAAU;AAAA,EACjF;AAWD,WAAS,SAAS,KAAK,QAAQ,WAAW;AACxC,QAAI,QAAQ,SAAS,UAAU,WAAW,GAAG,GAAG,IAAI,IAAI,WAAW,GAAG;AACtE,WAAO,YAAY,OAAO,aAAa,IAAI,IAAI,aAAW;AAAA,EAC3D;AASD,WAAS,YAAY,QAAQ;AAC3B,QAAI,SAAS,IAAI,OAAO,YAAY,OAAO,QAAQ,QAAQ,KAAK,MAAM,CAAC;AACvE,WAAO,YAAY,OAAO;AAC1B,WAAO;AAAA,EACR;AAWD,WAAS,SAAS,KAAK,QAAQ,WAAW;AACxC,QAAI,QAAQ,SAAS,UAAU,WAAW,GAAG,GAAG,IAAI,IAAI,WAAW,GAAG;AACtE,WAAO,YAAY,OAAO,aAAa,IAAI,IAAI,aAAW;AAAA,EAC3D;AASD,WAAS,YAAY,QAAQ;AAC3B,WAAO,gBAAgB,OAAO,cAAc,KAAK,MAAM,CAAC,IAAI;EAC7D;AAUD,WAAS,gBAAgB,YAAY,QAAQ;AAC3C,QAAI,SAAS,SAAS,iBAAiB,WAAW,MAAM,IAAI,WAAW;AACvE,WAAO,IAAI,WAAW,YAAY,QAAQ,WAAW,YAAY,WAAW,MAAM;AAAA,EACnF;AAUD,WAAS,UAAUK,SAAQ,OAAO;AAChC,QAAI,QAAQ,IACR,SAASA,QAAO;AAEpB,cAAU,QAAQ,MAAM,MAAM;AAC9B,WAAO,EAAE,QAAQ,QAAQ;AACvB,YAAM,KAAK,IAAIA,QAAO,KAAK;AAAA,IAC5B;AACD,WAAO;AAAA,EACR;AAYD,WAAS,WAAWA,SAAQ,OAAO,QAAQ,YAAY;AACrD,eAAW,SAAS,CAAA;AAEpB,QAAI,QAAQ,IACR,SAAS,MAAM;AAEnB,WAAO,EAAE,QAAQ,QAAQ;AACvB,UAAI,MAAM,MAAM,KAAK;AAErB,UAAI,WAAW,aACX,WAAW,OAAO,GAAG,GAAGA,QAAO,GAAG,GAAG,KAAK,QAAQA,OAAM,IACxD;AAEJ,kBAAY,QAAQ,KAAK,aAAa,SAAYA,QAAO,GAAG,IAAI,QAAQ;AAAA,IACzE;AACD,WAAO;AAAA,EACR;AAUD,WAAS,YAAYA,SAAQ,QAAQ;AACnC,WAAO,WAAWA,SAAQ,WAAWA,OAAM,GAAG,MAAM;AAAA,EACrD;AASD,WAAS,WAAW,QAAQ;AAC1B,WAAO,eAAe,QAAQ,MAAM,UAAU;AAAA,EAC/C;AAUD,WAAS,WAAW,KAAK,KAAK;AAC5B,QAAI,OAAO,IAAI;AACf,WAAO,UAAU,GAAG,IAChB,KAAK,OAAO,OAAO,WAAW,WAAW,MAAM,IAC/C,KAAK;AAAA,EACV;AAUD,WAAS,UAAU,QAAQ,KAAK;AAC9B,QAAI,QAAQ,SAAS,QAAQ,GAAG;AAChC,WAAO,aAAa,KAAK,IAAI,QAAQ;AAAA,EACtC;AASD,MAAI,aAAa,mBAAmB,QAAQ,kBAAkB,MAAM,IAAI;AASxE,MAAI,SAAS;AAIb,MAAKJ,aAAY,OAAO,IAAIA,UAAS,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,eACxDC,QAAO,OAAO,IAAIA,MAAG,KAAK,UAC1BC,YAAW,OAAOA,SAAQ,QAAS,CAAA,KAAK,cACxC,OAAO,OAAO,IAAI,KAAG,KAAK,UAC1BC,YAAW,OAAO,IAAIA,UAAO,KAAK,YAAa;AAClD,aAAS,SAAS,OAAO;AACvB,UAAI,SAAS,eAAe,KAAK,KAAK,GAClC,OAAO,UAAU,YAAY,MAAM,cAAc,QACjD,aAAa,OAAO,SAAS,IAAI,IAAI;AAEzC,UAAI,YAAY;AACd,gBAAQ,YAAU;AAAA,UAChB,KAAK;AAAoB,mBAAO;AAAA,UAChC,KAAK;AAAe,mBAAO;AAAA,UAC3B,KAAK;AAAmB,mBAAO;AAAA,UAC/B,KAAK;AAAe,mBAAO;AAAA,UAC3B,KAAK;AAAmB,mBAAO;AAAA,QAChC;AAAA,MACF;AACD,aAAO;AAAA,IACX;AAAA,EACC;AASD,WAAS,eAAe,OAAO;AAC7B,QAAI,SAAS,MAAM,QACf,SAAS,MAAM,YAAY,MAAM;AAGrC,QAAI,UAAU,OAAO,MAAM,CAAC,KAAK,YAAY,eAAe,KAAK,OAAO,OAAO,GAAG;AAChF,aAAO,QAAQ,MAAM;AACrB,aAAO,QAAQ,MAAM;AAAA,IACtB;AACD,WAAO;AAAA,EACR;AASD,WAAS,gBAAgB,QAAQ;AAC/B,WAAQ,OAAO,OAAO,eAAe,cAAc,CAAC,YAAY,MAAM,IAClE,WAAW,aAAa,MAAM,CAAC,IAC/B;EACL;AAeD,WAAS,eAAe,QAAQ,KAAK,WAAW,QAAQ;AACtD,QAAI,OAAO,OAAO;AAClB,YAAQ,KAAG;AAAA,MACT,KAAK;AACH,eAAO,iBAAiB,MAAM;AAAA,MAEhC,KAAK;AAAA,MACL,KAAK;AACH,eAAO,IAAI,KAAK,CAAC,MAAM;AAAA,MAEzB,KAAK;AACH,eAAO,cAAc,QAAQ,MAAM;AAAA,MAErC,KAAK;AAAA,MAAY,KAAK;AAAA,MACtB,KAAK;AAAA,MAAS,KAAK;AAAA,MAAU,KAAK;AAAA,MAClC,KAAK;AAAA,MAAU,KAAK;AAAA,MAAiB,KAAK;AAAA,MAAW,KAAK;AACxD,eAAO,gBAAgB,QAAQ,MAAM;AAAA,MAEvC,KAAK;AACH,eAAO,SAAS,QAAQ,QAAQ,SAAS;AAAA,MAE3C,KAAK;AAAA,MACL,KAAK;AACH,eAAO,IAAI,KAAK,MAAM;AAAA,MAExB,KAAK;AACH,eAAO,YAAY,MAAM;AAAA,MAE3B,KAAK;AACH,eAAO,SAAS,QAAQ,QAAQ,SAAS;AAAA,MAE3C,KAAK;AACH,eAAO,YAAY,MAAM;AAAA,IAC5B;AAAA,EACF;AAUD,WAAS,QAAQ,OAAO,QAAQ;AAC9B,aAAS,UAAU,OAAO,mBAAmB;AAC7C,WAAO,CAAC,CAAC,WACN,OAAO,SAAS,YAAY,SAAS,KAAK,KAAK,OAC/C,QAAQ,MAAM,QAAQ,KAAK,KAAK,QAAQ;AAAA,EAC5C;AASD,WAAS,UAAU,OAAO;AACxB,QAAI,OAAO,OAAO;AAClB,WAAQ,QAAQ,YAAY,QAAQ,YAAY,QAAQ,YAAY,QAAQ,YACvE,UAAU,cACV,UAAU;AAAA,EAChB;AASD,WAAS,SAAS,MAAM;AACtB,WAAO,CAAC,CAAC,cAAe,cAAc;AAAA,EACvC;AASD,WAAS,YAAY,OAAO;AAC1B,QAAI,OAAO,SAAS,MAAM,aACtBvB,SAAS,OAAO,QAAQ,cAAc,KAAK,aAAc;AAE7D,WAAO,UAAUA;AAAA,EAClB;AASD,WAAS,SAAS,MAAM;AACtB,QAAI,QAAQ,MAAM;AAChB,UAAI;AACF,eAAO,aAAa,KAAK,IAAI;AAAA,MACnC,SAAa,GAAG;AAAA,MAAE;AACd,UAAI;AACF,eAAQ,OAAO;AAAA,MACrB,SAAa,GAAG;AAAA,MAAE;AAAA,IACf;AACD,WAAO;AAAA,EACR;AAoBD,WAAS,UAAU,OAAO;AACxB,WAAO,UAAU,OAAO,MAAM,IAAI;AAAA,EACnC;AAkCD,WAAS,GAAG,OAAO,OAAO;AACxB,WAAO,UAAU,SAAU,UAAU,SAAS,UAAU;AAAA,EACzD;AAoBD,WAAS,YAAY,OAAO;AAE1B,WAAO,kBAAkB,KAAK,KAAK,eAAe,KAAK,OAAO,QAAQ,MACnE,CAAC,qBAAqB,KAAK,OAAO,QAAQ,KAAK,eAAe,KAAK,KAAK,KAAK;AAAA,EACjF;AAyBD,MAAIV,WAAU,MAAM;AA2BpB,WAAS,YAAY,OAAO;AAC1B,WAAO,SAAS,QAAQ,SAAS,MAAM,MAAM,KAAK,CAAC,WAAW,KAAK;AAAA,EACpE;AA2BD,WAAS,kBAAkB,OAAO;AAChC,WAAO,aAAa,KAAK,KAAK,YAAY,KAAK;AAAA,EAChD;AAmBD,MAAI,WAAW,kBAAkB;AAmBjC,WAAS,WAAW,OAAO;AAGzB,QAAI,MAAM,SAAS,KAAK,IAAI,eAAe,KAAK,KAAK,IAAI;AACzD,WAAO,OAAO,WAAW,OAAO;AAAA,EACjC;AA4BD,WAAS,SAAS,OAAO;AACvB,WAAO,OAAO,SAAS,YACrB,QAAQ,MAAM,QAAQ,KAAK,KAAK,SAAS;AAAA,EAC5C;AA2BD,WAAS,SAAS,OAAO;AACvB,QAAI,OAAO,OAAO;AAClB,WAAO,CAAC,CAAC,UAAU,QAAQ,YAAY,QAAQ;AAAA,EAChD;AA0BD,WAAS,aAAa,OAAO;AAC3B,WAAO,CAAC,CAAC,SAAS,OAAO,SAAS;AAAA,EACnC;AA8BD,WAAS,KAAK,QAAQ;AACpB,WAAO,YAAY,MAAM,IAAI,cAAc,MAAM,IAAI,SAAS,MAAM;AAAA,EACrE;AAoBD,WAAS,YAAY;AACnB,WAAO;EACR;AAeD,WAAS,YAAY;AACnB,WAAO;AAAA,EACR;AAED,SAAA,UAAiB;;;;ACntDjB,SAAS,IAAK;AAGd;AAEA,EAAE,YAAY;AAAA,EACZ,IAAI,SAAU,MAAM,UAAU,KAAK;AACjC,QAAI,IAAI,KAAK,MAAM,KAAK,IAAI,CAAA;AAE5B,KAAC,EAAE,IAAI,MAAM,EAAE,IAAI,IAAI,CAAA,IAAK,KAAK;AAAA,MAC/B,IAAI;AAAA,MACJ;AAAA,IACN,CAAK;AAED,WAAO;AAAA,EACR;AAAA,EAED,MAAM,SAAU,MAAM,UAAU,KAAK;AACnC,QAAIW,QAAO;AACX,aAAS,WAAY;AACnB,MAAAA,MAAK,IAAI,MAAM,QAAQ;AACvB,eAAS,MAAM,KAAK,SAAS;AAAA,IAEnC;AACI,aAAS,IAAI;AACb,WAAO,KAAK,GAAG,MAAM,UAAU,GAAG;AAAA,EACnC;AAAA,EAED,MAAM,SAAU,MAAM;AACpB,QAAI,OAAO,CAAA,EAAG,MAAM,KAAK,WAAW,CAAC;AACrC,QAAI,WAAW,KAAK,MAAM,KAAK,IAAI,CAAA,IAAK,IAAI,KAAK,CAAE,GAAE,MAAK;AAC1D,QAAI,IAAI;AACR,QAAI,MAAM,OAAO;AAEjB,SAAK,GAAG,IAAI,KAAK,KAAK;AACpB,aAAO,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,KAAK,IAAI;AAAA,IACvC;AAED,WAAO;AAAA,EACR;AAAA,EAED,KAAK,SAAU,MAAM,UAAU;AAC7B,QAAI,IAAI,KAAK,MAAM,KAAK,IAAI,CAAA;AAC5B,QAAI,OAAO,EAAE,IAAI;AACjB,QAAI,aAAa,CAAA;AAEjB,QAAI,QAAQ,UAAU;AACpB,eAAS,IAAI,GAAG,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK;AAC/C,YAAI,KAAK,CAAC,EAAE,OAAO,YAAY,KAAK,CAAC,EAAE,GAAG,MAAM;AAC9C,qBAAW,KAAK,KAAK,CAAC,CAAC;AAAA,MAC1B;AAAA,IACF;AAMD,IAAC,WAAW,SACR,EAAE,IAAI,IAAI,aACV,OAAO,EAAE,IAAI;AAEjB,WAAO;AAAA,EACR;AACH;AAEAyB,YAAc,UAAG;AACjBA,YAAA,QAAA,cAA6B;AClE7B,IAAIC,aAAY,OAAO;AACvB,IAAIC,mBAAkB,CAAC,KAAK,KAAK,UAAU,OAAO,MAAMD,WAAU,KAAK,KAAK,EAAE,YAAY,MAAM,cAAc,MAAM,UAAU,MAAM,MAAO,CAAA,IAAI,IAAI,GAAG,IAAI;AAC1J,IAAIE,iBAAgB,CAAC,KAAK,KAAK,UAAU;AACvC,EAAAD,iBAAgB,KAAK,OAAO,QAAQ,WAAW,MAAM,KAAK,KAAK,KAAK;AACpE,SAAO;AACT;AAyCA,IAAI,QAAyB,kBAAC,WAAW;AACvC,SAAO,sBAAsB,IAAI;AACjC,SAAO,4BAA4B,IAAI;AACvC,SAAO,kCAAkC,IAAI;AAC7C,SAAO,kCAAkC,IAAI;AAC7C,SAAO,4BAA4B,IAAI;AACvC,SAAO,6BAA6B,IAAI;AACxC,SAAO,+BAA+B,IAAI;AAC1C,SAAO,gBAAgB,IAAI;AAC3B,SAAO,uBAAuB,IAAI;AAClC,SAAO,gBAAgB,IAAI;AAC3B,SAAO,0BAA0B,IAAI;AACrC,SAAO,mBAAmB,IAAI;AAC9B,SAAO,eAAe,IAAI;AAC1B,SAAO,yBAAyB,IAAI;AACpC,SAAO,QAAQ,IAAI;AACnB,SAAO,aAAa,IAAI;AACxB,SAAO,kBAAkB,IAAI;AAC7B,SAAO,kBAAkB,IAAI;AAC7B,SAAO,qBAAqB,IAAI;AAChC,SAAO,mBAAmB,IAAI;AAC9B,SAAO,aAAa,IAAI;AACxB,SAAO,gBAAgB,IAAI;AAC3B,SAAO,wBAAwB,IAAI;AACnC,SAAO,cAAc,IAAI;AACzB,SAAO,cAAc,IAAI;AACzB,SAAO,kBAAkB,IAAI;AAC7B,SAAO,aAAa,IAAI;AACxB,SAAO,SAAS,IAAI;AACpB,SAAO;AACT,GAAG,SAAS,CAAA,CAAE;AACd,IAAI,aAA8B,kBAAC,gBAAgB;AACjD,cAAY,YAAY,IAAI;AAC5B,cAAY,kBAAkB,IAAI;AAClC,cAAY,qBAAqB,IAAI;AACrC,cAAY,sBAAsB,IAAI;AACtC,cAAY,gBAAgB,IAAI;AAChC,cAAY,kBAAkB,IAAI;AAClC,cAAY,mBAAmB,IAAI;AACnC,SAAO;AACT,GAAG,cAAc,CAAA,CAAE;AAkGd,WAAW;AAqjChB,IAAI,iBAAiB,OAAO,eAAe,cAAc,aAAa,OAAO,WAAW,cAAc,SAAS,OAAO,WAAW,cAAc,SAAS,OAAO,SAAS,cAAc,OAAO;AAI7L,IAAI,YAAY,CAAA;AAAA,CACf,SAAS,SAAS;AACjB,GAAC,SAAS,SAAS,SAAS;AAC1B;AACE,cAAQ,OAAO;AAAA,IAChB;AAAA,EACL,GAAK,gBAAgB,SAAS,UAAU;AACpC,aAAS,aAAa;AACtB,aAAS,OAAO;AAChB,aAAS,gBAAgB,UAAU,aAAa;AAC9C,UAAI,EAAE,oBAAoB,cAAc;AACtC,cAAM,IAAI,UAAU,mCAAmC;AAAA,MACxD;AAAA,IACF;AACD,QAAI,oBAAoB;AACxB,QAAI,wBAAwB;AAC5B,QAAI,6BAA6B;AACjC,QAAI,gBAAgB,CAAC,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAClE,aAAS,MAAM,GAAG;AAChB,UAAI,IAAI,KAAK;AACX,YAAI,IAAI,KAAK;AACX,iBAAO,IAAI,KAAK,IAAI;AAAA,QACrB;AACD,YAAI,IAAI,KAAK;AACX,iBAAO,IAAI,MAAM,IAAI;AAAA,QACtB;AACD,eAAO;AAAA,MACR;AACD,UAAI,IAAI,KAAK;AACX,eAAO,IAAI,MAAM,IAAI;AAAA,MACtB;AACD,UAAI,IAAI,KAAK;AACX,eAAO,IAAI,MAAM,IAAI;AAAA,MACtB;AACD,aAAO;AAAA,IACR;AACD,aAAS,oBAAoB,GAAG,GAAG;AACjC,UAAI,MAAM,GAAG;AACX,eAAO;AAAA,MACR;AACD,UAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,GAAG;AAC1B,YAAI,MAAM,KAAK,MAAM,GAAG;AACtB,iBAAO,IAAI,IAAI,KAAK;AAAA,QACrB;AACD,YAAI,IAAI,KAAK,IAAI,GAAG;AAClB,cAAI,KAAK,GAAG;AACV,mBAAO;AAAA,UACR;AACD,cAAI,KAAK,GAAG;AACV,mBAAO;AAAA,UACR;AACD,cAAI,CAAC;AACL,cAAI,CAAC;AAAA,QACN;AACD,YAAI,KAAK,MAAM,CAAC;AAChB,YAAI,KAAK,MAAM,CAAC;AAChB,YAAI,IAAI;AACR,YAAI,KAAK,IAAI;AACX,eAAK,cAAc,KAAK,KAAK,CAAC;AAC9B,eAAK;AACL,cAAI;AAAA,QACd,WAAmB,KAAK,IAAI;AAClB,eAAK,cAAc,KAAK,KAAK,CAAC;AAC9B,eAAK;AACL,cAAI;AAAA,QACL;AACD,YAAI,MAAM,GAAG;AACX,iBAAO;AAAA,QACR;AACD,eAAO,IAAI,IAAI,KAAK;AAAA,MACrB;AACD,UAAI,OAAO,OAAO,CAAC;AACnB,UAAI,OAAO,OAAO,CAAC;AACnB,UAAI,SAAS,MAAM;AACjB,eAAO;AAAA,MACR;AACD,aAAO,OAAO,OAAO,KAAK;AAAA,IAC3B;AACD,aAAS,aAAa,GAAG;AACvB,UAAI,IAAI;AACR,aAAO,KAAK,mBAAmB;AAC7B,aAAK,IAAI;AACT,cAAM;AAAA,MACP;AACD,aAAO,IAAI;AAAA,IACZ;AACD,aAAS,iBAAiB,OAAO,IAAI,IAAI,SAAS;AAChD,UAAI,QAAQ,KAAK;AACjB,UAAI,UAAU,IAAI;AAChB,eAAO;AAAA,MACR;AACD,UAAI,QAAQ,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,GAAG;AAC1C,eAAO,QAAQ,MAAM,QAAQ,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,CAAC,IAAI,GAAG;AAChE;AAAA,QACD;AACD,mBAAW,OAAO,IAAI,KAAK;AAAA,MACnC,OAAa;AACL,eAAO,QAAQ,MAAM,QAAQ,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,CAAC,KAAK,GAAG;AACjE;AAAA,QACD;AAAA,MACF;AACD,aAAO,QAAQ;AAAA,IAChB;AACD,aAAS,WAAW,OAAO,IAAI,IAAI;AACjC;AACA,aAAO,KAAK,IAAI;AACd,YAAI,IAAI,MAAM,EAAE;AAChB,cAAM,IAAI,IAAI,MAAM,EAAE;AACtB,cAAM,IAAI,IAAI;AAAA,MACf;AAAA,IACF;AACD,aAAS,oBAAoB,OAAO,IAAI,IAAI,OAAO,SAAS;AAC1D,UAAI,UAAU,IAAI;AAChB;AAAA,MACD;AACD,aAAO,QAAQ,IAAI,SAAS;AAC1B,YAAI,QAAQ,MAAM,KAAK;AACvB,YAAI,OAAO;AACX,YAAI,QAAQ;AACZ,eAAO,OAAO,OAAO;AACnB,cAAI,MAAM,OAAO,UAAU;AAC3B,cAAI,QAAQ,OAAO,MAAM,GAAG,CAAC,IAAI,GAAG;AAClC,oBAAQ;AAAA,UACpB,OAAiB;AACL,mBAAO,MAAM;AAAA,UACd;AAAA,QACF;AACD,YAAI,IAAI,QAAQ;AAChB,gBAAQ,GAAC;AAAA,UACP,KAAK;AACH,kBAAM,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC;AAAA,UAClC,KAAK;AACH,kBAAM,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC;AAAA,UAClC,KAAK;AACH,kBAAM,OAAO,CAAC,IAAI,MAAM,IAAI;AAC5B;AAAA,UACF;AACE,mBAAO,IAAI,GAAG;AACZ,oBAAM,OAAO,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC;AACpC;AAAA,YACD;AAAA,QACJ;AACD,cAAM,IAAI,IAAI;AAAA,MACf;AAAA,IACF;AACD,aAAS,WAAW,OAAO,OAAO,OAAO,QAAQ,MAAM,SAAS;AAC9D,UAAI,aAAa;AACjB,UAAI,YAAY;AAChB,UAAI,SAAS;AACb,UAAI,QAAQ,OAAO,MAAM,QAAQ,IAAI,CAAC,IAAI,GAAG;AAC3C,oBAAY,SAAS;AACrB,eAAO,SAAS,aAAa,QAAQ,OAAO,MAAM,QAAQ,OAAO,MAAM,CAAC,IAAI,GAAG;AAC7E,uBAAa;AACb,oBAAU,UAAU,KAAK;AACzB,cAAI,UAAU,GAAG;AACf,qBAAS;AAAA,UACV;AAAA,QACF;AACD,YAAI,SAAS,WAAW;AACtB,mBAAS;AAAA,QACV;AACD,sBAAc;AACd,kBAAU;AAAA,MAClB,OAAa;AACL,oBAAY,OAAO;AACnB,eAAO,SAAS,aAAa,QAAQ,OAAO,MAAM,QAAQ,OAAO,MAAM,CAAC,KAAK,GAAG;AAC9E,uBAAa;AACb,oBAAU,UAAU,KAAK;AACzB,cAAI,UAAU,GAAG;AACf,qBAAS;AAAA,UACV;AAAA,QACF;AACD,YAAI,SAAS,WAAW;AACtB,mBAAS;AAAA,QACV;AACD,YAAI,MAAM;AACV,qBAAa,OAAO;AACpB,iBAAS,OAAO;AAAA,MACjB;AACD;AACA,aAAO,aAAa,QAAQ;AAC1B,YAAI,IAAI,cAAc,SAAS,eAAe;AAC9C,YAAI,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC,IAAI,GAAG;AACxC,uBAAa,IAAI;AAAA,QAC3B,OAAe;AACL,mBAAS;AAAA,QACV;AAAA,MACF;AACD,aAAO;AAAA,IACR;AACD,aAAS,YAAY,OAAO,OAAO,OAAO,QAAQ,MAAM,SAAS;AAC/D,UAAI,aAAa;AACjB,UAAI,YAAY;AAChB,UAAI,SAAS;AACb,UAAI,QAAQ,OAAO,MAAM,QAAQ,IAAI,CAAC,IAAI,GAAG;AAC3C,oBAAY,OAAO;AACnB,eAAO,SAAS,aAAa,QAAQ,OAAO,MAAM,QAAQ,OAAO,MAAM,CAAC,IAAI,GAAG;AAC7E,uBAAa;AACb,oBAAU,UAAU,KAAK;AACzB,cAAI,UAAU,GAAG;AACf,qBAAS;AAAA,UACV;AAAA,QACF;AACD,YAAI,SAAS,WAAW;AACtB,mBAAS;AAAA,QACV;AACD,YAAI,MAAM;AACV,qBAAa,OAAO;AACpB,iBAAS,OAAO;AAAA,MACxB,OAAa;AACL,oBAAY,SAAS;AACrB,eAAO,SAAS,aAAa,QAAQ,OAAO,MAAM,QAAQ,OAAO,MAAM,CAAC,KAAK,GAAG;AAC9E,uBAAa;AACb,oBAAU,UAAU,KAAK;AACzB,cAAI,UAAU,GAAG;AACf,qBAAS;AAAA,UACV;AAAA,QACF;AACD,YAAI,SAAS,WAAW;AACtB,mBAAS;AAAA,QACV;AACD,sBAAc;AACd,kBAAU;AAAA,MACX;AACD;AACA,aAAO,aAAa,QAAQ;AAC1B,YAAI,IAAI,cAAc,SAAS,eAAe;AAC9C,YAAI,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC,IAAI,GAAG;AACxC,mBAAS;AAAA,QACnB,OAAe;AACL,uBAAa,IAAI;AAAA,QAClB;AAAA,MACF;AACD,aAAO;AAAA,IACR;AACD,QAAI,UAAU,WAAW;AACvB,eAAS,SAAS,OAAO,SAAS;AAChC,wBAAgB,MAAM,QAAQ;AAC9B,aAAK,QAAQ;AACb,aAAK,UAAU;AACf,aAAK,YAAY;AACjB,aAAK,SAAS;AACd,aAAK,mBAAmB;AACxB,aAAK,cAAc;AACnB,aAAK,WAAW;AAChB,aAAK,YAAY;AACjB,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,aAAK,UAAU;AACf,aAAK,SAAS,MAAM;AACpB,YAAI,KAAK,SAAS,IAAI,4BAA4B;AAChD,eAAK,mBAAmB,KAAK,WAAW;AAAA,QACzC;AACD,aAAK,MAAM,IAAI,MAAM,KAAK,gBAAgB;AAC1C,aAAK,cAAc,KAAK,SAAS,MAAM,IAAI,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,SAAS,KAAK;AACjG,aAAK,WAAW,IAAI,MAAM,KAAK,WAAW;AAC1C,aAAK,YAAY,IAAI,MAAM,KAAK,WAAW;AAAA,MAC5C;AACD,eAAS,UAAU,UAAU,SAAS,QAAQ,UAAU,WAAW;AACjE,aAAK,SAAS,KAAK,SAAS,IAAI;AAChC,aAAK,UAAU,KAAK,SAAS,IAAI;AACjC,aAAK,aAAa;AAAA,MAC1B;AACM,eAAS,UAAU,YAAY,SAAS,YAAY;AAClD,eAAO,KAAK,YAAY,GAAG;AACzB,cAAI,IAAI,KAAK,YAAY;AACzB,cAAI,KAAK,KAAK,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AAChK,gBAAI,KAAK,UAAU,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AACjD;AAAA,YACD;AAAA,UACb,WAAqB,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AACpD;AAAA,UACD;AACD,eAAK,QAAQ,CAAC;AAAA,QACf;AAAA,MACT;AACM,eAAS,UAAU,iBAAiB,SAAS,iBAAiB;AAC5D,eAAO,KAAK,YAAY,GAAG;AACzB,cAAI,IAAI,KAAK,YAAY;AACzB,cAAI,IAAI,KAAK,KAAK,UAAU,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG;AAC1D;AAAA,UACD;AACD,eAAK,QAAQ,CAAC;AAAA,QACf;AAAA,MACT;AACM,eAAS,UAAU,UAAU,SAAS,QAAQ,GAAG;AAC/C,YAAI,UAAU,KAAK;AACnB,YAAI,QAAQ,KAAK;AACjB,YAAI,SAAS,KAAK,SAAS,CAAC;AAC5B,YAAI,UAAU,KAAK,UAAU,CAAC;AAC9B,YAAI,SAAS,KAAK,SAAS,IAAI,CAAC;AAChC,YAAI,UAAU,KAAK,UAAU,IAAI,CAAC;AAClC,aAAK,UAAU,CAAC,IAAI,UAAU;AAC9B,YAAI,MAAM,KAAK,YAAY,GAAG;AAC5B,eAAK,SAAS,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC;AAC1C,eAAK,UAAU,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC;AAAA,QAC7C;AACD,aAAK;AACL,YAAI,IAAI,YAAY,MAAM,MAAM,GAAG,OAAO,QAAQ,SAAS,GAAG,OAAO;AACrE,kBAAU;AACV,mBAAW;AACX,YAAI,YAAY,GAAG;AACjB;AAAA,QACD;AACD,kBAAU,WAAW,MAAM,SAAS,UAAU,CAAC,GAAG,OAAO,QAAQ,SAAS,UAAU,GAAG,OAAO;AAC9F,YAAI,YAAY,GAAG;AACjB;AAAA,QACD;AACD,YAAI,WAAW,SAAS;AACtB,eAAK,SAAS,QAAQ,SAAS,QAAQ,OAAO;AAAA,QACxD,OAAe;AACL,eAAK,UAAU,QAAQ,SAAS,QAAQ,OAAO;AAAA,QAChD;AAAA,MACT;AACM,eAAS,UAAU,WAAW,SAAS,SAAS,QAAQ,SAAS,QAAQ,SAAS;AAChF,YAAI,UAAU,KAAK;AACnB,YAAI,QAAQ,KAAK;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,IAAI;AACR,aAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,cAAI,CAAC,IAAI,MAAM,SAAS,CAAC;AAAA,QAC1B;AACD,YAAI,UAAU;AACd,YAAI,UAAU;AACd,YAAI,OAAO;AACX,cAAM,MAAM,IAAI,MAAM,SAAS;AAC/B,YAAI,EAAE,YAAY,GAAG;AACnB,eAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,kBAAM,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;AAAA,UAClC;AACD;AAAA,QACD;AACD,YAAI,YAAY,GAAG;AACjB,eAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,kBAAM,OAAO,CAAC,IAAI,MAAM,UAAU,CAAC;AAAA,UACpC;AACD,gBAAM,OAAO,OAAO,IAAI,IAAI,OAAO;AACnC;AAAA,QACD;AACD,YAAI,YAAY,KAAK;AACrB,eAAO,MAAM;AACX,cAAI,SAAS;AACb,cAAI,SAAS;AACb,cAAI,OAAO;AACX,aAAG;AACD,gBAAI,QAAQ,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,GAAG;AAC7C,oBAAM,MAAM,IAAI,MAAM,SAAS;AAC/B;AACA,uBAAS;AACT,kBAAI,EAAE,YAAY,GAAG;AACnB,uBAAO;AACP;AAAA,cACD;AAAA,YACf,OAAmB;AACL,oBAAM,MAAM,IAAI,IAAI,SAAS;AAC7B;AACA,uBAAS;AACT,kBAAI,EAAE,YAAY,GAAG;AACnB,uBAAO;AACP;AAAA,cACD;AAAA,YACF;AAAA,UACb,UAAoB,SAAS,UAAU;AAC7B,cAAI,MAAM;AACR;AAAA,UACD;AACD,aAAG;AACD,qBAAS,YAAY,MAAM,OAAO,GAAG,KAAK,SAAS,SAAS,GAAG,OAAO;AACtE,gBAAI,WAAW,GAAG;AAChB,mBAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,sBAAM,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;AAAA,cAClC;AACD,sBAAQ;AACR,yBAAW;AACX,yBAAW;AACX,kBAAI,WAAW,GAAG;AAChB,uBAAO;AACP;AAAA,cACD;AAAA,YACF;AACD,kBAAM,MAAM,IAAI,MAAM,SAAS;AAC/B,gBAAI,EAAE,YAAY,GAAG;AACnB,qBAAO;AACP;AAAA,YACD;AACD,qBAAS,WAAW,IAAI,OAAO,GAAG,OAAO,SAAS,SAAS,GAAG,OAAO;AACrE,gBAAI,WAAW,GAAG;AAChB,mBAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,sBAAM,OAAO,CAAC,IAAI,MAAM,UAAU,CAAC;AAAA,cACpC;AACD,sBAAQ;AACR,yBAAW;AACX,yBAAW;AACX,kBAAI,YAAY,GAAG;AACjB,uBAAO;AACP;AAAA,cACD;AAAA,YACF;AACD,kBAAM,MAAM,IAAI,IAAI,SAAS;AAC7B,gBAAI,EAAE,YAAY,GAAG;AACnB,qBAAO;AACP;AAAA,YACD;AACD;AAAA,UACD,SAAQ,UAAU,yBAAyB,UAAU;AACtD,cAAI,MAAM;AACR;AAAA,UACD;AACD,cAAI,YAAY,GAAG;AACjB,wBAAY;AAAA,UACb;AACD,uBAAa;AAAA,QACd;AACD,aAAK,YAAY;AACjB,YAAI,YAAY,GAAG;AACjB,eAAK,YAAY;AAAA,QAClB;AACD,YAAI,YAAY,GAAG;AACjB,eAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,kBAAM,OAAO,CAAC,IAAI,MAAM,UAAU,CAAC;AAAA,UACpC;AACD,gBAAM,OAAO,OAAO,IAAI,IAAI,OAAO;AAAA,QAC7C,WAAmB,YAAY,GAAG;AACxB,gBAAM,IAAI,MAAM,2CAA2C;AAAA,QACrE,OAAe;AACL,eAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,kBAAM,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;AAAA,UAClC;AAAA,QACF;AAAA,MACT;AACM,eAAS,UAAU,YAAY,SAAS,UAAU,QAAQ,SAAS,QAAQ,SAAS;AAClF,YAAI,UAAU,KAAK;AACnB,YAAI,QAAQ,KAAK;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,IAAI;AACR,aAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,cAAI,CAAC,IAAI,MAAM,SAAS,CAAC;AAAA,QAC1B;AACD,YAAI,UAAU,SAAS,UAAU;AACjC,YAAI,UAAU,UAAU;AACxB,YAAI,OAAO,SAAS,UAAU;AAC9B,YAAI,eAAe;AACnB,YAAI,aAAa;AACjB,cAAM,MAAM,IAAI,MAAM,SAAS;AAC/B,YAAI,EAAE,YAAY,GAAG;AACnB,yBAAe,QAAQ,UAAU;AACjC,eAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,kBAAM,eAAe,CAAC,IAAI,IAAI,CAAC;AAAA,UAChC;AACD;AAAA,QACD;AACD,YAAI,YAAY,GAAG;AACjB,kBAAQ;AACR,qBAAW;AACX,uBAAa,OAAO;AACpB,yBAAe,UAAU;AACzB,eAAK,IAAI,UAAU,GAAG,KAAK,GAAG,KAAK;AACjC,kBAAM,aAAa,CAAC,IAAI,MAAM,eAAe,CAAC;AAAA,UAC/C;AACD,gBAAM,IAAI,IAAI,IAAI,OAAO;AACzB;AAAA,QACD;AACD,YAAI,YAAY,KAAK;AACrB,eAAO,MAAM;AACX,cAAI,SAAS;AACb,cAAI,SAAS;AACb,cAAI,OAAO;AACX,aAAG;AACD,gBAAI,QAAQ,IAAI,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,GAAG;AAC7C,oBAAM,MAAM,IAAI,MAAM,SAAS;AAC/B;AACA,uBAAS;AACT,kBAAI,EAAE,YAAY,GAAG;AACnB,uBAAO;AACP;AAAA,cACD;AAAA,YACf,OAAmB;AACL,oBAAM,MAAM,IAAI,IAAI,SAAS;AAC7B;AACA,uBAAS;AACT,kBAAI,EAAE,YAAY,GAAG;AACnB,uBAAO;AACP;AAAA,cACD;AAAA,YACF;AAAA,UACb,UAAoB,SAAS,UAAU;AAC7B,cAAI,MAAM;AACR;AAAA,UACD;AACD,aAAG;AACD,qBAAS,UAAU,YAAY,IAAI,OAAO,GAAG,OAAO,QAAQ,SAAS,UAAU,GAAG,OAAO;AACzF,gBAAI,WAAW,GAAG;AAChB,sBAAQ;AACR,yBAAW;AACX,yBAAW;AACX,2BAAa,OAAO;AACpB,6BAAe,UAAU;AACzB,mBAAK,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AAChC,sBAAM,aAAa,CAAC,IAAI,MAAM,eAAe,CAAC;AAAA,cAC/C;AACD,kBAAI,YAAY,GAAG;AACjB,uBAAO;AACP;AAAA,cACD;AAAA,YACF;AACD,kBAAM,MAAM,IAAI,IAAI,SAAS;AAC7B,gBAAI,EAAE,YAAY,GAAG;AACnB,qBAAO;AACP;AAAA,YACD;AACD,qBAAS,UAAU,WAAW,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS,UAAU,GAAG,OAAO;AACnF,gBAAI,WAAW,GAAG;AAChB,sBAAQ;AACR,yBAAW;AACX,yBAAW;AACX,2BAAa,OAAO;AACpB,6BAAe,UAAU;AACzB,mBAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,sBAAM,aAAa,CAAC,IAAI,IAAI,eAAe,CAAC;AAAA,cAC7C;AACD,kBAAI,WAAW,GAAG;AAChB,uBAAO;AACP;AAAA,cACD;AAAA,YACF;AACD,kBAAM,MAAM,IAAI,MAAM,SAAS;AAC/B,gBAAI,EAAE,YAAY,GAAG;AACnB,qBAAO;AACP;AAAA,YACD;AACD;AAAA,UACD,SAAQ,UAAU,yBAAyB,UAAU;AACtD,cAAI,MAAM;AACR;AAAA,UACD;AACD,cAAI,YAAY,GAAG;AACjB,wBAAY;AAAA,UACb;AACD,uBAAa;AAAA,QACd;AACD,aAAK,YAAY;AACjB,YAAI,YAAY,GAAG;AACjB,eAAK,YAAY;AAAA,QAClB;AACD,YAAI,YAAY,GAAG;AACjB,kBAAQ;AACR,qBAAW;AACX,uBAAa,OAAO;AACpB,yBAAe,UAAU;AACzB,eAAK,IAAI,UAAU,GAAG,KAAK,GAAG,KAAK;AACjC,kBAAM,aAAa,CAAC,IAAI,MAAM,eAAe,CAAC;AAAA,UAC/C;AACD,gBAAM,IAAI,IAAI,IAAI,OAAO;AAAA,QACnC,WAAmB,YAAY,GAAG;AACxB,gBAAM,IAAI,MAAM,4CAA4C;AAAA,QACtE,OAAe;AACL,yBAAe,QAAQ,UAAU;AACjC,eAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,kBAAM,eAAe,CAAC,IAAI,IAAI,CAAC;AAAA,UAChC;AAAA,QACF;AAAA,MACT;AACM,aAAO;AAAA,IACb;AACI,aAAS,KAAK,OAAO,SAAS,IAAI,IAAI;AACpC,UAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,cAAM,IAAI,UAAU,sBAAsB;AAAA,MAC3C;AACD,UAAI,CAAC,SAAS;AACZ,kBAAU;AAAA,MAClB,WAAiB,OAAO,YAAY,YAAY;AACxC,aAAK;AACL,aAAK;AACL,kBAAU;AAAA,MACX;AACD,UAAI,CAAC,IAAI;AACP,aAAK;AAAA,MACN;AACD,UAAI,CAAC,IAAI;AACP,aAAK,MAAM;AAAA,MACZ;AACD,UAAI,YAAY,KAAK;AACrB,UAAI,YAAY,GAAG;AACjB;AAAA,MACD;AACD,UAAI,YAAY;AAChB,UAAI,YAAY,mBAAmB;AACjC,oBAAY,iBAAiB,OAAO,IAAI,IAAI,OAAO;AACnD,4BAAoB,OAAO,IAAI,IAAI,KAAK,WAAW,OAAO;AAC1D;AAAA,MACD;AACD,UAAI,KAAK,IAAI,QAAQ,OAAO,OAAO;AACnC,UAAI,SAAS,aAAa,SAAS;AACnC,SAAG;AACD,oBAAY,iBAAiB,OAAO,IAAI,IAAI,OAAO;AACnD,YAAI,YAAY,QAAQ;AACtB,cAAI,QAAQ;AACZ,cAAI,QAAQ,QAAQ;AAClB,oBAAQ;AAAA,UACT;AACD,8BAAoB,OAAO,IAAI,KAAK,OAAO,KAAK,WAAW,OAAO;AAClE,sBAAY;AAAA,QACb;AACD,WAAG,QAAQ,IAAI,SAAS;AACxB,WAAG,UAAS;AACZ,qBAAa;AACb,cAAM;AAAA,MACd,SAAe,cAAc;AACvB,SAAG,eAAc;AAAA,IAClB;AAAA,EACL,CAAG;AACH,GAAG,SAAS;AAwqBZ,IAAI,eAAe,EAAE,SAAS,CAAA;AAC9B,IAAI;AACJ,IAAI;AACJ,SAAS,mBAAmB;AAC1B,MAAI;AACF,WAAO;AACT,yBAAuB;AACvB,cAAY;AAAA,IACV,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,QAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,IACpB,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,SAAS,CAAC,GAAG,GAAG,CAAC;AAAA,IACjB,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,QAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,IAClB,cAAc,CAAC,KAAK,IAAI,GAAG;AAAA,IAC3B,SAAS,CAAC,KAAK,IAAI,EAAE;AAAA,IACrB,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,IAC1B,cAAc,CAAC,KAAK,KAAK,CAAC;AAAA,IAC1B,aAAa,CAAC,KAAK,KAAK,EAAE;AAAA,IAC1B,SAAS,CAAC,KAAK,KAAK,EAAE;AAAA,IACtB,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,WAAW,CAAC,KAAK,IAAI,EAAE;AAAA,IACvB,QAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,IACpB,YAAY,CAAC,GAAG,GAAG,GAAG;AAAA,IACtB,YAAY,CAAC,GAAG,KAAK,GAAG;AAAA,IACxB,iBAAiB,CAAC,KAAK,KAAK,EAAE;AAAA,IAC9B,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,aAAa,CAAC,GAAG,KAAK,CAAC;AAAA,IACvB,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,eAAe,CAAC,KAAK,GAAG,GAAG;AAAA,IAC3B,kBAAkB,CAAC,IAAI,KAAK,EAAE;AAAA,IAC9B,cAAc,CAAC,KAAK,KAAK,CAAC;AAAA,IAC1B,cAAc,CAAC,KAAK,IAAI,GAAG;AAAA,IAC3B,WAAW,CAAC,KAAK,GAAG,CAAC;AAAA,IACrB,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,iBAAiB,CAAC,IAAI,IAAI,GAAG;AAAA,IAC7B,iBAAiB,CAAC,IAAI,IAAI,EAAE;AAAA,IAC5B,iBAAiB,CAAC,IAAI,IAAI,EAAE;AAAA,IAC5B,iBAAiB,CAAC,GAAG,KAAK,GAAG;AAAA,IAC7B,cAAc,CAAC,KAAK,GAAG,GAAG;AAAA,IAC1B,YAAY,CAAC,KAAK,IAAI,GAAG;AAAA,IACzB,eAAe,CAAC,GAAG,KAAK,GAAG;AAAA,IAC3B,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,cAAc,CAAC,IAAI,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,KAAK,IAAI,EAAE;AAAA,IACzB,eAAe,CAAC,KAAK,KAAK,GAAG;AAAA,IAC7B,eAAe,CAAC,IAAI,KAAK,EAAE;AAAA,IAC3B,WAAW,CAAC,KAAK,GAAG,GAAG;AAAA,IACvB,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,QAAQ,CAAC,KAAK,KAAK,CAAC;AAAA,IACpB,aAAa,CAAC,KAAK,KAAK,EAAE;AAAA,IAC1B,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,SAAS,CAAC,GAAG,KAAK,CAAC;AAAA,IACnB,eAAe,CAAC,KAAK,KAAK,EAAE;AAAA,IAC5B,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,aAAa,CAAC,KAAK,IAAI,EAAE;AAAA,IACzB,UAAU,CAAC,IAAI,GAAG,GAAG;AAAA,IACrB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,iBAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC/B,aAAa,CAAC,KAAK,KAAK,CAAC;AAAA,IACzB,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,wBAAwB,CAAC,KAAK,KAAK,GAAG;AAAA,IACtC,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,eAAe,CAAC,KAAK,KAAK,GAAG;AAAA,IAC7B,iBAAiB,CAAC,IAAI,KAAK,GAAG;AAAA,IAC9B,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,kBAAkB,CAAC,KAAK,KAAK,GAAG;AAAA,IAChC,eAAe,CAAC,KAAK,KAAK,GAAG;AAAA,IAC7B,QAAQ,CAAC,GAAG,KAAK,CAAC;AAAA,IAClB,aAAa,CAAC,IAAI,KAAK,EAAE;AAAA,IACzB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,WAAW,CAAC,KAAK,GAAG,GAAG;AAAA,IACvB,UAAU,CAAC,KAAK,GAAG,CAAC;AAAA,IACpB,oBAAoB,CAAC,KAAK,KAAK,GAAG;AAAA,IAClC,cAAc,CAAC,GAAG,GAAG,GAAG;AAAA,IACxB,gBAAgB,CAAC,KAAK,IAAI,GAAG;AAAA,IAC7B,gBAAgB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC9B,kBAAkB,CAAC,IAAI,KAAK,GAAG;AAAA,IAC/B,mBAAmB,CAAC,KAAK,KAAK,GAAG;AAAA,IACjC,qBAAqB,CAAC,GAAG,KAAK,GAAG;AAAA,IACjC,mBAAmB,CAAC,IAAI,KAAK,GAAG;AAAA,IAChC,mBAAmB,CAAC,KAAK,IAAI,GAAG;AAAA,IAChC,gBAAgB,CAAC,IAAI,IAAI,GAAG;AAAA,IAC5B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,eAAe,CAAC,KAAK,KAAK,GAAG;AAAA,IAC7B,QAAQ,CAAC,GAAG,GAAG,GAAG;AAAA,IAClB,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,SAAS,CAAC,KAAK,KAAK,CAAC;AAAA,IACrB,aAAa,CAAC,KAAK,KAAK,EAAE;AAAA,IAC1B,UAAU,CAAC,KAAK,KAAK,CAAC;AAAA,IACtB,aAAa,CAAC,KAAK,IAAI,CAAC;AAAA,IACxB,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,iBAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC/B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,iBAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC/B,iBAAiB,CAAC,KAAK,KAAK,GAAG;AAAA,IAC/B,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,QAAQ,CAAC,KAAK,KAAK,EAAE;AAAA,IACrB,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,UAAU,CAAC,KAAK,GAAG,GAAG;AAAA,IACtB,iBAAiB,CAAC,KAAK,IAAI,GAAG;AAAA,IAC9B,OAAO,CAAC,KAAK,GAAG,CAAC;AAAA,IACjB,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,IAC1B,eAAe,CAAC,KAAK,IAAI,EAAE;AAAA,IAC3B,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,cAAc,CAAC,KAAK,KAAK,EAAE;AAAA,IAC3B,YAAY,CAAC,IAAI,KAAK,EAAE;AAAA,IACxB,YAAY,CAAC,KAAK,KAAK,GAAG;AAAA,IAC1B,UAAU,CAAC,KAAK,IAAI,EAAE;AAAA,IACtB,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,aAAa,CAAC,KAAK,IAAI,GAAG;AAAA,IAC1B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,KAAK,KAAK,GAAG;AAAA,IAC3B,QAAQ,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB,eAAe,CAAC,GAAG,KAAK,GAAG;AAAA,IAC3B,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,IAC1B,OAAO,CAAC,KAAK,KAAK,GAAG;AAAA,IACrB,QAAQ,CAAC,GAAG,KAAK,GAAG;AAAA,IACpB,WAAW,CAAC,KAAK,KAAK,GAAG;AAAA,IACzB,UAAU,CAAC,KAAK,IAAI,EAAE;AAAA,IACtB,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,IAC1B,UAAU,CAAC,KAAK,KAAK,GAAG;AAAA,IACxB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,SAAS,CAAC,KAAK,KAAK,GAAG;AAAA,IACvB,cAAc,CAAC,KAAK,KAAK,GAAG;AAAA,IAC5B,UAAU,CAAC,KAAK,KAAK,CAAC;AAAA,IACtB,eAAe,CAAC,KAAK,KAAK,EAAE;AAAA,EAChC;AACE,SAAO;AACT;AACA,IAAI;AACJ,IAAI;AACJ,SAAS,qBAAqB;AAC5B,MAAI;AACF,WAAO;AACT,2BAAyB;AACzB,QAAM,cAAc;AACpB,QAAM,kBAAkB,CAAA;AACxB,aAAW,OAAO,OAAO,KAAK,WAAW,GAAG;AAC1C,oBAAgB,YAAY,GAAG,CAAC,IAAI;AAAA,EACrC;AACD,QAAM,UAAU;AAAA,IACd,KAAK,EAAE,UAAU,GAAG,QAAQ,MAAO;AAAA,IACnC,KAAK,EAAE,UAAU,GAAG,QAAQ,MAAO;AAAA,IACnC,KAAK,EAAE,UAAU,GAAG,QAAQ,MAAO;AAAA,IACnC,KAAK,EAAE,UAAU,GAAG,QAAQ,MAAO;AAAA,IACnC,MAAM,EAAE,UAAU,GAAG,QAAQ,OAAQ;AAAA,IACrC,KAAK,EAAE,UAAU,GAAG,QAAQ,MAAO;AAAA,IACnC,KAAK,EAAE,UAAU,GAAG,QAAQ,MAAO;AAAA,IACnC,KAAK,EAAE,UAAU,GAAG,QAAQ,MAAO;AAAA,IACnC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAG;AAAA,IACrC,SAAS,EAAE,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAG;AAAA,IAC7C,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAG;AAAA,IAC3C,SAAS,EAAE,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAG;AAAA,IAC7C,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC,KAAK,KAAK,GAAG,EAAG;AAAA,IAC7C,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC,OAAO,OAAO,KAAK,EAAG;AAAA,IACrD,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAG;AAAA,EAC3C;AACE,gBAAc;AACd,aAAW,SAAS,OAAO,KAAK,OAAO,GAAG;AACxC,QAAI,EAAE,cAAc,QAAQ,KAAK,IAAI;AACnC,YAAM,IAAI,MAAM,gCAAgC,KAAK;AAAA,IACtD;AACD,QAAI,EAAE,YAAY,QAAQ,KAAK,IAAI;AACjC,YAAM,IAAI,MAAM,sCAAsC,KAAK;AAAA,IAC5D;AACD,QAAI,QAAQ,KAAK,EAAE,OAAO,WAAW,QAAQ,KAAK,EAAE,UAAU;AAC5D,YAAM,IAAI,MAAM,wCAAwC,KAAK;AAAA,IAC9D;AACD,UAAM,EAAE,UAAU,OAAQ,IAAG,QAAQ,KAAK;AAC1C,WAAO,QAAQ,KAAK,EAAE;AACtB,WAAO,QAAQ,KAAK,EAAE;AACtB,WAAO,eAAe,QAAQ,KAAK,GAAG,YAAY,EAAE,OAAO,SAAQ,CAAE;AACrE,WAAO,eAAe,QAAQ,KAAK,GAAG,UAAU,EAAE,OAAO,OAAM,CAAE;AAAA,EAClE;AACD,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5B,UAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5B,UAAM,QAAQ,MAAM;AACpB,QAAI;AACJ,QAAI;AACJ,QAAI,QAAQ,KAAK;AACf,UAAI;AAAA,IACV,WAAe,MAAM,KAAK;AACpB,WAAK,IAAI,KAAK;AAAA,IACpB,WAAe,MAAM,KAAK;AACpB,UAAI,KAAK,IAAI,KAAK;AAAA,IACxB,WAAe,MAAM,KAAK;AACpB,UAAI,KAAK,IAAI,KAAK;AAAA,IACnB;AACD,QAAI,KAAK,IAAI,IAAI,IAAI,GAAG;AACxB,QAAI,IAAI,GAAG;AACT,WAAK;AAAA,IACN;AACD,UAAM,KAAK,MAAM,OAAO;AACxB,QAAI,QAAQ,KAAK;AACf,UAAI;AAAA,IACV,WAAe,KAAK,KAAK;AACnB,UAAI,SAAS,MAAM;AAAA,IACzB,OAAW;AACL,UAAI,SAAS,IAAI,MAAM;AAAA,IACxB;AACD,WAAO,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EAC/B;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AAC1B,UAAM,OAAO,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC;AACjC,UAAM,QAAQ,SAAS,GAAG;AACxB,cAAQ,IAAI,KAAK,IAAI,OAAO,IAAI;AAAA,IACtC;AACI,QAAI,SAAS,GAAG;AACd,UAAI;AACJ,UAAI;AAAA,IACV,OAAW;AACL,UAAI,OAAO;AACX,aAAO,MAAM,CAAC;AACd,aAAO,MAAM,CAAC;AACd,aAAO,MAAM,CAAC;AACd,UAAI,MAAM,GAAG;AACX,YAAI,OAAO;AAAA,MACnB,WAAiB,MAAM,GAAG;AAClB,YAAI,IAAI,IAAI,OAAO;AAAA,MAC3B,WAAiB,MAAM,GAAG;AAClB,YAAI,IAAI,IAAI,OAAO;AAAA,MACpB;AACD,UAAI,IAAI,GAAG;AACT,aAAK;AAAA,MACb,WAAiB,IAAI,GAAG;AAChB,aAAK;AAAA,MACN;AAAA,IACF;AACD,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACV;AAAA,EACA;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,QAAI,IAAI,IAAI,CAAC;AACb,UAAM,IAAI,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;AAChC,UAAM,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAC9C,QAAI,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAC5C,WAAO,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EAC/B;AACE,UAAQ,IAAI,OAAO,SAAS,KAAK;AAC/B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACtC,UAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;AACnC,UAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;AACnC,UAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;AACnC,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EAC9C;AACE,WAAS,oBAAoB,GAAG,GAAG;AACjC,YAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM;AAAA,EACnE;AACD,UAAQ,IAAI,UAAU,SAAS,KAAK;AAClC,UAAM,WAAW,gBAAgB,GAAG;AACpC,QAAI,UAAU;AACZ,aAAO;AAAA,IACR;AACD,QAAI,yBAAyB;AAC7B,QAAI;AACJ,eAAW,WAAW,OAAO,KAAK,WAAW,GAAG;AAC9C,YAAM,QAAQ,YAAY,OAAO;AACjC,YAAM,WAAW,oBAAoB,KAAK,KAAK;AAC/C,UAAI,WAAW,wBAAwB;AACrC,iCAAyB;AACzB,gCAAwB;AAAA,MACzB;AAAA,IACF;AACD,WAAO;AAAA,EACX;AACE,UAAQ,QAAQ,MAAM,SAAS,SAAS;AACtC,WAAO,YAAY,OAAO;AAAA,EAC9B;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,IAAI,YAAY,IAAI,SAAS,UAAU,MAAM,IAAI;AACrD,QAAI,IAAI,YAAY,IAAI,SAAS,UAAU,MAAM,IAAI;AACrD,QAAI,IAAI,YAAY,IAAI,SAAS,UAAU,MAAM,IAAI;AACrD,UAAM,IAAI,IAAI,SAAS,IAAI,SAAS,IAAI;AACxC,UAAM,IAAI,IAAI,SAAS,IAAI,SAAS,IAAI;AACxC,UAAM,IAAI,IAAI,SAAS,IAAI,SAAS,IAAI;AACxC,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EACrC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,MAAM,QAAQ,IAAI,IAAI,GAAG;AAC/B,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,IAAI,IAAI,CAAC;AACb,SAAK;AACL,SAAK;AACL,SAAK;AACL,QAAI,IAAI,UAAU,MAAM,IAAI,KAAK,QAAQ,IAAI,KAAK;AAClD,QAAI,IAAI,UAAU,MAAM,IAAI,KAAK,QAAQ,IAAI,KAAK;AAClD,QAAI,IAAI,UAAU,MAAM,IAAI,KAAK,QAAQ,IAAI,KAAK;AAClD,UAAM,IAAI,MAAM,IAAI;AACpB,UAAM,IAAI,OAAO,IAAI;AACrB,UAAM,IAAI,OAAO,IAAI;AACrB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EACnB;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,MAAM,GAAG;AACX,YAAM,IAAI;AACV,aAAO,CAAC,KAAK,KAAK,GAAG;AAAA,IACtB;AACD,QAAI,IAAI,KAAK;AACX,WAAK,KAAK,IAAI;AAAA,IACpB,OAAW;AACL,WAAK,IAAI,IAAI,IAAI;AAAA,IAClB;AACD,UAAM,KAAK,IAAI,IAAI;AACnB,UAAM,MAAM,CAAC,GAAG,GAAG,CAAC;AACpB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,WAAK,IAAI,IAAI,IAAI,EAAE,IAAI;AACvB,UAAI,KAAK,GAAG;AACV;AAAA,MACD;AACD,UAAI,KAAK,GAAG;AACV;AAAA,MACD;AACD,UAAI,IAAI,KAAK,GAAG;AACd,cAAM,MAAM,KAAK,MAAM,IAAI;AAAA,MACnC,WAAiB,IAAI,KAAK,GAAG;AACrB,cAAM;AAAA,MACd,WAAiB,IAAI,KAAK,GAAG;AACrB,cAAM,MAAM,KAAK,OAAO,IAAI,IAAI,MAAM;AAAA,MAC9C,OAAa;AACL,cAAM;AAAA,MACP;AACD,UAAI,CAAC,IAAI,MAAM;AAAA,IAChB;AACD,WAAO;AAAA,EACX;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC;AACf,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,QAAI,OAAO;AACX,UAAM,OAAO,KAAK,IAAI,GAAG,IAAI;AAC7B,SAAK;AACL,SAAK,KAAK,IAAI,IAAI,IAAI;AACtB,YAAQ,QAAQ,IAAI,OAAO,IAAI;AAC/B,UAAM,KAAK,IAAI,KAAK;AACpB,UAAM,KAAK,MAAM,IAAI,IAAI,QAAQ,OAAO,QAAQ,IAAI,KAAK,IAAI;AAC7D,WAAO,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG;AAAA,EAChC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI,IAAI,IAAI,CAAC,IAAI;AACjB,UAAM,KAAK,KAAK,MAAM,CAAC,IAAI;AAC3B,UAAM,IAAI,IAAI,KAAK,MAAM,CAAC;AAC1B,UAAM,IAAI,MAAM,KAAK,IAAI;AACzB,UAAM,IAAI,MAAM,KAAK,IAAI,IAAI;AAC7B,UAAM,IAAI,MAAM,KAAK,IAAI,KAAK,IAAI;AAClC,SAAK;AACL,YAAQ,IAAE;AAAA,MACR,KAAK;AACH,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MACjB,KAAK;AACH,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MACjB,KAAK;AACH,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MACjB,KAAK;AACH,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MACjB,KAAK;AACH,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MACjB,KAAK;AACH,eAAO,CAAC,GAAG,GAAG,CAAC;AAAA,IAClB;AAAA,EACL;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,OAAO,KAAK,IAAI,GAAG,IAAI;AAC7B,QAAI;AACJ,QAAI;AACJ,SAAK,IAAI,KAAK;AACd,UAAM,QAAQ,IAAI,KAAK;AACvB,SAAK,IAAI;AACT,UAAM,QAAQ,IAAI,OAAO,IAAI;AAC7B,SAAK,MAAM;AACX,SAAK;AACL,WAAO,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG;AAAA,EAChC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI,KAAK,IAAI,CAAC,IAAI;AAClB,QAAI,KAAK,IAAI,CAAC,IAAI;AAClB,UAAM,QAAQ,KAAK;AACnB,QAAI;AACJ,QAAI,QAAQ,GAAG;AACb,YAAM;AACN,YAAM;AAAA,IACP;AACD,UAAM,IAAI,KAAK,MAAM,IAAI,CAAC;AAC1B,UAAM,IAAI,IAAI;AACd,QAAI,IAAI,IAAI;AACZ,SAAK,IAAI,OAAO,GAAG;AACjB,UAAI,IAAI;AAAA,IACT;AACD,UAAM,IAAI,KAAK,KAAK,IAAI;AACxB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,YAAQ,GAAC;AAAA,MACP;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AACH,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ;AAAA,MACF,KAAK;AACH,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ;AAAA,MACF,KAAK;AACH,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ;AAAA,MACF,KAAK;AACH,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ;AAAA,MACF,KAAK;AACH,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ;AAAA,MACF,KAAK;AACH,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ;AAAA,IACH;AACD,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EACrC;AACE,UAAQ,KAAK,MAAM,SAAS,MAAM;AAChC,UAAM,IAAI,KAAK,CAAC,IAAI;AACpB,UAAM,IAAI,KAAK,CAAC,IAAI;AACpB,UAAM,IAAI,KAAK,CAAC,IAAI;AACpB,UAAM,IAAI,KAAK,CAAC,IAAI;AACpB,UAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AACzC,UAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AACzC,UAAM,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC;AACzC,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EACrC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,IAAI,SAAS,IAAI,UAAU,IAAI;AACnC,QAAI,IAAI,UAAU,IAAI,SAAS,IAAI;AACnC,QAAI,IAAI,SAAS,IAAI,SAAS,IAAI;AAClC,QAAI,IAAI,WAAW,QAAQ,MAAM,IAAI,OAAO,QAAQ,IAAI;AACxD,QAAI,IAAI,WAAW,QAAQ,MAAM,IAAI,OAAO,QAAQ,IAAI;AACxD,QAAI,IAAI,WAAW,QAAQ,MAAM,IAAI,OAAO,QAAQ,IAAI;AACxD,QAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAC9B,WAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,EACrC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,IAAI,IAAI,CAAC;AACb,SAAK;AACL,SAAK;AACL,SAAK;AACL,QAAI,IAAI,UAAU,MAAM,IAAI,KAAK,QAAQ,IAAI,KAAK;AAClD,QAAI,IAAI,UAAU,MAAM,IAAI,KAAK,QAAQ,IAAI,KAAK;AAClD,QAAI,IAAI,UAAU,MAAM,IAAI,KAAK,QAAQ,IAAI,KAAK;AAClD,UAAM,IAAI,MAAM,IAAI;AACpB,UAAM,IAAI,OAAO,IAAI;AACrB,UAAM,IAAI,OAAO,IAAI;AACrB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EACnB;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,SAAK,IAAI,MAAM;AACf,QAAI,IAAI,MAAM;AACd,QAAI,IAAI,IAAI;AACZ,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,QAAI,KAAK,UAAU,MAAM,IAAI,KAAK,OAAO;AACzC,QAAI,KAAK,UAAU,MAAM,IAAI,KAAK,OAAO;AACzC,QAAI,KAAK,UAAU,MAAM,IAAI,KAAK,OAAO;AACzC,SAAK;AACL,SAAK;AACL,SAAK;AACL,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EACnB;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,QAAI;AACJ,UAAM,KAAK,KAAK,MAAM,GAAG,CAAC;AAC1B,QAAI,KAAK,MAAM,IAAI,KAAK;AACxB,QAAI,IAAI,GAAG;AACT,WAAK;AAAA,IACN;AACD,UAAM,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC;AACjC,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EACnB;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,IAAI,IAAI,CAAC;AACf,UAAM,KAAK,IAAI,MAAM,IAAI,KAAK;AAC9B,UAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,UAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EACnB;AACE,UAAQ,IAAI,SAAS,SAAS,MAAM,aAAa,MAAM;AACrD,UAAM,CAAC,GAAG,GAAG,CAAC,IAAI;AAClB,QAAI,QAAQ,eAAe,OAAO,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI;AAC7D,YAAQ,KAAK,MAAM,QAAQ,EAAE;AAC7B,QAAI,UAAU,GAAG;AACf,aAAO;AAAA,IACR;AACD,QAAI,OAAO,MAAM,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,IAAI,GAAG;AACzF,QAAI,UAAU,GAAG;AACf,cAAQ;AAAA,IACT;AACD,WAAO;AAAA,EACX;AACE,UAAQ,IAAI,SAAS,SAAS,MAAM;AAClC,WAAO,QAAQ,IAAI,OAAO,QAAQ,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;AAAA,EAC5D;AACE,UAAQ,IAAI,UAAU,SAAS,MAAM;AACnC,UAAM,IAAI,KAAK,CAAC;AAChB,UAAM,IAAI,KAAK,CAAC;AAChB,UAAM,IAAI,KAAK,CAAC;AAChB,QAAI,MAAM,KAAK,MAAM,GAAG;AACtB,UAAI,IAAI,GAAG;AACT,eAAO;AAAA,MACR;AACD,UAAI,IAAI,KAAK;AACX,eAAO;AAAA,MACR;AACD,aAAO,KAAK,OAAO,IAAI,KAAK,MAAM,EAAE,IAAI;AAAA,IACzC;AACD,UAAM,OAAO,KAAK,KAAK,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC;AACrG,WAAO;AAAA,EACX;AACE,UAAQ,OAAO,MAAM,SAAS,MAAM;AAClC,QAAI,QAAQ,OAAO;AACnB,QAAI,UAAU,KAAK,UAAU,GAAG;AAC9B,UAAI,OAAO,IAAI;AACb,iBAAS;AAAA,MACV;AACD,cAAQ,QAAQ,OAAO;AACvB,aAAO,CAAC,OAAO,OAAO,KAAK;AAAA,IAC5B;AACD,UAAM,QAAQ,CAAC,EAAE,OAAO,MAAM,KAAK;AACnC,UAAM,KAAK,QAAQ,KAAK,OAAO;AAC/B,UAAM,KAAK,SAAS,IAAI,KAAK,OAAO;AACpC,UAAM,KAAK,SAAS,IAAI,KAAK,OAAO;AACpC,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EACnB;AACE,UAAQ,QAAQ,MAAM,SAAS,MAAM;AACnC,QAAI,QAAQ,KAAK;AACf,YAAM,KAAK,OAAO,OAAO,KAAK;AAC9B,aAAO,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB;AACD,YAAQ;AACR,QAAI;AACJ,UAAM,IAAI,KAAK,MAAM,OAAO,EAAE,IAAI,IAAI;AACtC,UAAM,IAAI,KAAK,OAAO,MAAM,OAAO,MAAM,CAAC,IAAI,IAAI;AAClD,UAAM,IAAI,MAAM,IAAI,IAAI;AACxB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EACnB;AACE,UAAQ,IAAI,MAAM,SAAS,MAAM;AAC/B,UAAM,YAAY,KAAK,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,QAAQ,KAAK,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,MAAM,KAAK,MAAM,KAAK,CAAC,CAAC,IAAI;AAClH,UAAM,SAAS,QAAQ,SAAS,EAAE,EAAE,YAAW;AAC/C,WAAO,SAAS,UAAU,OAAO,MAAM,IAAI;AAAA,EAC/C;AACE,UAAQ,IAAI,MAAM,SAAS,MAAM;AAC/B,UAAM,QAAQ,KAAK,SAAS,EAAE,EAAE,MAAM,0BAA0B;AAChE,QAAI,CAAC,OAAO;AACV,aAAO,CAAC,GAAG,GAAG,CAAC;AAAA,IAChB;AACD,QAAI,cAAc,MAAM,CAAC;AACzB,QAAI,MAAM,CAAC,EAAE,WAAW,GAAG;AACzB,oBAAc,YAAY,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS;AAChD,eAAO,OAAO;AAAA,MACtB,CAAO,EAAE,KAAK,EAAE;AAAA,IACX;AACD,UAAM,UAAU,SAAS,aAAa,EAAE;AACxC,UAAM,IAAI,WAAW,KAAK;AAC1B,UAAM,IAAI,WAAW,IAAI;AACzB,UAAM,IAAI,UAAU;AACpB,WAAO,CAAC,GAAG,GAAG,CAAC;AAAA,EACnB;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AACtC,UAAM,MAAM,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AACtC,UAAM,SAAS,MAAM;AACrB,QAAI;AACJ,QAAI;AACJ,QAAI,SAAS,GAAG;AACd,kBAAY,OAAO,IAAI;AAAA,IAC7B,OAAW;AACL,kBAAY;AAAA,IACb;AACD,QAAI,UAAU,GAAG;AACf,YAAM;AAAA,IACZ,WAAe,QAAQ,GAAG;AACpB,aAAO,IAAI,KAAK,SAAS;AAAA,IAC/B,WAAe,QAAQ,GAAG;AACpB,YAAM,KAAK,IAAI,KAAK;AAAA,IAC1B,OAAW;AACL,YAAM,KAAK,IAAI,KAAK;AAAA,IACrB;AACD,WAAO;AACP,WAAO;AACP,WAAO,CAAC,MAAM,KAAK,SAAS,KAAK,YAAY,GAAG;AAAA,EACpD;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI;AAC7C,QAAI,IAAI;AACR,QAAI,IAAI,GAAG;AACT,WAAK,IAAI,MAAM,MAAM,IAAI;AAAA,IAC1B;AACD,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACpC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI;AACd,QAAI,IAAI;AACR,QAAI,IAAI,GAAG;AACT,WAAK,IAAI,MAAM,IAAI;AAAA,IACpB;AACD,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACpC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,QAAI,MAAM,GAAG;AACX,aAAO,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,IAClC;AACD,UAAM,OAAO,CAAC,GAAG,GAAG,CAAC;AACrB,UAAM,KAAK,IAAI,IAAI;AACnB,UAAM,IAAI,KAAK;AACf,UAAM,IAAI,IAAI;AACd,QAAI,KAAK;AACT,YAAQ,KAAK,MAAM,EAAE,GAAC;AAAA,MACpB,KAAK;AACH,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV;AAAA,MACF,KAAK;AACH,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV;AAAA,MACF,KAAK;AACH,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV;AAAA,MACF,KAAK;AACH,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV;AAAA,MACF,KAAK;AACH,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV;AAAA,MACF;AACE,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AACV,aAAK,CAAC,IAAI;AAAA,IACb;AACD,UAAM,IAAI,KAAK;AACf,WAAO;AAAA,OACJ,IAAI,KAAK,CAAC,IAAI,MAAM;AAAA,OACpB,IAAI,KAAK,CAAC,IAAI,MAAM;AAAA,OACpB,IAAI,KAAK,CAAC,IAAI,MAAM;AAAA,IAC3B;AAAA,EACA;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,KAAK,IAAI;AACvB,QAAI,IAAI;AACR,QAAI,IAAI,GAAG;AACT,UAAI,IAAI;AAAA,IACT;AACD,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACpC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,KAAK,IAAI,KAAK,MAAM;AAC9B,QAAI,IAAI;AACR,QAAI,IAAI,KAAK,IAAI,KAAK;AACpB,UAAI,KAAK,IAAI;AAAA,IACd,WAAU,KAAK,OAAO,IAAI,GAAG;AAC5B,UAAI,KAAK,KAAK,IAAI;AAAA,IACnB;AACD,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACpC;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,KAAK,IAAI;AACvB,WAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,GAAG;AAAA,EAChD;AACE,UAAQ,IAAI,MAAM,SAAS,KAAK;AAC9B,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI,CAAC,IAAI;AACnB,UAAM,IAAI,IAAI;AACd,UAAM,IAAI,IAAI;AACd,QAAI,IAAI;AACR,QAAI,IAAI,GAAG;AACT,WAAK,IAAI,MAAM,IAAI;AAAA,IACpB;AACD,WAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG;AAAA,EACpC;AACE,UAAQ,MAAM,MAAM,SAAS,OAAO;AAClC,WAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,QAAQ,KAAK,MAAM,CAAC,IAAI,QAAQ,GAAG;AAAA,EAClF;AACE,UAAQ,IAAI,QAAQ,SAAS,KAAK;AAChC,WAAO,CAAC,IAAI,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC,IAAI,MAAM,OAAO,IAAI,CAAC,IAAI,MAAM,KAAK;AAAA,EAC5E;AACE,UAAQ,KAAK,MAAM,SAAS,MAAM;AAChC,WAAO,CAAC,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,MAAM,GAAG;AAAA,EACzE;AACE,UAAQ,KAAK,MAAM,SAAS,MAAM;AAChC,WAAO,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;AAAA,EACzB;AACE,UAAQ,KAAK,MAAM,QAAQ,KAAK;AAChC,UAAQ,KAAK,MAAM,SAAS,MAAM;AAChC,WAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EAC3B;AACE,UAAQ,KAAK,OAAO,SAAS,MAAM;AACjC,WAAO,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AAAA,EAC5B;AACE,UAAQ,KAAK,MAAM,SAAS,MAAM;AAChC,WAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,EACzB;AACE,UAAQ,KAAK,MAAM,SAAS,MAAM;AAChC,UAAM,MAAM,KAAK,MAAM,KAAK,CAAC,IAAI,MAAM,GAAG,IAAI;AAC9C,UAAM,WAAW,OAAO,OAAO,OAAO,KAAK;AAC3C,UAAM,SAAS,QAAQ,SAAS,EAAE,EAAE,YAAW;AAC/C,WAAO,SAAS,UAAU,OAAO,MAAM,IAAI;AAAA,EAC/C;AACE,UAAQ,IAAI,OAAO,SAAS,KAAK;AAC/B,UAAM,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;AACzC,WAAO,CAAC,MAAM,MAAM,GAAG;AAAA,EAC3B;AACE,SAAO;AACT;AACA,IAAI;AACJ,IAAI;AACJ,SAAS,eAAe;AACtB,MAAI;AACF,WAAO;AACT,qBAAmB;AACnB,QAAM,eAAe;AACrB,WAAS,aAAa;AACpB,UAAM,QAAQ,CAAA;AACd,UAAM,SAAS,OAAO,KAAK,YAAY;AACvC,aAAS,MAAM,OAAO,QAAQ,IAAI,GAAG,IAAI,KAAK,KAAK;AACjD,YAAM,OAAO,CAAC,CAAC,IAAI;AAAA;AAAA;AAAA,QAGjB,UAAU;AAAA,QACV,QAAQ;AAAA,MAChB;AAAA,IACK;AACD,WAAO;AAAA,EACR;AACD,WAAS,UAAU,WAAW;AAC5B,UAAM,QAAQ;AACd,UAAM,QAAQ,CAAC,SAAS;AACxB,UAAM,SAAS,EAAE,WAAW;AAC5B,WAAO,MAAM,QAAQ;AACnB,YAAM,UAAU,MAAM;AACtB,YAAM,YAAY,OAAO,KAAK,aAAa,OAAO,CAAC;AACnD,eAAS,MAAM,UAAU,QAAQ,IAAI,GAAG,IAAI,KAAK,KAAK;AACpD,cAAM,WAAW,UAAU,CAAC;AAC5B,cAAM,OAAO,MAAM,QAAQ;AAC3B,YAAI,KAAK,aAAa,IAAI;AACxB,eAAK,WAAW,MAAM,OAAO,EAAE,WAAW;AAC1C,eAAK,SAAS;AACd,gBAAM,QAAQ,QAAQ;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,KAAK,MAAM,IAAI;AACtB,WAAO,SAAS,MAAM;AACpB,aAAO,GAAG,KAAK,IAAI,CAAC;AAAA,IAC1B;AAAA,EACG;AACD,WAAS,eAAe,SAAS,OAAO;AACtC,UAAM,OAAO,CAAC,MAAM,OAAO,EAAE,QAAQ,OAAO;AAC5C,QAAI,KAAK,aAAa,MAAM,OAAO,EAAE,MAAM,EAAE,OAAO;AACpD,QAAI,MAAM,MAAM,OAAO,EAAE;AACzB,WAAO,MAAM,GAAG,EAAE,QAAQ;AACxB,WAAK,QAAQ,MAAM,GAAG,EAAE,MAAM;AAC9B,WAAK,KAAK,aAAa,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE;AAClD,YAAM,MAAM,GAAG,EAAE;AAAA,IAClB;AACD,OAAG,aAAa;AAChB,WAAO;AAAA,EACR;AACD,UAAQ,SAAS,WAAW;AAC1B,UAAM,QAAQ,UAAU,SAAS;AACjC,UAAM,aAAa,CAAA;AACnB,UAAM,SAAS,OAAO,KAAK,KAAK;AAChC,aAAS,MAAM,OAAO,QAAQ,IAAI,GAAG,IAAI,KAAK,KAAK;AACjD,YAAM,UAAU,OAAO,CAAC;AACxB,YAAM,OAAO,MAAM,OAAO;AAC1B,UAAI,KAAK,WAAW,MAAM;AACxB;AAAA,MACD;AACD,iBAAW,OAAO,IAAI,eAAe,SAAS,KAAK;AAAA,IACpD;AACD,WAAO;AAAA,EACX;AACE,SAAO;AACT;AACA,IAAI;AACJ,IAAI;AACJ,SAAS,sBAAsB;AAC7B,MAAI;AACF,WAAO;AACT,4BAA0B;AAC1B,QAAM,eAAe;AACrB,QAAM,SAAS;AACf,QAAM,UAAU,CAAA;AAChB,QAAM,SAAS,OAAO,KAAK,YAAY;AACvC,WAAS,QAAQ,IAAI;AACnB,UAAM,YAAY,YAAY,MAAM;AAClC,YAAM,OAAO,KAAK,CAAC;AACnB,UAAI,SAAS,UAAU,SAAS,MAAM;AACpC,eAAO;AAAA,MACR;AACD,UAAI,KAAK,SAAS,GAAG;AACnB,eAAO;AAAA,MACR;AACD,aAAO,GAAG,IAAI;AAAA,IACpB;AACI,QAAI,gBAAgB,IAAI;AACtB,gBAAU,aAAa,GAAG;AAAA,IAC3B;AACD,WAAO;AAAA,EACR;AACD,WAAS,YAAY,IAAI;AACvB,UAAM,YAAY,YAAY,MAAM;AAClC,YAAM,OAAO,KAAK,CAAC;AACnB,UAAI,SAAS,UAAU,SAAS,MAAM;AACpC,eAAO;AAAA,MACR;AACD,UAAI,KAAK,SAAS,GAAG;AACnB,eAAO;AAAA,MACR;AACD,YAAM,SAAS,GAAG,IAAI;AACtB,UAAI,OAAO,WAAW,UAAU;AAC9B,iBAAS,MAAM,OAAO,QAAQ,IAAI,GAAG,IAAI,KAAK,KAAK;AACjD,iBAAO,CAAC,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC;AAAA,QACjC;AAAA,MACF;AACD,aAAO;AAAA,IACb;AACI,QAAI,gBAAgB,IAAI;AACtB,gBAAU,aAAa,GAAG;AAAA,IAC3B;AACD,WAAO;AAAA,EACR;AACD,SAAO,QAAQ,CAAC,cAAc;AAC5B,YAAQ,SAAS,IAAI;AACrB,WAAO,eAAe,QAAQ,SAAS,GAAG,YAAY,EAAE,OAAO,aAAa,SAAS,EAAE,SAAU,CAAA;AACjG,WAAO,eAAe,QAAQ,SAAS,GAAG,UAAU,EAAE,OAAO,aAAa,SAAS,EAAE,OAAQ,CAAA;AAC7F,UAAM,SAAS,OAAO,SAAS;AAC/B,UAAM,cAAc,OAAO,KAAK,MAAM;AACtC,gBAAY,QAAQ,CAAC,YAAY;AAC/B,YAAM,KAAK,OAAO,OAAO;AACzB,cAAQ,SAAS,EAAE,OAAO,IAAI,YAAY,EAAE;AAC5C,cAAQ,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,EAAE;AAAA,IAClD,CAAK;AAAA,EACL,CAAG;AACD,iBAAe;AACf,SAAO;AACT;AACA,aAAa;AAAA,CACZ,SAAS,QAAQ;AAChB,QAAM,aAAa,CAAC,IAAI,WAAW,IAAI,SAAS;AAC9C,UAAM,OAAO,GAAG,GAAG,IAAI;AACvB,WAAO,QAAQ,OAAO,MAAM;AAAA,EAChC;AACE,QAAM,cAAc,CAAC,IAAI,WAAW,IAAI,SAAS;AAC/C,UAAM,OAAO,GAAG,GAAG,IAAI;AACvB,WAAO,QAAQ,KAAK,MAAM,MAAM,IAAI;AAAA,EACxC;AACE,QAAM,cAAc,CAAC,IAAI,WAAW,IAAI,SAAS;AAC/C,UAAM,MAAM,GAAG,GAAG,IAAI;AACtB,WAAO,QAAQ,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAAA,EAC9D;AACE,QAAM,YAAY,CAAC,MAAM;AACzB,QAAM,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;AACrC,QAAM,kBAAkB,CAAC,QAAQ,UAAU,QAAQ;AACjD,WAAO,eAAe,QAAQ,UAAU;AAAA,MACtC,KAAK,MAAM;AACT,cAAM,QAAQ;AACd,eAAO,eAAe,QAAQ,UAAU;AAAA,UACtC;AAAA,UACA,YAAY;AAAA,UACZ,cAAc;AAAA,QACxB,CAAS;AACD,eAAO;AAAA,MACR;AAAA,MACD,YAAY;AAAA,MACZ,cAAc;AAAA,IACpB,CAAK;AAAA,EACL;AACE,MAAI;AACJ,QAAM,oBAAoB,CAAC,MAAM,aAAa,UAAU,iBAAiB;AACvE,QAAI,kBAAkB,QAAQ;AAC5B,sBAAgB,oBAAmB;AAAA,IACpC;AACD,UAAM,SAAS,eAAe,KAAK;AACnC,UAAM,UAAU,CAAA;AAChB,eAAW,CAAC,aAAa,KAAK,KAAK,OAAO,QAAQ,aAAa,GAAG;AAChE,YAAM,OAAO,gBAAgB,WAAW,SAAS;AACjD,UAAI,gBAAgB,aAAa;AAC/B,gBAAQ,IAAI,IAAI,KAAK,UAAU,MAAM;AAAA,MAC7C,WAAiB,OAAO,UAAU,UAAU;AACpC,gBAAQ,IAAI,IAAI,KAAK,MAAM,WAAW,GAAG,MAAM;AAAA,MAChD;AAAA,IACF;AACD,WAAO;AAAA,EACX;AACE,WAAS,iBAAiB;AACxB,UAAM,QAAwB,oBAAI;AAClC,UAAM,UAAU;AAAA,MACd,UAAU;AAAA,QACR,OAAO,CAAC,GAAG,CAAC;AAAA;AAAA,QAEZ,MAAM,CAAC,GAAG,EAAE;AAAA,QACZ,KAAK,CAAC,GAAG,EAAE;AAAA,QACX,QAAQ,CAAC,GAAG,EAAE;AAAA,QACd,WAAW,CAAC,GAAG,EAAE;AAAA,QACjB,SAAS,CAAC,GAAG,EAAE;AAAA,QACf,QAAQ,CAAC,GAAG,EAAE;AAAA,QACd,eAAe,CAAC,GAAG,EAAE;AAAA,MACtB;AAAA,MACD,OAAO;AAAA,QACL,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,KAAK,CAAC,IAAI,EAAE;AAAA,QACZ,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,MAAM,CAAC,IAAI,EAAE;AAAA,QACb,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,MAAM,CAAC,IAAI,EAAE;AAAA,QACb,OAAO,CAAC,IAAI,EAAE;AAAA;AAAA,QAEd,aAAa,CAAC,IAAI,EAAE;AAAA,QACpB,WAAW,CAAC,IAAI,EAAE;AAAA,QAClB,aAAa,CAAC,IAAI,EAAE;AAAA,QACpB,cAAc,CAAC,IAAI,EAAE;AAAA,QACrB,YAAY,CAAC,IAAI,EAAE;AAAA,QACnB,eAAe,CAAC,IAAI,EAAE;AAAA,QACtB,YAAY,CAAC,IAAI,EAAE;AAAA,QACnB,aAAa,CAAC,IAAI,EAAE;AAAA,MACrB;AAAA,MACD,SAAS;AAAA,QACP,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,UAAU,CAAC,IAAI,EAAE;AAAA,QACjB,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,WAAW,CAAC,IAAI,EAAE;AAAA,QAClB,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,SAAS,CAAC,IAAI,EAAE;AAAA;AAAA,QAEhB,eAAe,CAAC,KAAK,EAAE;AAAA,QACvB,aAAa,CAAC,KAAK,EAAE;AAAA,QACrB,eAAe,CAAC,KAAK,EAAE;AAAA,QACvB,gBAAgB,CAAC,KAAK,EAAE;AAAA,QACxB,cAAc,CAAC,KAAK,EAAE;AAAA,QACtB,iBAAiB,CAAC,KAAK,EAAE;AAAA,QACzB,cAAc,CAAC,KAAK,EAAE;AAAA,QACtB,eAAe,CAAC,KAAK,EAAE;AAAA,MACxB;AAAA,IACP;AACI,YAAQ,MAAM,OAAO,QAAQ,MAAM;AACnC,YAAQ,QAAQ,SAAS,QAAQ,QAAQ;AACzC,YAAQ,MAAM,OAAO,QAAQ,MAAM;AACnC,YAAQ,QAAQ,SAAS,QAAQ,QAAQ;AACzC,eAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AACxD,iBAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AACtD,gBAAQ,SAAS,IAAI;AAAA,UACnB,MAAM,QAAQ,MAAM,CAAC,CAAC;AAAA,UACtB,OAAO,QAAQ,MAAM,CAAC,CAAC;AAAA,QACjC;AACQ,cAAM,SAAS,IAAI,QAAQ,SAAS;AACpC,cAAM,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,MAC7B;AACD,aAAO,eAAe,SAAS,WAAW;AAAA,QACxC,OAAO;AAAA,QACP,YAAY;AAAA,MACpB,CAAO;AAAA,IACF;AACD,WAAO,eAAe,SAAS,SAAS;AAAA,MACtC,OAAO;AAAA,MACP,YAAY;AAAA,IAClB,CAAK;AACD,YAAQ,MAAM,QAAQ;AACtB,YAAQ,QAAQ,QAAQ;AACxB,oBAAgB,QAAQ,OAAO,QAAQ,MAAM,kBAAkB,YAAY,UAAU,WAAW,KAAK,CAAC;AACtG,oBAAgB,QAAQ,OAAO,WAAW,MAAM,kBAAkB,aAAa,WAAW,WAAW,KAAK,CAAC;AAC3G,oBAAgB,QAAQ,OAAO,WAAW,MAAM,kBAAkB,aAAa,OAAO,SAAS,KAAK,CAAC;AACrG,oBAAgB,QAAQ,SAAS,QAAQ,MAAM,kBAAkB,YAAY,UAAU,WAAW,IAAI,CAAC;AACvG,oBAAgB,QAAQ,SAAS,WAAW,MAAM,kBAAkB,aAAa,WAAW,WAAW,IAAI,CAAC;AAC5G,oBAAgB,QAAQ,SAAS,WAAW,MAAM,kBAAkB,aAAa,OAAO,SAAS,IAAI,CAAC;AACtG,WAAO;AAAA,EACR;AACD,SAAO,eAAe,QAAQ,WAAW;AAAA,IACvC,YAAY;AAAA,IACZ,KAAK;AAAA,EACT,CAAG;AACH,GAAG,YAAY;AACf,IAAI,oBAAoB,aAAa;AACrC,IAAI,UAAU;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AACV;AACA,MAAM,qBAAqB,CAAC,QAAQ,WAAW,aAAa;AAC1D,MAAI,QAAQ,OAAO,QAAQ,SAAS;AACpC,MAAI,UAAU,IAAI;AAChB,WAAO;AAAA,EACR;AACD,QAAM,kBAAkB,UAAU;AAClC,MAAI,WAAW;AACf,MAAI,cAAc;AAClB,KAAG;AACD,mBAAe,OAAO,OAAO,UAAU,QAAQ,QAAQ,IAAI,YAAY;AACvE,eAAW,QAAQ;AACnB,YAAQ,OAAO,QAAQ,WAAW,QAAQ;AAAA,EAC9C,SAAW,UAAU;AACnB,iBAAe,OAAO,OAAO,QAAQ;AACrC,SAAO;AACT;AACA,MAAM,mCAAmC,CAAC,QAAQ,QAAQ,SAAS,UAAU;AAC3E,MAAI,WAAW;AACf,MAAI,cAAc;AAClB,KAAG;AACD,UAAM,QAAQ,OAAO,QAAQ,CAAC,MAAM;AACpC,mBAAe,OAAO,OAAO,WAAW,QAAQ,QAAQ,IAAI,SAAS,QAAQ,IAAI,UAAU,QAAQ,SAAS,QAAQ;AACpH,eAAW,QAAQ;AACnB,YAAQ,OAAO,QAAQ,MAAM,QAAQ;AAAA,EACzC,SAAW,UAAU;AACnB,iBAAe,OAAO,OAAO,QAAQ;AACrC,SAAO;AACT;AACA,IAAI,OAAO;AAAA,EACT,kBAAkB;AAAA,EAClB,gCAAgC;AAClC;AACA,IAAI;AACJ,IAAI;AACJ,SAAS,mBAAmB;AAC1B,MAAI;AACF,WAAO;AACT,yBAAuB;AACvB,QAAM,iBAAiB;AACvB,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,UAA0B,oBAAI,IAAI;AAAA,IACtC,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,GAAG;AAAA,IACT,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,MAAM,IAAI;AAAA,IACX,CAAC,KAAK,MAAM;AAAA,IACZ,CAAC,KAAK,MAAM;AAAA,EAChB,CAAG;AACD,WAAS9C,UAAS,GAAG;AACnB,UAAM,IAAI,EAAE,CAAC,MAAM;AACnB,UAAM,UAAU,EAAE,CAAC,MAAM;AACzB,QAAI,KAAK,CAAC,WAAW,EAAE,WAAW,KAAK,EAAE,CAAC,MAAM,OAAO,EAAE,WAAW,GAAG;AACrE,aAAO,OAAO,aAAa,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AAAA,IACpD;AACD,QAAI,KAAK,SAAS;AAChB,aAAO,OAAO,cAAc,SAAS,EAAE,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,IACzD;AACD,WAAO,QAAQ,IAAI,CAAC,KAAK;AAAA,EAC1B;AACD,WAAS,eAAe,MAAM,YAAY;AACxC,UAAM,UAAU,CAAA;AAChB,UAAM,SAAS,WAAW,KAAM,EAAC,MAAM,UAAU;AACjD,QAAI;AACJ,eAAW,SAAS,QAAQ;AAC1B,YAAM,SAAS,OAAO,KAAK;AAC3B,UAAI,CAAC,OAAO,MAAM,MAAM,GAAG;AACzB,gBAAQ,KAAK,MAAM;AAAA,MACpB,WAAU,UAAU,MAAM,MAAM,YAAY,GAAG;AAC9C,gBAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,cAAc,CAAC,GAAGC,SAAQ,cAAcA,UAASD,UAASC,OAAM,IAAI,SAAS,CAAC;AAAA,MACtH,OAAa;AACL,cAAM,IAAI,MAAM,0CAA0C,KAAK,eAAe,IAAI,IAAI;AAAA,MACvF;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,WAAW,OAAO;AACzB,gBAAY,YAAY;AACxB,UAAM,UAAU,CAAA;AAChB,QAAI;AACJ,YAAQ,UAAU,YAAY,KAAK,KAAK,OAAO,MAAM;AACnD,YAAM,OAAO,QAAQ,CAAC;AACtB,UAAI,QAAQ,CAAC,GAAG;AACd,cAAM,OAAO,eAAe,MAAM,QAAQ,CAAC,CAAC;AAC5C,gBAAQ,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,MACxC,OAAa;AACL,gBAAQ,KAAK,CAAC,IAAI,CAAC;AAAA,MACpB;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACD,WAAS,WAAW,QAAQ,SAAS;AACnC,UAAM,UAAU,CAAA;AAChB,eAAW,SAAS,SAAS;AAC3B,iBAAW,SAAS,MAAM,QAAQ;AAChC,gBAAQ,MAAM,CAAC,CAAC,IAAI,MAAM,UAAU,OAAO,MAAM,MAAM,CAAC;AAAA,MACzD;AAAA,IACF;AACD,QAAI,UAAU;AACd,eAAW,CAAC,WAAW,OAAO,KAAK,OAAO,QAAQ,OAAO,GAAG;AAC1D,UAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B;AAAA,MACD;AACD,UAAI,EAAE,aAAa,UAAU;AAC3B,cAAM,IAAI,MAAM,wBAAwB,SAAS,EAAE;AAAA,MACpD;AACD,gBAAU,QAAQ,SAAS,IAAI,QAAQ,SAAS,EAAE,GAAG,OAAO,IAAI,QAAQ,SAAS;AAAA,IAClF;AACD,WAAO;AAAA,EACR;AACD,cAAY,CAAC,QAAQ,cAAc;AACjC,UAAM,UAAU,CAAA;AAChB,UAAM,SAAS,CAAA;AACf,QAAI,QAAQ,CAAA;AACZ,cAAU,QAAQ,gBAAgB,CAAC,GAAG,iBAAiB,SAAS,OAAO,OAAO,cAAc;AAC1F,UAAI,iBAAiB;AACnB,cAAM,KAAKD,UAAS,eAAe,CAAC;AAAA,MACrC,WAAU,OAAO;AAChB,cAAM,SAAS,MAAM,KAAK,EAAE;AAC5B,gBAAQ,CAAA;AACR,eAAO,KAAK,QAAQ,WAAW,IAAI,SAAS,WAAW,QAAQ,OAAO,EAAE,MAAM,CAAC;AAC/E,gBAAQ,KAAK,EAAE,SAAS,QAAQ,WAAW,KAAK,EAAC,CAAE;AAAA,MACpD,WAAU,OAAO;AAChB,YAAI,QAAQ,WAAW,GAAG;AACxB,gBAAM,IAAI,MAAM,8CAA8C;AAAA,QAC/D;AACD,eAAO,KAAK,WAAW,QAAQ,OAAO,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;AACvD,gBAAQ,CAAA;AACR,gBAAQ,IAAG;AAAA,MACnB,OAAa;AACL,cAAM,KAAK,SAAS;AAAA,MACrB;AAAA,IACP,CAAK;AACD,WAAO,KAAK,MAAM,KAAK,EAAE,CAAC;AAC1B,QAAI,QAAQ,SAAS,GAAG;AACtB,YAAM,aAAa,qCAAqC,QAAQ,MAAM,mBAAmB,QAAQ,WAAW,IAAI,KAAK,GAAG;AACxH,YAAM,IAAI,MAAM,UAAU;AAAA,IAC3B;AACD,WAAO,OAAO,KAAK,EAAE;AAAA,EACzB;AACE,SAAO;AACT;AACA,MAAM,aAAa;AACnB,MAAM,EAAE,QAAQ,aAAa,QAAQ,YAAW,IAAK;AACrD,MAAM;AAAA,EACJ;AAAA,EACA;AACF,IAAI;AACJ,MAAM,EAAE,QAAS,IAAG;AACpB,MAAM,eAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,SAAyB,uBAAO,OAAO,IAAI;AACjD,MAAM,eAAe,CAAC,QAAQ,UAAU,OAAO;AAC7C,MAAI,QAAQ,SAAS,EAAE,OAAO,UAAU,QAAQ,KAAK,KAAK,QAAQ,SAAS,KAAK,QAAQ,SAAS,IAAI;AACnG,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACtE;AACD,QAAM,aAAa,cAAc,YAAY,QAAQ;AACrD,SAAO,QAAQ,QAAQ,UAAU,SAAS,aAAa,QAAQ;AACjE;AACA,MAAMc,YAAW;AAAA,EACf,YAAY,SAAS;AACnB,WAAO,aAAa,OAAO;AAAA,EAC5B;AACH;AACA,MAAM,eAAe,CAAC,YAAY;AAChC,QAAM,SAAS,CAAA;AACf,eAAa,QAAQ,OAAO;AAC5B,SAAO,WAAW,IAAI,eAAe,SAAS,OAAO,UAAU,GAAG,UAAU;AAC5E,SAAO,eAAe,QAAQ,MAAM,SAAS;AAC7C,SAAO,eAAe,OAAO,UAAU,MAAM;AAC7C,SAAO,SAAS,cAAc,MAAM;AAClC,UAAM,IAAI,MAAM,0EAA0E;AAAA,EAC9F;AACE,SAAO,SAAS,WAAWA;AAC3B,SAAO,OAAO;AAChB;AACA,SAAS,MAAM,SAAS;AACtB,SAAO,aAAa,OAAO;AAC7B;AACA,WAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,UAAU,GAAG;AAC3D,SAAO,SAAS,IAAI;AAAA,IAClB,MAAM;AACJ,YAAM,UAAU,cAAc,MAAM,aAAa,MAAM,MAAM,MAAM,OAAO,KAAK,OAAO,GAAG,KAAK,QAAQ;AACtG,aAAO,eAAe,MAAM,WAAW,EAAE,OAAO,QAAO,CAAE;AACzD,aAAO;AAAA,IACR;AAAA,EACL;AACA;AACA,OAAO,UAAU;AAAA,EACf,MAAM;AACJ,UAAM,UAAU,cAAc,MAAM,KAAK,SAAS,IAAI;AACtD,WAAO,eAAe,MAAM,WAAW,EAAE,OAAO,QAAO,CAAE;AACzD,WAAO;AAAA,EACR;AACH;AACA,MAAM,aAAa,CAAC,OAAO,OAAO,WAAW,OAAO,OAAO,OAAO,QAAQ,SAAS;AACnF,WAAW,SAAS,YAAY;AAC9B,SAAO,KAAK,IAAI;AAAA,IACd,MAAM;AACJ,YAAM,EAAE,MAAO,IAAG;AAClB,aAAO,YAAY,YAAY;AAC7B,cAAM,SAAS,aAAa,WAAW,MAAM,aAAa,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,UAAU,GAAG,WAAW,MAAM,OAAO,KAAK,OAAO;AAC7H,eAAO,cAAc,MAAM,QAAQ,KAAK,QAAQ;AAAA,MACxD;AAAA,IACK;AAAA,EACL;AACA;AACA,WAAW,SAAS,YAAY;AAC9B,QAAM,UAAU,OAAO,MAAM,CAAC,EAAE,YAAW,IAAK,MAAM,MAAM,CAAC;AAC7D,SAAO,OAAO,IAAI;AAAA,IAChB,MAAM;AACJ,YAAM,EAAE,MAAO,IAAG;AAClB,aAAO,YAAY,YAAY;AAC7B,cAAM,SAAS,aAAa,WAAW,QAAQ,aAAa,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,UAAU,GAAG,WAAW,QAAQ,OAAO,KAAK,OAAO;AACjI,eAAO,cAAc,MAAM,QAAQ,KAAK,QAAQ;AAAA,MACxD;AAAA,IACK;AAAA,EACL;AACA;AACA,MAAM,QAAQ,OAAO,iBAAiB,MAAM;AAC5C,GAAG;AAAA,EACD,GAAG;AAAA,EACH,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,MAAM;AACJ,aAAO,KAAK,WAAW;AAAA,IACxB;AAAA,IACD,IAAI,OAAO;AACT,WAAK,WAAW,QAAQ;AAAA,IACzB;AAAA,EACF;AACH,CAAC;AACD,MAAM,eAAe,CAAC,MAAM,OAAO,WAAW;AAC5C,MAAI;AACJ,MAAI;AACJ,MAAI,WAAW,QAAQ;AACrB,cAAU;AACV,eAAW;AAAA,EACf,OAAS;AACL,cAAU,OAAO,UAAU;AAC3B,eAAW,QAAQ,OAAO;AAAA,EAC3B;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,MAAM,gBAAgB,CAAC,OAAO,SAAS,aAAa;AAClD,QAAM,UAAU,IAAI,eAAe;AACjC,QAAI,QAAQ,WAAW,CAAC,CAAC,KAAK,QAAQ,WAAW,CAAC,EAAE,GAAG,GAAG;AACxD,aAAO,WAAW,SAAS,SAAS,SAAS,GAAG,UAAU,CAAC;AAAA,IAC5D;AACD,WAAO,WAAW,SAAS,WAAW,WAAW,IAAI,KAAK,WAAW,CAAC,IAAI,WAAW,KAAK,GAAG,CAAC;AAAA,EAClG;AACE,SAAO,eAAe,SAAS,KAAK;AACpC,UAAQ,aAAa;AACrB,UAAQ,UAAU;AAClB,UAAQ,WAAW;AACnB,SAAO;AACT;AACA,MAAM,aAAa,CAAC,OAAO,WAAW;AACpC,MAAI,MAAM,SAAS,KAAK,CAAC,QAAQ;AAC/B,WAAO,MAAM,WAAW,KAAK;AAAA,EAC9B;AACD,MAAI,SAAS,MAAM;AACnB,MAAI,WAAW,QAAQ;AACrB,WAAO;AAAA,EACR;AACD,QAAM,EAAE,SAAS,SAAU,IAAG;AAC9B,MAAI,OAAO,QAAQ,MAAM,MAAM,IAAI;AACjC,WAAO,WAAW,QAAQ;AACxB,eAAS,iBAAiB,QAAQ,OAAO,OAAO,OAAO,IAAI;AAC3D,eAAS,OAAO;AAAA,IACjB;AAAA,EACF;AACD,QAAM,UAAU,OAAO,QAAQ,IAAI;AACnC,MAAI,YAAY,IAAI;AAClB,aAAS,+BAA+B,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC3E;AACD,SAAO,UAAU,SAAS;AAC5B;AACA,IAAI;AACJ,MAAM,WAAW,CAAC,WAAW,YAAY;AACvC,QAAM,CAAC,WAAW,IAAI;AACtB,MAAI,CAAC,QAAQ,WAAW,KAAK,CAAC,QAAQ,YAAY,GAAG,GAAG;AACtD,WAAO,QAAQ,KAAK,GAAG;AAAA,EACxB;AACD,QAAM,aAAa,QAAQ,MAAM,CAAC;AAClC,QAAM,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;AACjC,WAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,UAAM;AAAA,MACJ,OAAO,WAAW,IAAI,CAAC,CAAC,EAAE,QAAQ,WAAW,MAAM;AAAA,MACnD,OAAO,YAAY,IAAI,CAAC,CAAC;AAAA,IAC/B;AAAA,EACG;AACD,MAAI,aAAa,QAAQ;AACvB,eAAW,iBAAgB;AAAA,EAC5B;AACD,SAAO,SAAS,QAAQ,MAAM,KAAK,EAAE,CAAC;AACxC;AACA,OAAO,iBAAiB,MAAM,WAAW,MAAM;AAC/C,MAAM,QAAQ,MAAK;AACnB,MAAM,gBAAgB;AACtB,MAAM,SAAS,MAAM,EAAE,OAAO,cAAc,YAAY,QAAQ,EAAC,CAAE;AACnE,MAAM,OAAO,gBAAgB;AAmT7B,MAAM,mCAAmC,OAAM;AA6GvB,IAAI,YAAc;AAY1C,IAAI;AACJ,IAAI;AAAA;AAAA,EAEc,2BAAW;AACzB,aAAS,SAAS,MAAM,MAAM;AAC5B,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IACb;AACD,WAAO;AAAA,EACX,EAAK;AAAA;AAEL,IAAI,YAA4B,2BAAW;AACzC,MAAI,gBAAgB,SAAS,GAAG,GAAG;AACjC,oBAAgB,OAAO,kBAAkB,EAAE,WAAW,CAAE,EAAA,aAAc,SAAS,SAAS,IAAI,IAAI;AAC9F,SAAG,YAAY;AAAA,IACrB,KAAS,SAAS,IAAI,IAAI;AACpB,eAAS,KAAK;AACZ,YAAI,OAAO,UAAU,eAAe,KAAK,IAAI,CAAC;AAC5C,aAAG,CAAC,IAAI,GAAG,CAAC;AAAA,IACtB;AACI,WAAO,cAAc,GAAG,CAAC;AAAA,EAC7B;AACE,SAAO,SAAS,GAAG,GAAG;AACpB,QAAI,OAAO,MAAM,cAAc,MAAM;AACnC,YAAM,IAAI,UAAU,yBAAyB,OAAO,CAAC,IAAI,+BAA+B;AAC1F,kBAAc,GAAG,CAAC;AAClB,aAAS,KAAK;AACZ,WAAK,cAAc;AAAA,IACpB;AACD,MAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAI;AAAA,EACvF;AACA;AACA,IAAI;AAAA;AAAA,EAEF,SAAS,QAAQ;AACf,cAAU,cAAc,MAAM;AAC9B,aAAS,aAAa,SAAS;AAC7B,UAAI,QAAQ,OAAO,KAAK,MAAM,OAAO,KAAK;AAC1C,UAAI,SAAS,OAAO,OAAO,aAAa,SAAS;AACjD,aAAO,eAAe,OAAO,MAAM;AACnC,aAAO,eAAe,OAAO,QAAQ;AAAA,QACnC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,OAAO,aAAa;AAAA,MAC5B,CAAO;AACD,aAAO;AAAA,IACR;AACD,WAAO;AAAA,EACR,EAAC,KAAK;AAAA;AAQT,SAAS,SAAS,MAAM,QAAQ,OAAO;AACrC,MAAI,OAAO,KAAK,MAAM,QAAQ,UAAU;AACxC,MAAI,MAAM;AACV,OAAK,UAAU,QAAQ,IAAI;AAC3B,OAAK,UAAU,SAAS,GAAG,GAAG;AAChC;AACA,SAAS,SAAS,MAAM,QAAQ;AAC9B,MAAI,OAAO,KAAK,SAAS,MAAM;AAC/B,MAAI,MAAM,KAAK,UAAU,SAAS,CAAC;AACnC,SAAO,OAAO,aAAa;AAC7B;AACA,IAAI,gBAAgB;AACpB,IAAI,sBAAsB,aAAa;AACvC,IAAI,sBAAsB,cAAc;AACxC,SAAS,0BAA0B,KAAK;AACtC,MAAI,MAAM,IAAI,KAAK,OAAO,IAAI;AAC9B,MAAI,OAAO,KAAK,QAAQ,KAAK,OAAO,qBAAqB;AACvD,QAAI,SAAS,KAAK,OAAO,qBAAqB;AAC5C,UAAI,KAAK,IAAI,WAAW,CAAC;AACzB,UAAI,OAAO,IAAI,SAAS,GAAG,MAAM;AACjC,WAAK,UAAU,GAAG,GAAG;AACrB,aAAO;AAAA,IACb,OAAW;AACL,UAAI,UAAU,MAAM;AACpB,UAAI,SAAS,MAAM;AACnB,UAAI,KAAK,IAAI,WAAW,CAAC;AACzB,UAAI,OAAO,IAAI,SAAS,GAAG,MAAM;AACjC,WAAK,UAAU,GAAG,QAAQ,IAAI,UAAU,CAAC;AACzC,WAAK,UAAU,GAAG,MAAM;AACxB,aAAO;AAAA,IACR;AAAA,EACL,OAAS;AACL,QAAI,KAAK,IAAI,WAAW,EAAE;AAC1B,QAAI,OAAO,IAAI,SAAS,GAAG,MAAM;AACjC,SAAK,UAAU,GAAG,IAAI;AACtB,aAAS,MAAM,GAAG,GAAG;AACrB,WAAO;AAAA,EACR;AACH;AACA,SAAS,qBAAqB,MAAM;AAClC,MAAI,OAAO,KAAK;AAChB,MAAI,MAAM,KAAK,MAAM,OAAO,GAAG;AAC/B,MAAI,QAAQ,OAAO,MAAM,OAAO;AAChC,MAAI,YAAY,KAAK,MAAM,OAAO,GAAG;AACrC,SAAO;AAAA,IACL,KAAK,MAAM;AAAA,IACX,MAAM,OAAO,YAAY;AAAA,EAC7B;AACA;AACA,SAAS,yBAAyB,QAAQ;AACxC,MAAI,kBAAkB,MAAM;AAC1B,QAAI,WAAW,qBAAqB,MAAM;AAC1C,WAAO,0BAA0B,QAAQ;AAAA,EAC7C,OAAS;AACL,WAAO;AAAA,EACR;AACH;AACA,SAAS,0BAA0B,MAAM;AACvC,MAAI,OAAO,IAAI,SAAS,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AACrE,UAAQ,KAAK,YAAU;AAAA,IACrB,KAAK,GAAG;AACN,UAAI,MAAM,KAAK,UAAU,CAAC;AAC1B,UAAI,OAAO;AACX,aAAO,EAAE,KAAK;IACf;AAAA,IACD,KAAK,GAAG;AACN,UAAI,oBAAoB,KAAK,UAAU,CAAC;AACxC,UAAI,WAAW,KAAK,UAAU,CAAC;AAC/B,UAAI,OAAO,oBAAoB,KAAK,aAAa;AACjD,UAAI,OAAO,sBAAsB;AACjC,aAAO,EAAE,KAAK;IACf;AAAA,IACD,KAAK,IAAI;AACP,UAAI,MAAM,SAAS,MAAM,CAAC;AAC1B,UAAI,OAAO,KAAK,UAAU,CAAC;AAC3B,aAAO,EAAE,KAAK;IACf;AAAA,IACD;AACE,YAAM,IAAI,YAAY,gEAAgE,OAAO,KAAK,MAAM,CAAC;AAAA,EAC5G;AACH;AACA,SAAS,yBAAyB,MAAM;AACtC,MAAI,WAAW,0BAA0B,IAAI;AAC7C,SAAO,IAAI,KAAK,SAAS,MAAM,MAAM,SAAS,OAAO,GAAG;AAC1D;AACA,IAAI,qBAAqB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV;AAAA;AAAA,CAGE,WAAW;AACT,WAAS,kBAAkB;AACzB,SAAK,kBAAkB;AACvB,SAAK,kBAAkB;AACvB,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,SAAS,kBAAkB;AAAA,EACjC;AACD,kBAAgB,UAAU,WAAW,SAAS,KAAK;AACjD,QAAI,OAAO,IAAI,MAAM,UAAU,IAAI,QAAQ,SAAS,IAAI;AACxD,QAAI,QAAQ,GAAG;AACb,WAAK,SAAS,IAAI,IAAI;AACtB,WAAK,SAAS,IAAI,IAAI;AAAA,IAC9B,OAAa;AACL,UAAI,QAAQ,IAAI;AAChB,WAAK,gBAAgB,KAAK,IAAI;AAC9B,WAAK,gBAAgB,KAAK,IAAI;AAAA,IAC/B;AAAA,EACP;AACI,kBAAgB,UAAU,cAAc,SAAS,QAAQ,SAAS;AAChE,aAAS,IAAI,GAAG,IAAI,KAAK,gBAAgB,QAAQ,KAAK;AACpD,UAAI,YAAY,KAAK,gBAAgB,CAAC;AACtC,UAAI,aAAa,MAAM;AACrB,YAAI,OAAO,UAAU,QAAQ,OAAO;AACpC,YAAI,QAAQ,MAAM;AAChB,cAAI,OAAO,KAAK;AAChB,iBAAO,IAAI,QAAQ,MAAM,IAAI;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AACD,aAAS,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KAAK;AAC7C,UAAI,YAAY,KAAK,SAAS,CAAC;AAC/B,UAAI,aAAa,MAAM;AACrB,YAAI,OAAO,UAAU,QAAQ,OAAO;AACpC,YAAI,QAAQ,MAAM;AAChB,cAAI,OAAO;AACX,iBAAO,IAAI,QAAQ,MAAM,IAAI;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AACD,QAAI,kBAAkB,SAAS;AAC7B,aAAO;AAAA,IACR;AACD,WAAO;AAAA,EACb;AACI,kBAAgB,UAAU,SAAS,SAAS,MAAM,MAAM,SAAS;AAC/D,QAAI,YAAY,OAAO,IAAI,KAAK,gBAAgB,KAAK,IAAI,IAAI,KAAK,SAAS,IAAI;AAC/E,QAAI,WAAW;AACb,aAAO,UAAU,MAAM,MAAM,OAAO;AAAA,IAC5C,OAAa;AACL,aAAO,IAAI,QAAQ,MAAM,IAAI;AAAA,IAC9B;AAAA,EACP;AACI,kBAAgB,eAAe,IAAI;AACnC,SAAO;AACX,GAAK;AAybL,IAAI,oBAAqC,kBAAC,uBAAuB;AAC/D,qBAAmB,qBAAqB,IAAI;AAC5C,qBAAmB,UAAU,IAAI;AACjC,qBAAmB,kBAAkB,IAAI;AACzC,qBAAmB,iBAAiB,IAAI;AACxC,qBAAmB,mBAAmB,IAAI;AAC1C,qBAAmB,QAAQ,IAAI;AAC/B,qBAAmB,cAAc,IAAI;AACrC,qBAAmB,aAAa,IAAI;AACpC,qBAAmB,oBAAoB,IAAI;AAC3C,qBAAmB,oBAAoB,IAAI;AAC3C,qBAAmB,uBAAuB,IAAI;AAC9C,qBAAmB,+BAA+B,IAAI;AACtD,qBAAmB,eAAe,IAAI;AACtC,SAAO;AACT,GAAG,qBAAqB,CAAA,CAAE;AAK1B,MAAM,2BAA2B,MAAMkC,0BAAyB;AAAA,EAC9D,OAAO,aAAa,MAAM;AACxB,UAAM,YAAY;AAClB,UAAM,YAAY;AAClB,QAAI;AACF,aAAO;AAAA,QACL,KAAK;AAAA,QACL,IAAI,WAAW,KAAK,UAAU,EAAE,QAAQ,SAAS,EAAE,SAAS,WAAW,GAAG;AAAA,QAC1E,OAAO,WAAW,KAAK,SAAQ,CAAE,EAAE,QAAQ,SAAS;AAAA,MAC5D;AAAA,IACK,SAAQ,OAAO;AACd,aAAO;AAAA,QACL,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,OAAO;AAAA,MACf;AAAA,IACK;AAAA,EACF;AAAA,EACD,OAAO,2BAA2B,MAAM;AACtC,QAAI;AACF,aAAO;AAAA,QACL,KAAK;AAAA,MACb;AAAA,IACK,SAAQ,OAAO;AACd,aAAO;AAAA,QACL,KAAK,CAAE;AAAA,MACf;AAAA,IACK;AAAA,EACF;AAAA,EACD,OAAO,mBAAmB,MAAM;AAC9B,QAAI;AACF,aAAO;AAAA,QACL,KAAK,KAAK,MAAM,IAAI;AAAA,MAC5B;AAAA,IACK,SAAQ,OAAO;AACd,aAAO;AAAA,QACL,KAAK;AAAA,MACb;AAAA,IACK;AAAA,EACF;AAAA,EACD,OAAO,yBAAyB,MAAM,cAAc;AAClD,QAAI,YAAY;AAChB,UAAM,2BAA2B,CAAA;AACjC,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,YAAY,GAAG;AACrD,mBAAa,WAAW,IAAI,QAAQ,CAAC,CAAC,EAAE,WAAW,SAAS,GAAG,GAAG;AAClE,+BAAyB,KAAK;AAAA,QAC5B;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACF;AACD,UAAM,YAAY;AAClB,UAAM,YAAY;AAClB,QAAI;AACF,aAAO;AAAA,QACL,KAAK;AAAA,QACL,IAAI,WAAW,KAAK,UAAU,EAAE,QAAQ,SAAS,EAAE,SAAS,WAAW,GAAG;AAAA,QAC1E,OAAO,WAAW,KAAK,SAAQ,CAAE,EAAE,QAAQ,SAAS;AAAA,QACpD,YAAY;AAAA,QACZ,qBAAqB;AAAA,MAC7B;AAAA,IACK,SAAQ,OAAO;AACd,aAAO;AAAA,QACL,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,YAAY,CAAE;AAAA,QACd,qBAAqB;AAAA,MAC7B;AAAA,IACK;AAAA,EACF;AAAA,EACD,OAAO,+BAA+B,MAAM;AAC1C,QAAI;AACF,YAAM,UAAU,CAAA;AAChB,UAAI,MAAM;AACR,mBAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC7C,gBAAM,cAAc;AAAA,YAClB;AAAA,YACA;AAAA,YACA,SAAS,GAAG;AAAA,UACxB;AACU,kBAAQ,KAAK,WAAW;AAAA,QACzB;AAAA,MACF;AACD,UAAI;AACF,eAAO;AAAA,UACL,MAAM;AAAA,QAChB;AAAA,MACO,SAAQ,OAAO;AACd,eAAO;AAAA,UACL,MAAM,CAAE;AAAA,QAClB;AAAA,MACO;AAAA,IACF,SAAQ,OAAO;AACd,aAAO;AAAA,QACL,MAAM,CAAE;AAAA,MAChB;AAAA,IACK;AAAA,EACF;AAAA,EACD,OAAO,mBAAmB,IAAI,MAAM,kBAAkB,QAAQ;AAC5D,QAAI;AACF,YAAM,WAAW,CAAA;AACjB,YAAM,QAAQ;AAAA,QACZ;AAAA,QACA,aAAa,CAAE;AAAA,MACvB;AACM,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,qBAAqB,cAAc;AACxG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,mBAAmB,YAAY;AACpG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,mBAAmB,YAAY;AACpG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,4BAA4B,qBAAqB;AACtH,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kCAAkC,0BAA0B;AACjI,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kCAAkC,0BAA0B;AACjI,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,gBAAgB,UAAU;AAC/F,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,sBAAsB,oBAAoB;AAC/G,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,wBAAwB,iBAAiB;AAC9G,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,6BAA6B,qBAAqB;AACvH,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,4BAA4B,qBAAqB;AACtH,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,+BAA+B,wBAAwB;AAC5H,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,WAAW;AAClG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,aAAa,OAAO;AACzF,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,IAAI;AAC3F,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,IAAI;AAC3F,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,gBAAgB,OAAO,cAAc;AACtH,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,uBAAuB,aAAa,oBAAoB;AACzI,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,gBAAgB,YAAY,mBAAmB;AAChI,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,eAAe,WAAW,kBAAkB;AAC7H,MAAAA,0BAAyB,oBAAoB,OAAO,MAAM,UAAU,MAAM,0BAA0B,gBAAgB;AACpH,MAAAA,0BAAyB,oBAAoB,OAAO,MAAM,UAAU,MAAM,yBAAyB,eAAe;AAClH,MAAAA,0BAAyB,qBAAqB,OAAO,MAAM,UAAU,MAAM,cAAc,QAAQ;AACjG,UAAI,CAAC,kBAAkB;AACrB,cAAM,YAAY,MAAM,MAAM,IAAIA,0BAAyB,2BAA2B,KAAK,aAAa,CAAC;AAAA,MAC1G;AACD,UAAI,SAAS,SAAS,GAAG;AACvB,iBAAS,QAAQ,CAAC,aAAa,OAAO,MAAM,QAAQ,CAAC;AAAA,MACtD;AACD,aAAO;AAAA,IACR,SAAQ,OAAO;AACd,aAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,OAAO,kBAAkB,IAAI,MAAM,kBAAkB,QAAQ;AAC3D,QAAI;AACF,YAAM,WAAW,CAAA;AACjB,YAAM,QAAQ;AAAA,QACZ;AAAA,QACA,aAAa,CAAE;AAAA,MACvB;AACM,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,qBAAqB,cAAc;AACxG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,mBAAmB,YAAY;AACpG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,mBAAmB,YAAY;AACpG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,4BAA4B,qBAAqB;AACtH,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kCAAkC,0BAA0B;AACjI,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kCAAkC,0BAA0B;AACjI,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,gBAAgB,UAAU;AAC/F,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,sBAAsB,oBAAoB;AAC/G,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,wBAAwB,iBAAiB;AAC9G,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,6BAA6B,qBAAqB;AACvH,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,4BAA4B,qBAAqB;AACtH,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,+BAA+B,wBAAwB;AAC5H,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,WAAW;AAClG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,aAAa,OAAO;AACzF,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,IAAI;AAC3F,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,IAAI;AAC3F,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,gBAAgB,OAAO,cAAc;AACtH,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,uBAAuB,aAAa,oBAAoB;AACzI,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,gBAAgB,YAAY,mBAAmB;AAChI,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,eAAe,WAAW,kBAAkB;AAC7H,MAAAA,0BAAyB,oBAAoB,OAAO,MAAM,UAAU,MAAM,0BAA0B,gBAAgB;AACpH,MAAAA,0BAAyB,oBAAoB,OAAO,MAAM,UAAU,MAAM,yBAAyB,eAAe;AAClH,MAAAA,0BAAyB,qBAAqB,OAAO,MAAM,UAAU,MAAM,cAAc,QAAQ;AACjG,UAAI,CAAC,kBAAkB;AACrB,cAAM,YAAY,MAAM,MAAM,IAAIA,0BAAyB,2BAA2B,KAAK,aAAa,CAAC;AAAA,MAC1G;AACD,UAAI,SAAS,SAAS,GAAG;AACvB,iBAAS,QAAQ,CAAC,aAAa,OAAO,MAAM,QAAQ,CAAC;AAAA,MACtD;AACD,aAAO;AAAA,IACR,SAAQ,OAAO;AACd,aAAO;AAAA,IACR;AAAA,EACF;AAAA,EACD,OAAO,iBAAiB,IAAI,MAAM,kBAAkB,QAAQ;AAC1D,QAAI;AACF,UAAI,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AAClC,eAAO;AAAA,MACR;AACD,YAAM,WAAW,CAAA;AACjB,YAAM,QAAQ;AAAA,QACZ;AAAA,QACA,aAAa,CAAE;AAAA,MACvB;AACM,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,qBAAqB,cAAc;AACxG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,mBAAmB,YAAY;AACpG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,mBAAmB,YAAY;AACpG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,4BAA4B,qBAAqB;AACtH,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kCAAkC,0BAA0B;AACjI,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kCAAkC,0BAA0B;AACjI,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,gBAAgB,UAAU;AAC/F,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,WAAW;AAClG,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,aAAa,OAAO;AACzF,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,sBAAsB,oBAAoB;AAC/G,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,IAAI;AAC3F,MAAAA,0BAAyB,eAAe,OAAO,MAAM,UAAU,MAAM,kBAAkB,IAAI;AAC3F,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,gBAAgB,YAAY,mBAAmB;AAChI,MAAAA,0BAAyB,2BAA2B,OAAO,MAAM,UAAU,MAAM,eAAe,WAAW,kBAAkB;AAC7H,MAAAA,0BAAyB,oBAAoB,OAAO,MAAM,UAAU,MAAM,0BAA0B,gBAAgB;AACpH,MAAAA,0BAAyB,oBAAoB,OAAO,MAAM,UAAU,MAAM,yBAAyB,eAAe;AAClH,UAAI,CAAC,kBAAkB;AACrB,cAAM,YAAY,MAAM,MAAM,IAAIA,0BAAyB,2BAA2B,KAAK,aAAa,CAAC;AAAA,MAC1G;AACD,UAAI,SAAS,SAAS,GAAG;AACvB,iBAAS,QAAQ,CAAC,aAAa,OAAO,MAAM,QAAQ,CAAC;AAAA,MACtD;AACD,aAAO;AAAA,IACR,SAAQ,OAAO;AACd,aAAO;AAAA,IACR;AAAA,EACF;AACH;AACAD,eAAc,0BAA0B,kBAAkB,CAAC,OAAO,MAAM,UAAU,WAAW,cAAc;AACzG,MAAI,aAAa,MAAM;AACrB,UAAM,YAAY,SAAS,IAAI,yBAAyB,aAAa,KAAK,SAAS,CAAC;AAAA,EACxF,OAAS;AACL,aAAS,KAAK,iEAAiE,SAAS,mBAAmB;AAC3G,UAAM,YAAY,SAAS,IAAI,yBAAyB,aAAa,CAAC;AAAA,EACvE;AACH,CAAC;AACDA,eAAc,0BAA0B,8BAA8B,CAAC,OAAO,MAAM,UAAU,WAAW,WAAW,sBAAsB;AACxI,MAAI,aAAa,QAAQ,qBAAqB,MAAM;AAClD,UAAM,YAAY,SAAS,IAAI,yBAAyB,yBAAyB,KAAK,SAAS,GAAG,KAAK,iBAAiB,CAAC;AAAA,EAC7H,WAAa,aAAa,MAAM;AAC5B,UAAM,UAAU,KAAK,SAAS;AAC9B,aAAS,KAAK,yFAAyF,iBAAiB,kBAAkB,OAAO,MAAM;AACvJ,UAAM,YAAY,SAAS,IAAI,yBAAyB,yBAAyB,SAAS,CAAA,CAAE;AAAA,EAChG,OAAS;AACL,aAAS,KAAK,8EAA8E,SAAS,sCAAsC,iBAAiB,sBAAsB;AAClL,UAAM,YAAY,SAAS,IAAI,yBAAyB,yBAAyB,GAAG,CAAA,CAAE;AAAA,EACvF;AACH,CAAC;AACDA,eAAc,0BAA0B,uBAAuB,CAAC,OAAO,MAAM,UAAU,WAAW,cAAc;AAC9G,MAAI,aAAa,MAAM;AACrB,UAAM,YAAY,SAAS,IAAI,yBAAyB,+BAA+B,KAAK,SAAS,CAAC;AAAA,EAC1G,OAAS;AACL,aAAS,KAAK,sEAAsE,SAAS,oBAAoB;AACjH,UAAM,YAAY,SAAS,IAAI,yBAAyB,+BAA+B,CAAA,CAAE;AAAA,EAC1F;AACH,CAAC;AACDA,eAAc,0BAA0B,wBAAwB,CAAC,OAAO,MAAM,UAAU,WAAW,cAAc;AAC/G,MAAI,aAAa,MAAM;AACrB,UAAM,YAAY,SAAS,IAAI,yBAAyB,mBAAmB,KAAK,SAAS,CAAC;AAAA,EAC9F,OAAS;AACL,aAAS,KAAK,uEAAuE,SAAS,oBAAoB;AAClH,UAAM,YAAY,SAAS,IAAI,yBAAyB,mBAAmB,CAAA,CAAE;AAAA,EAC9E;AACH,CAAC;AAkCa,YAAY,QAAQ,QAAQ,GAAG,EAAE;AA0O/C,MAAM,YAAY,CAAA;AAClB,SAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAC5B,YAAU,MAAM,IAAI,KAAK,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAChD;AAImB,OAAO,WAAW,eAAe,OAAO,cAAc,OAAO,WAAW,KAAK,MAAM;AAAA,CAq7BrE;AAAA,EAC/B,eAAe;AAAA,IACb;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,kBAAkB;AAAA;AAAA,IAEnB;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,OAAO;AAAA,QACL,EAAE,OAAO,OAAO,aAAa,GAAI;AAAA,QACjC,EAAE,OAAO,OAAO,aAAa,GAAI;AAAA,QACjC,EAAE,OAAO,OAAO,aAAa,GAAI;AAAA,QACjC,EAAE,OAAO,QAAQ,aAAa,IAAK;AAAA,QACnC,EAAE,OAAO,SAAS,aAAa,IAAK;AAAA,QACpC,EAAE,OAAO,UAAU,aAAa,IAAK;AAAA,QACrC,EAAE,OAAO,aAAa,aAAa,GAAI;AAAA,MACxC;AAAA,IACF;AAAA,IACD;AAAA,MACE,WAAW;AAAA,MACX,OAAO,MAAM;AAAA,MACb,oBAAoB;AAAA,MACpB,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,OAAO;AAAA,QACL,EAAE,OAAO,OAAO,aAAa,GAAI;AAAA,QACjC,EAAE,OAAO,OAAO,aAAa,GAAI;AAAA,QACjC,EAAE,OAAO,OAAO,aAAa,GAAI;AAAA,QACjC,EAAE,OAAO,QAAQ,aAAa,IAAK;AAAA,QACnC,EAAE,OAAO,SAAS,aAAa,IAAK;AAAA,QACpC,EAAE,OAAO,UAAU,aAAa,IAAK;AAAA,QACrC,EAAE,OAAO,aAAa,aAAa,GAAI;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAAA,EACD,UAAU;AAAA,IACR,CAAC,SAAS,GAAG;AAAA,MACX,qBAAqB;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACD,6BAA6B;AAAA,QAC3B,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,eAAe;AAAA,MAChB;AAAA,MACD,WAAW;AAAA,QACT;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,MACF;AAAA,MACD,mBAAmB,SAAS;AAC1B,cAAM,EAAE,WAAW,mBAAmB,yBAAwB,IAAK;AACnE,eAAO,IAAI,SAAS,IAAI,iBAAiB,IAAI,wBAAwB;AAAA,MACtE;AAAA,MACD,mBAAmB;AAAA,QACjB,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,MACrB;AAAA,MACD,oBAAoB;AAAA,QAClB;AAAA,UACE,mBAAmB,kBAAkB;AAAA,UACrC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA,UACrC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA,UACrC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA,UACrC,OAAO;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,IACD,CAAC,OAAO,GAAG;AAAA,MACT,qBAAqB;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACD,6BAA6B;AAAA,QAC3B,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,eAAe;AAAA,MAChB;AAAA,MACD,WAAW;AAAA,QACT;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,MACF;AAAA;AAAA,MAED,mBAAmB,SAAS;AAC1B,cAAM,EAAE,WAAW,UAAU,cAAa,IAAK;AAC/C,eAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,aAAa;AAAA,MAClD;AAAA,MACD,mBAAmB;AAAA,QACjB,oBAAoB;AAAA,QACpB,oBAAoB;AAAA;AAAA,QAEpB,oBAAoB;AAAA;AAAA,MAErB;AAAA,MACD,oBAAoB;AAAA,QAClB;AAAA,UACE,mBAAmB,kBAAkB;AAAA,UACrC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA,UACrC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA,UACrC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA,UACrC,OAAO;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,IACD,CAAC,QAAQ,GAAG;AAAA,MACV,qBAAqB;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACD,6BAA6B;AAAA,QAC3B,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,eAAe;AAAA,MAChB;AAAA,MACD,WAAW;AAAA,QACT;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,QACD;AAAA,UACE,WAAW;AAAA,UACX,OAAO,MAAM;AAAA,UACb,oBAAoB;AAAA,UACpB,UAAU;AAAA,UACV,kBAAkB;AAAA;AAAA,QAEnB;AAAA,MACF;AAAA;AAAA,MAED,mBAAmB,SAAS;AAC1B,cAAM,EAAE,YAAY,eAAe,eAAc,IAAK;AACtD,eAAO,IAAI,UAAU,IAAI,aAAa,IAAI,cAAc;AAAA,MACzD;AAAA,MACD,mBAAmB;AAAA,QACjB,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,MACrB;AAAA,MACD,oBAAoB;AAAA,QAClB;AAAA,UACE,mBAAmB,kBAAkB;AAAA;AAAA,UAErC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA;AAAA,UAErC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA;AAAA,UAErC,OAAO;AAAA,QACR;AAAA,QACD;AAAA,UACE,mBAAmB,kBAAkB;AAAA;AAAA,UAErC,OAAO;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACH;ACzxNO,MAAM,iBAAiB;AAAA;AAAA,EAqB1B,YAAY,KAAU,SAAmC;AAsEzD;AAIA;AAIA;AAjGA;AAAA,gCAAe;AACf,gCAAU,IAAI;AACd,iCAAW,IAAI;AACf,uDAAiC;AACjC,6CAAuB;AACvB,6BAA2C;AAC3C;AACA,kCAAoD,CAAA;AACpD;AACA,mCAAa;AAEb;AAAA,yCAAwC,CAAA;AACxC;AAAA,wCAAkB;AAClB;AACA;AACA;AAAA,4CAAsB;AACtB,6CAAuB;AACvB;AAAA,6CAAuB;AAoFvB,gDAA0B,CAAC,SAAyC;AAChE,YAAM,kBAAkD;AACnD,4BAAA,sCAAA,WAAiB7C,QAAM,OAAO,6DAA6D,KAAK,UAAU,eAAe,CAAC,GAAG;AAC9H,UAAA,gBAAgB,cAAc,IAAI;AAElC,gBAAQ,gBAAgB,SAAS;AAAA,UACjC,KAAK,uBAAuB;AACnB,+BAAA,0BAAA,WAAyB,gBAAgB;AAC9C;AAAA,UACJ,KAAK,uBAAuB;AACnB,+BAAA,mBAAA,WAAkB,gBAAgB;AACvC;AAAA,UACJ,KAAK,uBAAuB;AACnB,+BAAA,iBAAA,WAAgB,gBAAgB;AACrC;AAAA,UACJ,KAAK,uBAAuB;AACxB,+BAAK,8BAAL,WAAkC,gBAAgB,QAAQ,gBAAgB,gBAAgB,QAAQ;AAClG;AAAA,UACJ;AACI,kBAAM,IAAI,MAAM,mCAAmC,gBAAgB,OAAO,cAAc;AAAA,QAC5F;AAAA,MAAA,OACG;AACH,cAAM,WAAW,mBAAK,kBAAiB,gBAAgB,SAAS;AAChE,YAAI,UAAU;AACV,mBAAS,eAAe;AAAA,QAAA,OACrB;AACH,gBAAM,IAAI,MAAM,aAAa,gBAAgB,SAAS,iCAAiC;AAAA,QAC3F;AAAA,MACJ;AAAA,IAAA;AAGJ,qCAAe,CAAC,YAA6E;AACzF,cAAQ,YAAY,uBAAK,YAAL;AAEpB,aAAO,IAAI,QAAwC,CAAC,SAAS,WAAW;AAE9D,cAAA,UAA0B,WAAW,MAAM;AACtC,iBAAA,mBAAK,kBAAiB,QAAQ,SAAmB;AACxD,iBAAO,aAAa,QAAQ,SAAS,2BAA2B,mBAAK,gBAAe,OAAO;AAAA,QAAA,GAC5F,mBAAK,gBAAe;AAGvB,2BAAK,kBAAiB,QAAQ,SAAmB,IAAI,CAAC,aAA6C;AAC/F,uBAAa,OAAO;AACb,iBAAA,mBAAK,kBAAiB,QAAQ,SAAmB;AACnD,gCAAA,sCAAA,WAAiBA,QAAM,OAAO,8DAA8D,KAAK,UAAU,QAAQ,CAAC,GAAG;AAC5H,kBAAQ,QAAQ;AAAA,QAAA;AAIf,8BAAA,sCAAA,WAAiBA,QAAM,OAAO,qDAAqD,KAAK,UAAU,OAAO,CAAC,GAAG;AAC7G,2BAAA,oBAAmB,YAAY,OAAO;AAAA,MAAA,CAC9C;AAAA,IAAA;AAGL,wCAAkB,CAAC,YAA0B;AACzC,UAAI,mBAAK,OAAM;AACN,2BAAA,MAAK,MAAM,OAAO;AAAA,MAC3B;AACA,4BAAK,sCAAL,WAAsB;AAAA,IAAO;AAIjC;AAAA,qDAA+B,CAAC,gBAAuB,cAA6C;AAChG,UAAI,mBAAK,OAAM;AACN,2BAAA,MAAK,iBAAiB,gBAAgB,SAAS;AAAA,MACxD;AAAA,IAAA;AAGJ,kCAAY,MAAM;AACP,aAAA,eAAe,mBAAK,UAAS,KAAK;AAAA,IAAA;AAI7C;AAAA,0CAAoB,CAAC,UAA4B;AAC7C,UAAI;AAAQ;AAAA,WAEL;AAEE,2BAAA,WAAA,WAAY,YAAY;AAAA;AAAA,UACzB,SAAS;AAAA,QAAA,CACZ;AAGD,mBAAW,MAAM;AACb,6BAAK,SAAQ,QAAQ,GAAG,mBAAK,UAAS,OAAO,OAAO;AAAA,WACrD,CAAC;AAAA,MACR;AAAA,IAAA;AAGJ,iDAA8C,CAAC,aAA2B;AACtE,UAAI;AAAQ;AAAA,WAEL;AAEC,YAAA,mBAAK,UAAS,mBAAmB;AAC5B,6BAAA,UAAS,kBAAkB,QAAQ;AAAA,QAC5C;AAEK,2BAAA,WAAA,WAAY,cAAc,QAAQ;AAAA,MAC3C;AAAA,IAAA;AAGJ,oCAAc,CAAC,KAAU,WAAgB;AACrC,4BAAK,sCAAL,WAAsBA,QAAM,KAAK,8BAA8B;AAC/D,aAAO,WAAW,OAAO,IAAS,MAAW,SAAc;AACvD,cAAM,gBAAkC,IAAI,OAAO,iBAAiB,KAAK,yBAAyB;AAE7F,8BAAA,sCAAA,WAAiBA,QAAM,KAAK,sBAAsB,KAAK,IAAI,WAAW,GAAG,IAAI,GAAG;AAErF,YAAI,mBAAK,WAAL,WAAiB,aAAa,OAAO;AACrC,gCAAK,oCAAL,WAAqB;AAEjB,cAAA,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,WAAW,MAAM,GAAG;AAClE,kCAAK,oCAAL,WAAqB,QAAQ,mBAAK,UAAS,OAAO;AAC7C;AACL;AAAA,UACJ,WAAW,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,SAAS,MAAM,GAAG;AAEnE,gBAAA,mBAAK,WAAL,WAAiB,UAAU;AAEtB;AACL;AAAA,YACJ;AAAA,UACJ;AACI,cAAA,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,QAAQ,MAAM,GAAG;AAC1D;AACL;AAAA,UACJ;AACI,cAAA,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,OAAO,MAAM,GAAG;AACzD;AACL;AAAA,UACJ;AACI,cAAA,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,QAAQ,MAAM,GAAG;AAC1D;AACL;AAAA,UACJ;AACI,cAAA,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,YAAY,MAAM,GAAG;AAC9D;AACL;AAAA,UACJ;AAEA,gBAAM,MAAM,GAAG;AAEf,cAAI,IAAI,oBAAoB,IAAI,KAAK,IAAI,oBAAoB,KAAK,GAAG;AAC5D,kCAAA,sCAAA,WAAiBA,QAAM,QAAQ,sDAAsD,KAAK,UAAU,GAAG,CAAC,GAAG;AAChH,kBAAM,SAAkB,MAAM,cAAc,eAAe,GAAG;AAC9D,kCAAK,sCAAL,WAAsBA,QAAM,QAAQ,kDAAkD,MAAM,GAAG;AAC/F,gBAAI,QAAQ;AAEH,mBAAA;AAAA,gBACD,MAAM,GAAG,mBAAK,UAAS,OAAO;AAAA,gBAC9B,SAAS;AAAA,cAAA,CACZ;AACD;AAAA,YAAA,OACG;AAEE,mBAAA;AAAA,gBACD,MAAM,GAAG,mBAAK,UAAS,OAAO;AAAA,gBAC9B,SAAS;AAAA,cAAA,CACZ;AAMD;AAAA,YACJ;AAAA,UACJ;AAEA,gCAAK,sCAAL,WAAsB;AAChB,gBAAA,kBAAkB,MAAM,cAAc;AACvC,gCAAA,sCAAA,WAAiB,mDAAmD,eAAe;AAExF,cAAI,oBAAoB,MAAM;AAC1B,kCAAK,sCAAL,WAAsB;AACtB,0BAAc,UAAU;AACnB;AACL;AAAA,UAAA,OACG;AACH,iBAAK,GAAG,mBAAK,UAAS,OAAO,EAAE;AAC/B;AAAA,UACJ;AAAA,QAAA,OACG;AAEC,cAAA,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,SAAS,MAAM,GAAG;AAChE,iBAAK,GAAG,mBAAK,UAAS,OAAO,EAAE;AAC/B;AAAA,UACJ;AACI,cAAA,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,WAAW,MAAM,GAAG;AAClE,iBAAK,GAAG,mBAAK,UAAS,OAAO,EAAE;AAC/B;AAAA,UACJ;AACI,cAAA,GAAG,KAAK,cAAc,GAAG,mBAAK,UAAS,OAAO,QAAQ,MAAM,GAAG;AAC/D,iBAAK,GAAG,mBAAK,UAAS,OAAO,EAAE;AAC/B;AAAA,UACJ;AACK;QACT;AAAA,MAAA,CACH;AAAA,IAAA;AAIL;AAAA,0CAAiB,YAA4B;AACnC,YAAA,WAA2C,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB;AAC3G,aAAO,SAAS;AAAA,IAAA;AAIpB;AAAA,+CAAsB,OAAM,aAAa,MAAwB;AACzD,UAAA,mBAAK,yBAAwB,MAAM;AAC/B,YAAA,aAAa,mBAAK,uBAAsB;AACxC,gBAAM,IAAI,MAAM,8DAA8D,mBAAK,qBAAoB,aAAa;AAAA,QACxH;AACM,cAAA,MAAM,mBAAK,qBAAoB;AACrC,8BAAK,sCAAL,WAAsBA,QAAM,KAAK,oFAAoF,UAAU,GAAG;AAClI,eAAO,MAAM,KAAK,oBAAoB,aAAW,CAAC;AAAA,MAAA,OAC/C;AACH,2BAAK,qBAAsB;AACrB,cAAA,WAA2C,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB;AAC3G,2BAAK,qBAAsB;AAC3B,eAAO,SAAS;AAAA,MACpB;AAAA,IAAA;AAIJ;AAAA,sCAAa,YAAyB;AAC5B,YAAA,WAA2C,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB;AAC3G,aAAO,SAAS;AAAA,IAAA;AAGpB,0CAAiB,YAA6B;AACtC,UAAA;AACA,8BAAK,sCAAL,WAAsB,iDAAiD,uBAAuB,eAAe;AACvG,cAAA,WAA2C,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB;AAC3G,8BAAK,sCAAL,WAAsB,8CAA8C,KAAK,UAAU,SAAS,OAAO,CAAC;AACpG,eAAO,SAAS;AAAA,eACX,OAAO;AACZ,8BAAK,sCAAL,WAAsBA,QAAM,IAAI,yBAAyB,KAAK,EAAE;AACzD,eAAA;AAAA,MACX;AAAA,IAAA;AAGJ,qCAAY,YAAiC;AACrC,UAAA;AACM,cAAA,WAA2C,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB;AAC3G,2BAAK,mBAAkB,IAAI,mBAAK,iCAAgC,SAAS,QAAQ,gBAAgB;AAC3F,cAAA,MAAM,SAAS,QAAQ;AAC7B,YAAI,CAAC,QAAQ;AACF,iBAAA,SAAS,QAAQ,GAAG;AAAA,QAAA,OACxB;AACH,iBAAO,SAAS,QAAQ;AAAA,QAC5B;AAAA,eACK,OAAO;AACZ,8BAAK,sCAAL,WAAsBA,QAAM,IAAI,oBAAoB,KAAK,EAAE;AAAA,MAC/D;AACA,aAAO;IAAE;AAGb,0CAAiB,OAAO,cAA4C;AAC5D,UAAA;AACA,8BAAK,sCAAL,WAAsBA,QAAM,QAAQ,iCAAiC;AACrE,YAAI,WAAkD;AAClD,YAAA,UAAU,oBAAoB,IAAI,GAAG;AACrC,gBAAM,mBAAsC,mBAAK,mBAAkB,IAAI,mBAAK,+BAA8B;AACrG,6BAAA,mBAAkB,OAAO,mBAAK,+BAA8B;AAEjE,gCAAK,sCAAL,WAAsBA,QAAM,QAAQ,kEAAkE;AACtG,qBAAW,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB,iBAAiB,SAAS;AAAA,YAC3F;AAAA,YACA;AAAA;QACF,OACC;AACQ,qBAAA,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB,iBAAiB,SAAS,UAAA;AAAA,QACnG;AACK,8BAAA,sCAAA,WAAiBA,QAAM,QAAQ,+DAA+D,KAAK,UAAU,QAAQ,CAAC,GAAG;AAC9H,eAAO,SAAS;AAAA,eACX,OAAO;AACZ,8BAAK,sCAAL,WAAsBA,QAAM,IAAI,yBAAyB,KAAK,EAAE;AACzD,eAAA;AAAA,MACX;AAAA,IAAA;AAGJ,kCAAS,YAA8B;AAC/B,UAAA;AACM,cAAA,WAA2C,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB;AAC3G,eAAO,SAAS;AAAA,eACX,OAAO;AACZ,8BAAK,sCAAL,WAAsBA,QAAM,IAAI,iBAAiB,KAAK,EAAE;AACjD,eAAA;AAAA,MACX;AAAA,IAAA;AAIJ;AAAA,6CAAoB,YAA0B;AACtC,UAAA;AACM,cAAA,WAA2C,MAAM,mBAAK,cAAL,WAAkB,EAAE,SAAS,uBAAuB;AAC3G,eAAO,SAAS;AAAA,eACX,OAAO;AACZ,8BAAK,sCAAL,WAAsBA,QAAM,IAAI,4BAA4B,KAAK,EAAE;AAC5D,eAAA;AAAA,MACX;AAAA,IAAA;AAGJ,oCAAW,MAAe;AAClB,UAAA;AACO,eAAA,mBAAK,WAAL,WAAiB;AAAA,eACnB,OAAO;AACL,eAAA;AAAA,MACX;AAAA,IAAA;AAtYA,uBAAK,UAAW;AAEhB,QAAI,CAAC,QAAQ;AACT,UAAI,IAAI,OAAO,iBAAiB,KAAK,gCAAgC,GAAG;AACpE,cAAM,0BAAqD,IAAI,OAAO,iBAAiB,KAAK,gCAAgC;AAC5H,2BAAK,MAAO;AAAA,MAChB;AACK,yBAAA,SAAU,IAAI,OAAO,iBAAiB;AAAA,IAC/C;AAGA,QAAI,QAAQ;AACH,yBAAA,mBAAoB,IAAI,qBAAwC,EAAC,mBAAmB,kBAAkB,gBAAgB,WAAW,OAAM,EAAE,WAAW;AAAA,IAAA,OACtJ;AACE,yBAAA,mBAAoB,IAAI,qBAAwC,EAAC,mBAAmB,kBAAkB,iBAAiB,WAAW,OAAM,EAAE,WAAW;AAAA,IAC9J;AAEI,QAAA,mBAAK,UAAS,eAAe;AACxB,yBAAA,SAAU,mBAAK,UAAS,cAAc;AAAA,IAAA,OACxC;AACG,YAAA,IAAI,MAAM,wGAAwG;AAAA,IAC5H;AAEA,QAAI,CAAC,QAAQ;AACR,yBAAK,SAAmB,YAAY,CAAC,SAAuB;AACzD,8BAAK,oCAAL,WAAqBA,QAAM,MAAM,6BAA6B,IAAI,GAAG;AAAA,MAAC;AAGzE,yBAAK,SAAmB,UAAU,CAAC,UAAU;AACrC,8BAAA,oCAAA,WAAgBA,QAAM,MAAM,2BAA2B,KAAK,UAAU,KAAK,CAAC,GAAG;AAAA,MAAC;AAAA,IAE7F;AAEI,QAAA;AACJ,QAAI,QAAQ;AACF,YAAA;AAAA,QACF,OAAO;AAAA;AAAA,QACP,OAAO;AAAA;AAAA,MAAA,IACP,IAAI,GAAG;AACX,yBAAK,oBAAqB;AACV,sBAAA;AAAA,QACZ,YAAY;AAAA,QACZ,SAAS,mBAAK,UAAS;AAAA,MAAA;AAE1B,yBAAK,SAAsB,YAAY,eAAe,CAAE,gBAAiB,CAAC;AAE3E,yBAAK,oBAAmB,GAAG,WAAW,CAAC,YAAY;AAC/C,2BAAK,yBAAL,WAA6B;AAAA,MAAO,CACvC,EAAE,MAAM;AAAA,IAAA,OACN;AACG,YAAA;AAAA,QACF,OAAO;AAAA;AAAA,QACP,OAAO;AAAA;AAAA,MAAA,IACP,IAAI,eAAe;AACvB,yBAAK,oBAAqB;AACV,sBAAA;AAAA,QACZ,YAAY;AAAA,QACZ,SAAS,mBAAK,UAAS;AAAA,MAAA;AAE1B,yBAAK,SAAmB,YAAY,eAAe,CAAE,gBAAiB,CAAC;AAEnE,yBAAA,oBAAmB,YAAY,CAAC,SAAuB;AACnD,2BAAA,yBAAA,WAAwB,KAAK;AAAA,MAAI;AAGrC,yBAAA,aAAA,WAAY,KAAK,mBAAK;AAAA,IAC/B;AAAA,EACJ;AAqUJ;AA5ZI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAwEA;AAAA,8BAAiB,SAAc;AACtB,qBAAA,UAAS,OAAO,MAAM,OAAO;AACtC;AAEA;AAAA,6BAAgB,SAAc;AACrB,qBAAA,UAAS,OAAO,KAAK,OAAO;AACrC;AAEA;AAAA,8BAAiB,SAAc;AACtB,qBAAA,UAAS,OAAO,MAAM,OAAO;AACtC;AAEA;AA+BA;AAwBA;AAQA;AAMA;AAKA;AAgBA;AAaA;AC7OG,IAAI;AAAA,CACV,SAAU+C,cAAa;AAMpB,EAAAA,aAAYA,aAAY,UAAU,IAAI,GAAG,IAAI;AAM7C,EAAAA,aAAYA,aAAY,qBAAqB,IAAI,GAAG,IAAI;AAMxD,EAAAA,aAAYA,aAAY,YAAY,IAAI,GAAG,IAAI;AAM/C,EAAAA,aAAYA,aAAY,aAAa,IAAI,GAAG,IAAI;AAUhD,EAAAA,aAAYA,aAAY,IAAI,IAAI,GAAG,IAAI;AAMvC,EAAAA,aAAYA,aAAY,SAAS,IAAI,GAAG,IAAI;AAM5C,EAAAA,aAAYA,aAAY,UAAU,IAAI,GAAG,IAAI;AAM7C,EAAAA,aAAYA,aAAY,+BAA+B,IAAI,GAAG,IAAI;AAMlE,EAAAA,aAAYA,aAAY,YAAY,IAAI,GAAG,IAAI;AAM/C,EAAAA,aAAYA,aAAY,eAAe,IAAI,GAAG,IAAI;AAMlD,EAAAA,aAAYA,aAAY,iBAAiB,IAAI,GAAG,IAAI;AAMpD,EAAAA,aAAYA,aAAY,cAAc,IAAI,GAAG,IAAI;AAMjD,EAAAA,aAAYA,aAAY,kBAAkB,IAAI,GAAG,IAAI;AAMrD,EAAAA,aAAYA,aAAY,mBAAmB,IAAI,GAAG,IAAI;AAMtD,EAAAA,aAAYA,aAAY,mBAAmB,IAAI,GAAG,IAAI;AAMtD,EAAAA,aAAYA,aAAY,WAAW,IAAI,GAAG,IAAI;AAM9C,EAAAA,aAAYA,aAAY,cAAc,IAAI,GAAG,IAAI;AAOjD,EAAAA,aAAYA,aAAY,WAAW,IAAI,GAAG,IAAI;AAM9C,EAAAA,aAAYA,aAAY,oBAAoB,IAAI,GAAG,IAAI;AAMvD,EAAAA,aAAYA,aAAY,oBAAoB,IAAI,GAAG,IAAI;AAMvD,EAAAA,aAAYA,aAAY,aAAa,IAAI,GAAG,IAAI;AAMhD,EAAAA,aAAYA,aAAY,cAAc,IAAI,GAAG,IAAI;AAMjD,EAAAA,aAAYA,aAAY,kBAAkB,IAAI,GAAG,IAAI;AAMrD,EAAAA,aAAYA,aAAY,WAAW,IAAI,GAAG,IAAI;AAM9C,EAAAA,aAAYA,aAAY,WAAW,IAAI,GAAG,IAAI;AAM9C,EAAAA,aAAYA,aAAY,oBAAoB,IAAI,GAAG,IAAI;AAMvD,EAAAA,aAAYA,aAAY,gBAAgB,IAAI,GAAG,IAAI;AAMnD,EAAAA,aAAYA,aAAY,+BAA+B,IAAI,GAAG,IAAI;AAMlE,EAAAA,aAAYA,aAAY,iBAAiB,IAAI,GAAG,IAAI;AAMpD,EAAAA,aAAYA,aAAY,UAAU,IAAI,GAAG,IAAI;AAM7C,EAAAA,aAAYA,aAAY,MAAM,IAAI,GAAG,IAAI;AAMzC,EAAAA,aAAYA,aAAY,iBAAiB,IAAI,GAAG,IAAI;AAMpD,EAAAA,aAAYA,aAAY,qBAAqB,IAAI,GAAG,IAAI;AAMxD,EAAAA,aAAYA,aAAY,kBAAkB,IAAI,GAAG,IAAI;AAMrD,EAAAA,aAAYA,aAAY,sBAAsB,IAAI,GAAG,IAAI;AAMzD,EAAAA,aAAYA,aAAY,wBAAwB,IAAI,GAAG,IAAI;AAM3D,EAAAA,aAAYA,aAAY,iCAAiC,IAAI,GAAG,IAAI;AAMpE,EAAAA,aAAYA,aAAY,oBAAoB,IAAI,GAAG,IAAI;AAMvD,EAAAA,aAAYA,aAAY,aAAa,IAAI,GAAG,IAAI;AAMhD,EAAAA,aAAYA,aAAY,gCAAgC,IAAI,GAAG,IAAI;AAOnE,EAAAA,aAAYA,aAAY,gBAAgB,IAAI,GAAG,IAAI;AAMnD,EAAAA,aAAYA,aAAY,qBAAqB,IAAI,GAAG,IAAI;AAMxD,EAAAA,aAAYA,aAAY,sBAAsB,IAAI,GAAG,IAAI;AAMzD,EAAAA,aAAYA,aAAY,QAAQ,IAAI,GAAG,IAAI;AAM3C,EAAAA,aAAYA,aAAY,mBAAmB,IAAI,GAAG,IAAI;AAMtD,EAAAA,aAAYA,aAAY,kBAAkB,IAAI,GAAG,IAAI;AAMrD,EAAAA,aAAYA,aAAY,uBAAuB,IAAI,GAAG,IAAI;AAM1D,EAAAA,aAAYA,aAAY,mBAAmB,IAAI,GAAG,IAAI;AAMtD,EAAAA,aAAYA,aAAY,iCAAiC,IAAI,GAAG,IAAI;AAMpE,EAAAA,aAAYA,aAAY,+BAA+B,IAAI,GAAG,IAAI;AAMlE,EAAAA,aAAYA,aAAY,uBAAuB,IAAI,GAAG,IAAI;AAM1D,EAAAA,aAAYA,aAAY,iBAAiB,IAAI,GAAG,IAAI;AAMpD,EAAAA,aAAYA,aAAY,aAAa,IAAI,GAAG,IAAI;AAMhD,EAAAA,aAAYA,aAAY,qBAAqB,IAAI,GAAG,IAAI;AAMxD,EAAAA,aAAYA,aAAY,iBAAiB,IAAI,GAAG,IAAI;AAMpD,EAAAA,aAAYA,aAAY,4BAA4B,IAAI,GAAG,IAAI;AAM/D,EAAAA,aAAYA,aAAY,sBAAsB,IAAI,GAAG,IAAI;AAMzD,EAAAA,aAAYA,aAAY,iCAAiC,IAAI,GAAG,IAAI;AACxE,GAAG,gBAAgB,cAAc,CAAA,EAAG;ACzU7B,MAAM,gBAAgB;AAAA,EAYzB,YAAY,YAAyB,SAAkC,QAAoB;AA6C3F;AAAA,uBAAAC;AAKA;AAAA,uBAAAC;AAKA;AAAA,uBAAAC;AAjEA;AAAA;AACA,uBAAAC,UAAU,IAAI;AACd,uBAAAC,WAAW,IAAI;AACf,uBAAAC,uBAAuB;AAEvB;AAAA;AACA,uBAAAC,WAAA;AACA,oCAAkC;AAClC;AA0FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAAC,2BAA2B,CAAC,aAA4B;AACpD,YAAM,UAAkC;AAAA,QACpC,WAAW;AAAA;AAAA,QACX,SAAS,uBAAuB;AAAA,MAAA;AAE/B,yBAAA,iBAAA,WAAgB,SAAS;AAAA,IAAQ;AAI1C;AAAA,uBAAAC,oBAAoB,CAAC,UAAe;AAChC,YAAM,UAAkC;AAAA,QACpC,WAAW;AAAA;AAAA,QACX,SAAS,uBAAuB;AAAA,MAAA;AAE/B,yBAAA,iBAAA,WAAgB,SAAS;AAAA,IAAK;AAGvC,oCAAc,CAAC,kBAA0B;AACrC,YAAM,UAAkC;AAAA,QACpC,WAAW;AAAA;AAAA,QACX,SAAS,uBAAuB;AAAA,MAAA;AAE/B,yBAAA,iBAAA,WAAgB,SAAS;AAAA,IAAa;AAG/C,wCAAkB,MAAqB;AACnC,YAAM,cAAmC,mBAAK,qBAAoB,IAAI,mBAAKH,sBAAoB;AAC/F,UAAI,aAAa;AACb,cAAM,SAAyB,YAAY;AAC3C,eAAO,OAAO;AAAA,MAAA,OACX;AACI,eAAA;AAAA,MACX;AAAA,IAAA;AAIJ;AAAA,oCAAc,MAAW;AACrB,UAAI,QAAQ;AACR,cAAM,cAAmC,mBAAK,qBAAoB,IAAI,mBAAKA,sBAAoB;AAC/F,YAAI,aAAa;AACb,iBAAO,YAAY;AAAA,QAAA,OAChB;AACI,iBAAA;AAAA,QACX;AAAA,MAAA,OACG;AACI,eAAA;AAAA,MACX;AAAA,IAAA;AAGJ,0CAAoB,CAAC,gBAAuB,cAA6C;AACrF,YAAM,UAAkC;AAAA,QACpC,WAAW;AAAA;AAAA,QACX,SAAS,uBAAuB;AAAA,MAAA;AAEpC,yBAAK,iBAAL,WAAqB,SAAS;AAAA,QAC1B;AAAA,QACA;AAAA,MAAA;AAAA,IACH;AAGL,yCAAgB,MAAM;AACb,yBAAA,kBAAiB,YAAY,OAAO,SAAuB;AAC5D,cAAM,uBAA+C,KAAK;AAC1D,8BAAKL,mBAAAS,qBAAL,WAAsB,6CAA6C,qBAAqB,OAAO;AAC/F,gBAAQ,qBAAqB,SAAS;AAAA,UACtC,KAAK,uBAAuB;AACxB,+BAAK,iBAAL,WAAqB,sBAAsB,MAAM,mBAAK,iBAAL;AACjD;AAAA,UACJ,KAAK,uBAAuB;AACxB,+BAAK,iBAAL,WAAqB,sBAAsB,MAAM,mBAAK,YAAL;AACjD;AAAA,UACJ,KAAK,uBAAuB;AACxB,+BAAK,iBAAL,WAAqB,sBAAsB,MAAM,mBAAK,iBAAL,WAAqB,qBAAqB;AAC3F;AAAA,UACJ,KAAK,uBAAuB;AACxB,+BAAK,iBAAL,WAAqB,sBAAsB,MAAM,mBAAK,SAAL;AACjD;AAAA,UAEJ,KAAK,uBAAuB;AACxB,+BAAK,iBAAL,WAAqB,sBAAsB,MAAM,mBAAK,iBAAL;AACjD;AAAA,UACJ,KAAK,uBAAuB;AACxB,+BAAK,iBAAL,WAAqB,sBAAsB,MAAM,mBAAK,eAAL;AACjD;AAAA,UACJ,KAAK,uBAAuB;AACxB,+BAAK,iBAAL,WAAqB,sBAAsB,MAAM,mBAAK,aAAL;AACjD;AAAA,UACJ;AACI,kBAAM,IAAI,MAAM,aAAa,qBAAqB,OAAO,eAAe;AAAA,QAC5E;AAAA,MAAA;AAAA,IACJ;AAIJ;AAAA,wCAAkB,OAAO,sBAA8C,aAAkB;AACrF,YAAM,kBAAkD;AAAA,QACpD,WAAW,qBAAqB;AAAA,QAChC,SAAS,qBAAqB;AAAA,QAC9B,SAAS;AAAA,MAAA;AAGR,yBAAA,kBAAiB,YAAY,eAAe;AAAA,IAAA;AAGrD,wCAAkB,YAA8B;AAG5C,UAAI,sBAA6C;AACjD,YAAM,cAAmC,mBAAK,qBAAoB,IAAI,mBAAKJ,sBAAoB;AAC/F,UAAI,aAAa;AACb,8BAAsB,YAAY;AAClC,8BAAKJ,kBAAAS,oBAAL,WAAqB;AAMrB,2BAAK,aAAL,WAAiB;AAAA,MAAuC,OACrD;AACH,cAAM,MAAM,GAAG,mBAAKJ,WAAS,cAAc,IAAI,mBAAKA,WAAS,UAAU,GAAG,mBAAKA,WAAS,aAAa;AACrG,8BAAKL,kBAAAS,oBAAL,WAAqB;AACrB,8BAAKT,kBAAAS,oBAAL,WAAqB;AAOrB,2BAAK,aAAL,WAAiB;AACjB,2BAAK,aAAL,WAAiB;AACb,YAAA;AACA,gBAAM,UAA8B;AAAA,YAChC,QAAQ;AAAA,YACR;AAAA,YACA,MAAM;AAAA,cACF,CAAC,oBAAoB,SAAS,GAAG,mBAAKJ,WAAS;AAAA,cAC/C,CAAC,oBAAoB,KAAK,GAAG,mBAAKA,WAAS;AAAA,cAC3C,CAAC,oBAAoB,YAAY,GAAG,mBAAKA,WAAS;AAAA,cAClD,CAAC,oBAAoB,QAAQ,GAAG,mBAAKA,WAAS;AAAA,YAClD;AAAA,YACA,iBAAiB;AAAA;AAAA,YACjB,SAAS,mBAAKA,WAAS;AAAA,UAAA;AAEtB,gCAAAN,mBAAAS,qBAAA,WAAiBzD,QAAM,QAAQ,4CAA4C,KAAK,UAAU,OAAO,CAAC,GAAG;AAC1G,cAAI,QAAQ;AACR,oBAAQ,aAAY,mBAAK;AAAA,UAC7B;AACM,gBAAA,SAAS,MAAM,MAAM,OAAO;AAClC,cAAI,OAAO,KAAK,WAAW,YAAY,IAAI;AACvC,kCAAsB,OAAO,KAAK;AAClC,gBAAI,qBAAqB;AACrB,oBAAM,iBAA+B;AAAA,gBACjC,eAAe;AAAA,cAAA;AAGnB,kBAAI,QAAQ;AACO,+BAAA,eAAe,OAAO,QAAQ,YAAY;AAAA,cAC7D;AAEA,iCAAK,qBAAoB,IAAI,mBAAKqD,wBAAsB,cAAc;AACtE,oCAAKJ,kBAAAS,oBAAL,WAAqB;AAAA,YAA2C,OAC7D;AAEH,oCAAKR,mBAAAS,qBAAL,WAAsB;AACtB,oCAAKT,mBAAAS,qBAAL,WAAsB,KAAK,UAAU,OAAO,IAAI;AAAA,YACpD;AAAA,UAAA,OACG;AAEH,kCAAKT,mBAAAS,qBAAL,WAAsB;AACtB,kCAAKT,mBAAAS,qBAAL,WAAsB,KAAK,UAAU,OAAO,IAAI;AAAA,UACpD;AAAA,iBACK,OAAO;AAEZ,gCAAKT,mBAAAS,qBAAL,WAAsB;AACtB,gCAAKT,mBAAAS,qBAAL,WAAsB;AACtB,gCAAKT,mBAAAS,qBAAL,WAAsB,KAAK,UAAU,KAAK;AAAA,QAC9C;AAAA,MACJ;AAGA,UAAI,wBAAwB,MAAM;AACzB,2BAAAJ,2BAAA,WAAyB,oBAAoB;AAClD,8BAAKN,kBAAAS,oBAAL,WAAqB;AACd,eAAA,MAAM,mBAAK,eAAL;AAAA,MAAmB,OAC7B;AACH,2BAAKH,2BAAL,WAA8B;AACvB,eAAA;AAAA,MACX;AAAA,IAAA;AAGJ,mCAAa,YAAiC;AAC1C,4BAAKN,kBAAAS,oBAAL,WAAqB;AAkDf,YAAA,YAAY,mBAAKJ,WAAS;AAC1B,YAAA,QAAQ,mBAAKH,UAAQ,mBAAmB;AACxC,YAAA,gBAAgB,CAAE,6BAA6B,IAAK;AACpD,YAAA,eAAe,mBAAKG,WAAS;AACnC,YAAM,gBAAgB,6BAA6B;AAC7C,YAAA,QAAQ,mBAAKA,WAAS;AACtB,YAAA,QAAQ,mBAAKH,UAAQ,mBAAmB;AACxC,YAAA,gBAAgB,mBAAKA,UAAQ,mBAAmB;AACtD,YAAM,iBAAiB,MAAM,mBAAKA,UAAQ,cAAc,aAAa;AACrE,YAAM,wBAAwB;AAG9B,YAAM,mBAAsC;AAAA,QACxC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAGE,YAAA,6BAA6B,EAAE,GAAG;AAElC,YAAA,MAAM,GAAG,mBAAKG,WAAS,iBAAiB,IAAI,mBAAKA,WAAS,aAAa,GAAG,mBAAKA,WAAS,gBAAgB,GAAG,mBAAKA,WAAS,YAAY,IAAI,mBAAKF,WAAS,kBAAkB,gBAAgB,CAAC;AAEhM,4BAAKH,kBAAAS,oBAAL,WAAqB;AAGrB,uBAAiB,gBAAgB;AAEjC,4BAAKT,kBAAAS,oBAAL,WAAqB,gCAAgC,KAAK,UAAU,gBAAgB,CAAC;AAE9E,aAAA;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACJ;AAOJ;AAAA,wCAAkB,OAAO,YAAmC;AACxD,YAAM,YAA0D,QAAQ;AACxE,YAAM,mBAAsC,QAAQ;AAEpD,4BAAKV,mBAAAS,qBAAL,WAAsBzD,QAAM,QAAQ,iCAAiC;AAEhE,4BAAAgD,mBAAAS,qBAAA,WAAiBzD,QAAM,QAAQ,gDAAgD,KAAK,UAAU,SAAS,CAAC,GAAG;AAE3G,UAAA,UAAyB,oBAAoB,IAAI,GAAG;AACrD,cAAM,WAA+B;AAErC,8BAAKiD,kBAAAS,oBAAL,WAAqB,6CAA6C,KAAK,UAAU,gBAAgB,CAAC;AAElG,cAAM,gBAAgB,SAAS;AAC/B,cAAM,wBAAwB,iBAAiB;AAE/C,YAAI,sBAAsB,cAAc,aAAa,MAAM,GAAG;AAC1D,gCAAKT,kBAAAS,oBAAL,WAAqB1D,QAAM,MAAM,+FAA+F;AAEhI,iBAAO,MAAM,mBAAK,WAAL,WAAe,kBAAkB;AAAA,QAAQ,OACnD;AACH,gCAAKkD,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,qGAAqG;AACrI,gCAAKkD,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,2BAA2B,qBAAqB,GAAG;AACnF,gCAAKkD,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,mBAAmB,aAAa,GAAG;AACnE,6BAAKwD,oBAAL,WAAuB,EAAC,SAAS,mBAAmB;AAC7C,iBAAA;AAAA,QACX;AAAA,MACQ,WAAA,UAAyB,oBAAoB,KAAK,GAAG;AAK7D,8BAAKN,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,sBAAsB;AACtD,2BAAKwD,oBAAL,WAAuB,EAAC,SAAS,mBAAmB;AAC7C,eAAA;AAAA,MAAA,OACJ;AAIH,8BAAKN,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,sBAAsB;AACtD,2BAAKwD,oBAAL,WAAuB,EAAC,SAAS,mBAAmB;AAC7C,eAAA;AAAA,MACX;AAAA,IAAA;AAwBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4CAAsB,OAAO,oCAAiH;AAC1I,4BAAKR,mBAAAS,qBAAL,WAAsBzD,QAAM,QAAQ,qBAAqB;AAEpD,yBAAA,qBAAoB,OAAO,mBAAKqD,sBAAoB;AACzD,YAAM,MAAM,GAAG,mBAAKC,WAAS,cAAc,IAAI,mBAAKA,WAAS,UAAU,GAAG,mBAAKA,WAAS,aAAa;AAEjG,UAAA;AACA,cAAM,UAA8B;AAAA,UAChC,QAAQ;AAAA,UACR;AAAA,UACA,MAAM;AAAA,UACN,iBAAiB;AAAA;AAAA,UACjB,SAAS,mBAAKA,WAAS;AAAA,QAAA;AAEtB,8BAAAN,mBAAAS,qBAAA,WAAiBzD,QAAM,QAAQ,yCAAyC,KAAK,UAAU,OAAO,CAAC,GAAG;AACvG,YAAI,QAAQ;AACR,kBAAQ,aAAa,mBAAK;AAAA,QAC9B;AACA,8BAAKgD,mBAAAS,qBAAL,WAAsBzD,QAAM,QAAQ,qCAAqC;AACnE,cAAA,SAAS,MAAM,MAAM,OAAO;AAClC,8BAAKgD,mBAAAS,qBAAL,WAAsBzD,QAAM,QAAQ,gDAAgD,OAAO,MAAM,GAAG;AAEhG,YAAA,OAAO,WAAW,YAAY,IAAI;AAClC,gCAAKgD,mBAAAS,qBAAL,WAAsBzD,QAAM,QAAQ,qCAAqC;AACzE,gBAAM,gBAAgC,OAAO;AACxC,6BAAAuD,2BAAA,WAAyB,cAAc;AAC5C,gBAAM,iBAA+B;AAAA,YACjC;AAAA,UAAA;AAGJ,cAAI,QAAQ;AACO,2BAAA,eAAe,OAAO,QAAQ,YAAY;AAAA,UAC7D;AAEA,6BAAK,qBAAoB,IAAI,mBAAKF,wBAAsB,cAAc;AAC/D,iBAAA;AAAA,QACA,WAAA,OAAO,WAAW,YAAY,cAAc;AACnD,gCAAKL,mBAAAS,qBAAL,WAAsBzD,QAAM,QAAQ,qDAAqD,OAAO,MAAM,GAAG;AAEzG,6BAAKuD,2BAAL,WAA8B;AAMvB,iBAAA;AAAA,QAAA,OAEJ;AAEH,gCAAKP,mBAAAS,qBAAL,WAAsBzD,QAAM,QAAQ,uEAAuE,OAAO,MAAM,GAAG;AAC3H,6BAAKuD,2BAAL,WAA8B;AAC9B,gCAAKL,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,sDAAsD;AACjF,gCAAAkD,mBAAAS,qBAAA,WAAiB3D,QAAM,IAAI,KAAK,UAAU,OAAO,IAAI,CAAC;AAEpD,iBAAA;AAAA,QACX;AAAA,eACK,OAAO;AACZ,8BAAKkD,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,uEAAuE,KAAK,GAAG;AAC/G,2BAAKuD,2BAAL,WAA8B;AAEvB,eAAA;AAAA,MACX;AAAA,IAAA;AAIJ;AAAA,kCAAY,OAAO,kBAAqC,sBAA4D;AAChH,4BAAKN,kBAAAS,oBAAL,WAAqB;AACrB,4BAAKT,kBAAAS,oBAAL,WAAqB;AAEhB,yBAAA,qBAAoB,OAAO,mBAAKL,sBAAoB;AAGzD,YAAM,kCAAoE;AAAA,QACtE,WAAW,mBAAKC,WAAS;AAAA,QACzB,OAAO,mBAAKA,WAAS;AAAA,QACrB,MAAM,kBAAkB;AAAA,QACxB,cAAc,mBAAKA,WAAS;AAAA,QAC5B,YAAY,gBAAgB;AAAA,QAC5B,eAAe,iBAAiB;AAAA,MAAA;AAG7B,aAAA,MAAM,mBAAK,qBAAL,WAAyB;AAAA,IAA+B;AA6BzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAAgB,YAA8B;AAE1C,4BAAKN,mBAAAS,qBAAL,WAAsBzD,QAAM,KAAK,qCAAqC;AACtE,YAAM,cAAmC,mBAAK,qBAAoB,IAAI,mBAAKqD,sBAAoB;AAC/F,UAAI,aAAa;AACR,8BAAAL,mBAAAS,qBAAA,WAAiBzD,QAAM,KAAK,+CAA+C,KAAK,UAAU,WAAW,CAAC,GAAG;AAC9G,cAAM,qBAAqB,YAAY;AACvC,cAAM,wBAAgD;AAAA,UAClD,WAAW,mBAAKsD,WAAS;AAAA,UACzB,OAAO,mBAAKA,WAAS;AAAA,UACrB,eAAe,mBAAmB;AAAA,UAClC,YAAY,gBAAgB;AAAA,QAAA;AAEzB,eAAA,MAAM,mBAAK,qBAAL,WAAyB;AAAA,MAAqB,OACxD;AACH,8BAAKJ,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,+EAA+E;AAGxG,eAAA;AAAA,MACX;AAAA,IAAA;AAQJ;AAAA;AAAA;AAAA;AAAA;AAAA,gCAAU,YAA8B;AACpC,4BAAKiD,kBAAAS,oBAAL,WAAqB;AACrB,YAAM,MAAM,GAAG,mBAAKJ,WAAS,cAAc,IAAI,mBAAKA,WAAS,UAAU,GAAG,mBAAKA,WAAS,aAAa;AACrG,4BAAKL,kBAAAS,oBAAL,WAAqB;AAErB,YAAM,cAAmC,mBAAK,qBAAoB,IAAI,mBAAKL,sBAAoB;AAC/F,UAAI,aAAa;AACb,cAAM,qBAAqC,YAAY;AACvD,cAAM,gBAAgB,mBAAmB;AACzC,8BAAKJ,kBAAAS,oBAAL,WAAqB;AAEf,cAAA,sBAAkC,UAAsB,aAAa;AAC3E,8BAAKT,kBAAAS,oBAAL,WAAqB;AACrB,cAAM,YAAY,oBAAoB;AACtC,8BAAKT,kBAAAS,oBAAL,WAAqB;AAEhB,2BAAA,qBAAoB,OAAO,mBAAKL,sBAAoB;AACzD,2BAAKE,2BAAL,WAA8B;AAE1B,YAAA;AACA,gBAAM,UAA8B;AAAA,YAChC,QAAQ;AAAA,YACR;AAAA,YACA,MAAM;AAAA,cACF;AAAA,YACJ;AAAA,YACA,iBAAiB;AAAA;AAAA,YACjB,SAAS,mBAAKD,WAAS;AAAA,UAAA;AAE3B,gCAAKN,mBAAAS,qBAAL,WAAsBzD,QAAM,QAAQ,6BAA6B,OAAO,GAAG;AAC3E,cAAI,QAAQ;AACR,oBAAQ,aAAa,mBAAK;AAAA,UAC9B;AACM,gBAAA,SAAS,MAAM,MAAM,OAAO;AAClC,cAAI,OAAO,KAAK,WAAW,YAAY,IAAI;AAChC,mBAAA;AAAA,UAAA,OACJ;AACH,kCAAKkD,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,sCAAsC;AACjE,kCAAAkD,mBAAAS,qBAAA,WAAiB3D,QAAM,IAAI,KAAK,UAAU,OAAO,IAAI,CAAC;AACpD,mBAAA;AAAA,UACX;AAAA,iBACK,OAAO;AACZ,gCAAKkD,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,sCAAsC;AACtE,gCAAKkD,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,KAAK;AACrC,gCAAKkD,mBAAAS,qBAAL,WAAsB3D,QAAM,IAAI,KAAK,UAAU,KAAK,CAAC;AAC9C,iBAAA;AAAA,QACX;AAAA,MAAA,OACG;AACH,8BAAKiD,kBAAAS,oBAAL,WAAqB;AACd,eAAA;AAAA,MACX;AAAA,IAAA;AAnnBA,uBAAKJ,WAAW;AAChB,uBAAK,SAAW;AAEhB,0BAAKN,mBAAAS,qBAAL,WAAsB,0CAA0C,KAAK,UAAU,mBAAKH,UAAQ,CAAC;AAGxF,uBAAA,qBAAsB,IAAI,qBAAmC,EAAC,mBAAmB,kBAAkB,gBAAgB,WAAW,OAAM,EAAE,WAAW;AAOtJ,uBAAK,kBAAmB;AAExB,0BAAKN,mBAAAS,qBAAL,WAAsB,kDAAkD,KAAK,UAAU,mBAAK,iBAAgB,CAAC;AAEzG,QAAA,UAAU,mBAAKH,WAAS,cAAc;AACjC,yBAAA,aAAc,IAAI,MAAM,MAAM;AAAA,QAC/B,WAAW,mBAAKA,WAAS,aAAa;AAAA,QACtC,YAAY,mBAAKA,WAAS,aAAa;AAAA,QACvC,iBAAiB,mBAAKA,WAAS,aAAa;AAAA,QAC5C,gBAAgB,mBAAKA,WAAS,aAAa;AAAA,QAC3C,SAAS,mBAAKA,WAAS;AAAA,QACvB,oBAAoB,mBAAKA,WAAS,aAAa;AAAA;AAAA,MAAA,CAClD;AAAA,IACL;AAEA,SAAK,cAAc;AAEd,uBAAA,mBAAA,WAAkB,MAAM,QAAQ;AAAA,MACjC,YAAY;AAAA,IAAA;AAAA,EAUpB;AA4kBJ;AAhoBI;AACAH,WAAA;AACAC,YAAA;AACAC,wBAAA;AAEA;AACAC,YAAA;AACA;AACA;AA+CAN,oBAAA;AAAAS,+BAAiB,SAAc;AACtB,qBAAA,SAAQ,MAAM,OAAO;AAC9B;AAGAR,mBAAA;AAAAS,8BAAgB,SAAc;AACrB,qBAAA,SAAQ,KAAK,OAAO;AAC7B;AAGAR,oBAAA;AAAAS,+BAAiB,SAAc;AACtB,qBAAA,SAAQ,MAAM,OAAO;AAC9B;AA+BAJ,4BAAA;AASAC,qBAAA;AAQA;AAQA;AAWA;AAaA;AA6CA;AAUA;AAsFA;AAiGA;AAkEA;AAiEA;AA6CA;AA2BA;AClmBS,MAAA,YAAY,YAAY,oBAAoB;AAAA,EACrD,OAAO,MAAM;AACF,WAAA;AAAA,MACH,OAAO;AAAA,IAAA;AAAA,EAEf;AAAA,EACA,SAAS;AAAA,IACL,cAAc;AACL,WAAA;AAAA,IACT;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACL,SAAS,CAAC,UAAU;AAChB,aAAO,MAAM,QAAQ;AAAA,IACzB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAMJ,CAAC;ACVY,MAAA,4BAA4B,MAAwB,OAAO,yBAAyB;AAE1F,MAAM,yBAAyB;AAAA,EAClC,SAAS,CAAC,KAAU,YAAsC;AACtD,UAAM,KAAK,IAAI,iBAAiB,KAAK,OAAO;AAG5C,QAAI,CAAC,IAAI,OAAO,iBAAiB,MAAM;AAC/B,UAAA,OAAO,iBAAiB,OAAO,CAAA;AAAA,IACvC;AACA,QAAI,OAAO,iBAAiB,KAAK,yBAAyB,IAAI;AAI1D,QAAA,QAAQ,2BAA2B,EAAE;AAAA,EAC7C;AACJ;","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,12,13,14,18,20,21,22,24]}